Що нового?

Придбаний Оптимизация Go, как в BigTech [Balun Courses] [Игорь Панасюк]

Інформація про покупку
Тип покупки: Складчина
Ціна: 38800 ГРН
Учасників: 0 з 12
Організатор: Відсутній
Статус: Набір учасників
Внесок: 3362.7 ГРН
0%
Основний список
Резервний список

Gadzhi

Модератор
Оптимизация 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. И за счет всех этих знаний сможешь повысить уровень ЗП и свою ценность в компании, как специалиста.
Программа курса:
◆ Неделя 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 – Микроархитектура процессора

Внутреннее устройство компьютера
  • 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
Screenshot from 2024-07-02 12-07-30.png

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

 
Угорі