Kors
Администратор
- Регистрация
- 12 Дек 2014
- Сообщения
- 195.102
- Реакции
- 246.029
Складчина: Оптимизация Go, как в BigTech [Balun Courses]
Проблемы, которые решает курс:
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. Часть 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
Проблемы, которые решает курс:
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, которые спрашивают на собеседованиях
- умеете ускорять код через понимание, как он исполняется "под капотом"
Урок №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
Для просмотра скрытого содержимого вы должны зарегистрироваться
Возможно, Вас ещё заинтересует:
- Ланчбоксы: идеи блюд на 30 дней [Klaudia Tobiasz] + Ланчбоксы: 60 новых рецептов для ланчбокса [Joanna Anger, Anna Piszczek]
- Практик трансформационных гипнотических путешествий, часть 01 из 10 (2026) [Игорь Ледоховский]
- Практик трансформационных гипнотических путешествий, часть 02 из 10 (2026) [Игорь Ледоховский]
- Практик трансформационных гипнотических путешествий, часть 03 из 10 (2026) [Игорь Ледоховский]
- Практик трансформационных гипнотических путешествий, часть 04 из 10 (2026) [Игорь Ледоховский]
- Практик трансформационных гипнотических путешествий, часть 05 из 10 (2026) [Игорь Ледоховский]