Доступно

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

Тема в разделе "Курсы по программированию", создана пользователем Топикстартер, 2 июл 2024.

Цена: 38800р.-97%
Взнос: 1000р.
100%

Основной список: 53 участников

Резервный список: 47 участников

Статус обсуждения:
Комментирование ограничено.
  1. 2 июл 2024
    #1
    Топикстартер
    Топикстартер ЧКЧлен клуба

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

    b1.png

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

    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 руб.
    Скрытая ссылка
     
    Последнее редактирование модератором: 4 июл 2024
    2 пользователям это понравилось.
  2. Последние события

    1. skladchik.com
      Andriii хранитель.
      5 июл 2025
    2. skladchik.com
      Складчина доступна.
      25 июн 2025
    3. xaskell
      xaskell участвует.
      23 июн 2025
    4. crackc0der
      crackc0der участвует.
      23 июн 2025

    Последние важные события

    1. skladchik.com
      Andriii хранитель.
      5 июл 2025
    2. skladchik.com
      Складчина доступна.
      25 июн 2025
    3. skladchik.com
      Взнос составляет 500р.
      1 июн 2025
    4. skladchik.com
      Складчина активна.
      1 июн 2025
  3. Обсуждение
  4. 7 июл 2024
    #2
    Paul Fart
    Paul Fart ЧКЧлен клуба
    Первый поток курса начнется 21 августа
    Орг, найдись, сгошать курс нужно
    Что никто из подписавшихся не хочет для себя пройти?
     
  5. 18 фев 2025
    #3
    Andriii
    Andriii ЧКЧлен клуба
    Скоро раздача, записываемся
     
  6. 3 мар 2025
    #4
    LifeStyle288
    LifeStyle288 ДолжникДолжник
    Подготовка к собеседованиям по С++ [stepik] [Владимир Балун]
     
  7. 16 июн 2025
    #5
    Статский советник
    Статский советник ОргОрганизатор
    Собрано 84% на текущий момент.
    upload_2025-6-16_8-27-28.png
    В складчине активирована возможность доплаты, кто готов ускорить сбор и выдачу - можете внести любую сумму от 10 руб. Над списком участников, прямо на этой странице, есть кнопка "Доплатить".
     
    1 человеку нравится это.
  8. 20 июн 2025
    #6
    Korwys
    Korwys ЧКЧлен клуба
    Приветствую!
    А что мы ждем на данный момент? Пока оставшиеся довнесут?) А если этого не произойдет?
     
  9. 24 июн 2025
    #7
    isakneuman
    isakneuman СкладчикСкладчик
    да чуть чуть осталось
     
  10. 24 июн 2025
    #8
    124Borman
    124Borman СкладчикСкладчик
    Почему? Вроде норм
     
  11. 24 июн 2025
    #9
    Andriii
    Andriii ЧКЧлен клуба
    Все, набор закончился
     
Статус обсуждения:
Комментирование ограничено.