Оптимизация Go, как в BigTech [Balun Courses] [Игорь Панасюк]
Проблемы, которые решает курс:
◆ Неделя 1. Основы Computer Science. Часть 1
Урок №1 — Микроархитектура процессора
Урок №2 — Оперативная, кеш память
◆ Неделя 2. Основы Computer Science. Часть 2
Урок №3 — Архитектура операционных систем
Урок №4 — Управления памятью в операционке
◆ Неделя 3. Ассемблер в GO и работа со стеком
Урок №5 — введение в ассемблер Go
Урок №6 — инструкции работы со стеком
◆ Неделя 4. Дополнительные фишки оптимизации, кодинг бенчмарков
Урок №7 — устройство памяти в Go, бенчмарки
Урок №8 — оптимизации в Go
◆ Неделя 5. Рантайм в Go и профилирование
Урок №9 — управление внутренним состоянием рантайма Go
Урок №10 — профилирование в Go
Стоимость: 38800 руб.
Проблемы, которые решает курс:
- Пишу бизнес-логику и приложения на Go, но не могу разобраться perf-снимот или прочитать код в сторонней библиотеке.
- Паникую, если нужно оптимизировать код, потому что не знаю, что происходит за пределами синтаксиса.
- На работе пишу простые фичи, но хочется заниматься чем-то нетривиальным и низкоуровневым.
- Не могу разобраться в исходном коде Go, потому что не понимаю, как устроен язык/архитектура компьютера.
- Хочу устроиться в BigTech, но на собеседованиях валюсь на вопросах по внутреннему устройству GO и Computer Science.
- Изучишь computer science для работы в BigTech и научишься понимать, как исполняется код от языкового синтаксиса до машинных инструкций.
- Узнаешь, как устроена операционка и на практике разберешь calling convention и научишься вызывать syscall’ы.
- С нуля научишься использовать ассемблер в Go для понимания языковых оптимизаций.
- Научишься оптимизировать код на примерах bigtech-компаний и низкоуровневого программирования.
- Глубоко разберешь подкапотную работу low-level пакетов: unsafe и runtime, reflect и debug.
- Научишься использовать профайлер для оптимизаций CPU, памяти и блокировок.
- И за счет всех этих знаний сможешь повысить уровень ЗП и свою ценность в компании, как специалиста.
◆ Неделя 1. Основы Computer Science. Часть 1
Урок №1 — Микроархитектура процессора
Урок №2 — Оперативная, кеш память
◆ Неделя 2. Основы Computer Science. Часть 2
Урок №3 — Архитектура операционных систем
Урок №4 — Управления памятью в операционке
◆ Неделя 3. Ассемблер в GO и работа со стеком
Урок №5 — введение в ассемблер Go
Урок №6 — инструкции работы со стеком
◆ Неделя 4. Дополнительные фишки оптимизации, кодинг бенчмарков
Урок №7 — устройство памяти в Go, бенчмарки
Урок №8 — оптимизации в Go
◆ Неделя 5. Рантайм в Go и профилирование
Урок №9 — управление внутренним состоянием рантайма Go
Урок №10 — профилирование в Go
### Основы Computer Science. Часть 1
#### Урок №1 – Микроархитектура процессора
Внутреннее устройство компьютера
Внутреннее устройство кеша процессора
Результат:
### Основы Computer Science. Часть 2
#### Урок №3 – Архитектура операционных систем
Введение в операционные системы
Механизмы управления памятью
Результат:
- написать программы, которые взаимодействуют с операционной системой через syscalls. Написать свои каналы в Go, используя syscall pipe.
---
### Неделя 3
### Ассемблер в GO и работа со стеком
#### Урок №5 – введение в ассемблер Go
Введение в ассемблер Go
Стек программы
Результат:
- написать свою программу на ассемблере Go
---
### Неделя 4
### Дополнительные фишки оптимизации, кодинг бенчмарков
#### Урок №7 – устройство памяти в Go, бенчмарки
Устройство памяти в Go
Устройство Go
Результат:
### Неделя 5
### Рантайм в Go и профилирование
#### Урок №9 – управление внутренним состоянием рантайма Go
Управление внутренним состоянием рантайма Go
Профилирование в Go
Результат:
- написать свой микросервис, включив в него работу с CGO, сделать профилирование и применить PGO
#### Урок №1 – Микроархитектура процессора
Внутреннее устройство компьютера
- Industry Standard Architecture (ISA)
- Модели разделения памяти
- Организация чипсетов
- Архитектура CPU
- Многотактовые процессоры
- Конвейер процессора
- Предсказывание переходов
- Устройство регистров
- Типы команд
- SMT и hyperthreading
- Таксономия Флинна
- Пример процессора на Verilog
Внутреннее устройство кеша процессора
- Кеш линии
- Политики кэширования
- Когерентность кеша
- Политики инвалидизации кеша
- Уровни кеша
- Способы размещения данных на уровнях кеша
- Чтение и запись в кеш
- 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
- Буферизация и дескрипторы
Механизмы управления памятью
- 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
Стек программы
- Инструкции работы со стеком
- Red zone
- Guard pages
- Stack overflow
- Локальные переменные
- Соглашения вызова функций
- Стековый фрейм
Результат:
- понимаешь, как твоя программа транслируется в ассемблерный код
- умеешь писать собственные программы на ассемблере
- написать свою программу на ассемблере Go
---
### Неделя 4
### Дополнительные фишки оптимизации, кодинг бенчмарков
#### Урок №7 – устройство памяти в Go, бенчмарки
Устройство памяти в Go
- Аллокатор Go
- Go арены, спаны
- Go scavenger, madvise calls
- Сравнение с другими языками программирования
- Сборка мусора, балласт
- Что такое бенчмарки и зачем они нужны
- Как писать бенчмарки в Go
- Бенчмарки конкурентных программ
Устройство Go
- Escape analysis
- Устройство типов в 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
Профилирование в Go
- Внутреннее устройство профилировщика Go
- Как работать с профилировщиком Go (CLI, Web)
- Типы профилировщиков
- Накладные расходы при профилировании
Результат:
- умеешь оптимизировать приложение, используя продвинутые пакеты Go, которые позволяют управлять внутренним состоянием рантайма
- умеешь профилировать приложение
- написать свой микросервис, включив в него работу с CGO, сделать профилирование и применить PGO

Стоимость: 38800 руб.
https://balun.courses/courses/optimization_go