Runtime — мини-ОС
После ночного разбора инцидента Сергей устроил команде «урок под капотом». Он показал, что в одном процессе с кодом «Полки» работают аллокатор, сборщик и планировщик. Это была пауза без инцидента.
программа на Go — это не только твой код: вместе с ним в бинарник вкомпилирован runtime — аллокатор, планировщик, сборщик мусора и сетевой poller, которые работают внутри процесса и невидимы для кода.
Что входит в runtime
Когда ты пишешь x:= 42 или go fetch, за кадром работает целая система. Runtime — набор служб, вкомпилированных в каждый Go-бинарник и запускающихся до твоего кода:
- Аллокатор — выдаёт память под объекты в куче.
- Сборщик мусора — находит и возвращает память, которая больше не нужна.
- Планировщик — превращает десятки тысяч горутин в исполнение на горстке OS-потоков.
- Network poller — связывает горутины с сетью без блокировки потоков.
- sysmon — фоновый поток, следящий за здоровьем системы: будит спящих и сигналом инициирует вытеснение зажравшихся горутин (снимает их с исполнения сам планировщик).
Всё это работает внутри процесса, в том же адресном пространстве, что и твой код. Вызовы вроде make, go, операций с каналами — это не магия, а входные точки runtime.
Почему это важно знать
Знание компонентов runtime — не академический интерес. Поведение программы под нагрузкой объясняется именно ими: почему миллион сетевых соединений не съедает миллион потоков (poller), почему внезапная пауза на 2 миллисекунды (GC), почему горутина «подвисла» (планировщик). Дальше по курсу эти компоненты разбираются по одному: планировщик —, poller —, syscall'ы —, escape analysis —, GC —.
Вы узнаете:
- почему Go-бинарники такие толстые
- что даёт
GOMAXPROCSи другие ручки runtime
Проверьте себя
Программа создала миллион слайсов в цикле, но память не растёт бесконечно. Какой компонент runtime это объясняет?
Что верно про runtime Go?
Периодические задержки в несколько миллисекунд у работающего сервиса — какой компонент объясняет?
правильных ответов
Runtime вкомпилирован и работает до и вокруг твоего кода: аллокатор, GC, планировщик, poller, sysmon. Дальше — каждый компонент отдельным уроком.
10 000 ₽ · 60 минут · онлайн