Скачать 

[Balun.Courses] Оптимизация Go, как в BigTech

Цена: 495 РУБ
Организатор: Robot
Список участников складчины:
  • 1. zapirus
Robot
Robot
Складчик
  • #1

[Balun.Courses] Оптимизация Go, как в BigTech

Ссылка на картинку
Проблемы, которые решает курс:

1. Пишу бизнес-логику и приложения на Go, но не могу разобраться perf-снимот или прочитать код в сторонней библиотеке.
2. Паникую, если нужно оптимизировать код, потому что не знаю, что происходит за пределами синтаксиса.
3. На работе пишу простые фичи, но хочется заниматься чем-то нетривиальным и низкоуровневым.
4. Не могу разобраться в исходном коде Go, потому что не понимаю, как устроен язык/архитектура компьютера.
5. Хочу устроиться в BigTech, но на собеседованиях валюсь на вопросах по внутреннему устройству GO и Computer Science.

За 5 недель на практике научишься выжимать все соки из Golang:

1. Изучишь computer science для работы в BigTech и научишься понимать, как исполняется код от языкового синтаксиса до машинных инструкций.
2. Узнаешь, как устроена операционка и на практике разберешь calling convention и научишься вызывать syscall’ы.
3. С нуля научишься использовать ассемблер в Go для понимания языковых оптимизаций.
4. Научишься оптимизировать код на примерах bigtech-компаний и низкоуровневого программирования.
5. Глубоко разберешь подкапотную работу low-level пакетов: unsafe и runtime, reflect и debug.
6. Научишься использовать профайлер для оптимизаций CPU, памяти и блокировок.
7. И за счет всех этих знаний сможешь повысить уровень ЗП и свою ценность в компании, как специалиста.

Программа курса:

Основы Computer Science. Часть 1


#### Урок №1 – Микроархитектура процессора

**Внутреннее устройство компьютера**
- Industry Standard Architecture (ISA)
- Модели разделения памяти
- Организация чипсетов

**Внутреннее устройство процессора**
- Архитектура CPU
- Многотактовые процессоры
- Конвейер процессора
- Предсказывание переходов
- Устройство регистров
- Типы команд
- SMT и hyperthreading
- Таксономия Флинна
- Пример процессора на Verilog

#### Урок №2 – Оперативная, кеш память

**Внутреннее устройство кеша процессора**
- Кеш линии
- Политики кэширования
- Когерентность кеша
- Политики инвалидизации кеша
- Уровни кеша
- Способы размещения данных на уровнях кеша
- Чтение и запись в кеш

**Внутреннее устройство оперативной памяти**
- Memory endian
- Page tables
- Hierarchical page tables
- Страничная адресация
- Трансляция адресов
- Shared memory
- Direct memory access
---

**Результат:**
- за пару часов получил(-а) основы Computer Science, которые спрашивают на собеседованиях
- умеешь ускорять код через понимание, как он исполняется "под капотом"

Основы Computer Science. Часть 2


#### Урок №3 – Архитектура операционных систем

**Введение в операционные системы**
- Что такое операционная система и зачем она нужна?
- Архитектура операционных систем (monolitic, micro)
- ASMP, SMP
- User space
- Kernel space
- Примеры операционных систем xv6

**Прерывания и системные вызовы**
- fork(), vfork(), exec(), clone()
- Copy on write
- Синхронные, асинхронные прерывания
- User, kernel, interrupt stacks
- Golang syscalls examples
- Буферизация и дескрипторы

#### Урок №4 – Управления памяти в операционке

**Механизмы управления памятью**
- Memory ordering
- Barriers, out-of-order execution
- Memory reclaim
- Виртуальные и физические адреса
- Memory mapped files
- Swap file
- Translation lookaside buffer
- Линейное выравнивание памяти
- Фрагментация памяти, аллокаторы
- Пример buddy аллокатора в xv6

**Абстракции операционной системы**
- Процессы, потоки
- Process context
- Interrupt request
- Tasklets
- OOM Killer
- SLAB
- Pipe
---

**Результат:**
- за пару часов получаешь основы Computer Science, которые спрашивают на собеседованиях
- умеешь ускорять код через понимание, как он исполняется "под капотом"

**Домашнее задание:**
- написать программы, которые взаимодействуют с операционной системой через syscalls. Написать свои каналы в Go, используя syscall pipe.


Неделя 3. Ассемблер в GO и работа со стеком


#### Урок №5 – введение в ассемблер Go

**Введение в ассемблер Go**
- Типы инструкций
- Кроссплатформенность
- Flags register
- Сравнение инструкций
- Addressing modes
:)

#### Урок №6 – инструкции работы со стеком

**Стек программы**
- Инструкции работы со стеком
- Red zone
- Guard pages
- Stack overflow
- Локальные переменные
- Соглашения вызова функций
- Стековый фрейм
---

**Результат:**
- понимаешь, как твоя программа транслируется в ассемблерный код
- умеешь писать собственные программы на ассемблере

**Домашнее задание:**
- написать свою программу на ассемблере Go

Неделя 4. Дополнительные фишки оптимизации, кодинг бенчмарков


#### Урок №7 – устройство памяти в Go, бенчмарки

**Устройство памяти в Go**
- Аллокатор Go
- Go арены, спаны
- Go scavenger, madvise calls
- Сравнение с другими языками программирования
- Сборка мусора, балласт

**Бенчмарки в Go**
- Что такое бенчмарки и зачем они нужны
- Как писать бенчмарки в Go
- Бенчмарки конкурентных программ

#### Урок №8 – оптимизации в Go

**Устройство Go**
- Escape analysis
- Устройство типов в Go, виртуальные вызовы

**Оптимизации в Go**
- Примеры базовых оптимизаций
- Работа с пакетом unsafe, работа с uintptr
- Bounds check elimination
- sync.Pool
- Copy and allocate optimizations
- Пакет reflect, законы рефлексии в Go
- Small-size объекты
---

**Результат:**
- понимаешь внутреннее устройство рантайма Go с точки зрения управления памятью
- умеешь работать с low-level пакетами и рефлексией Go
- на практике умеешь применять оптимизации в Go

**Домашнее задание:**
- используя рефлексию Go, написать свою собственную реализацию RPC
- С помощью unsafe пакета написать нетривиальные функции. Например, которые не делают лишние копии данных. Дополнительно написать бенчмарки

Неделя 5. Рантайм в Go и профилирование


#### Урок №9 – управление внутренним состоянием рантайма Go

**Управление внутренним состоянием рантайма Go**
- Пакет runtime, анализ внутреннего состояния приложения, профилирование
- Пакет debug, способы контролировать внутреннее состояние рантайма Go
- Проблемы фрагментации, сборки мусора, нехватки памяти в приложениях и их решения

**Использование продвинутых техник**
- Выбор аллокаторов
- CGO, примеры использования
- PGO

#### Урок №10 – профилирование в Go

**Профилирование в Go**
- Внутреннее устройство профилировщика Go
- Как работать с профилировщиком Go (CLI, Web)
- Типы профилировщиков
- Накладные расходы при профилировании
---

**Результат:**
- умеешь оптимизировать приложение, используя продвинутые пакеты Go, которые позволяют управлять внутренним состоянием рантайма
- умеешь профилировать приложение

**Домашнее задание:**
- написать свой микросервис, включив в него работу с CGO, сделать профилирование и применить PGO
 
Зарегистрируйтесь , чтобы посмотреть скрытый авторский контент.
Похожие складчины
  • в разделе: Программирование
  • в разделе: Программирование
  • в разделе: Программирование

Войдите или зарегистрируйтесь, чтобы комментировать и скачивать складчины!

Учетная запись позволит вам участвовать в складчинах и оставлять комментарии

Регистрация

Создайте аккаунт на форуме. Это не сложно!

Вход

Вы уже зарегистрированы? Войдите.

Сверху