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

Статус
В этой теме нельзя размещать новые ответы.
SHAREWOOD
SHAREWOOD

SHAREWOOD

Редактор
Регистрация
25/11/2019
Сообщения
131.045
Репутация
71.716

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

Оптимизация 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. Часть 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

Стоимость 38800
Скрытая ссылка

Материал «Оптимизация Go, как в BigTech [Balun Courses] [Игорь Панасюк]», возможно, скоро появится на SHAREWOOD.
Воспользуйтесь поиском, может быть, он уже опубликован.
 
Статус
В этой теме нельзя размещать новые ответы.

Последние темы автора

SHAREWOOD
Ответы
0
Просмотры
10
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
19
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
19
SHAREWOOD
SHAREWOOD

Похожие темы

SHAREWOOD
Ответы
0
Просмотры
2K
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
2K
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
2K
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
2K
SHAREWOOD
SHAREWOOD
SHAREWOOD
Ответы
0
Просмотры
2K
SHAREWOOD
SHAREWOOD
Сверху Снизу