Skip to content

Анатомия Go: Как работает планировщик горутин на самом деле

By Николай Тузов — Golang

1 ч 54 мин видео·ru··112540 views

Это пересказ, составленный ИИ, — видео канала Николай Тузов — Golang длительностью 1 ч 54 мин «Анатомия Go: Как работает планировщик горутин на самом деле», опубликовано 2 марта 2025 г.. Полная расшифровка сжата до 10 тезисов с переходом по таймкодам.

Пересказ

Этот ролик подробно разбирает внутреннее устройство планировщика Go, объясняя его эволюцию от базовых концепций конкурентности до сложных механизмов управления горутинами, тредами и системными вызовами для достижения эффективной и дешевой параллельной работы.

Тезисы

  • Понимание внутренних механизмов планировщика Go критически важно для оптимизации кода, особенно при работе с I/O-bound, CPU-bound задачами, файлами и сетью. 
  • Go-планировщик разработан для обеспечения дешевой и эффективной конкурентной работы, максимально задействуя ядра процессора и упрощая асинхронное выполнение задач. 
  • Планировщик Go реализует модель M:N, где множество горутин выполняются на ограниченном количестве системных тредов, что позволяет создавать тысячи горутин с минимальными накладными расходами. 
  • Go использует концепцию горутин — легковесных "пользовательских" тредов, управляемых планировщиком Go, в отличие от системных тредов, управляемых операционной системой. 
  • Механизм "Work Stealing" позволяет простаивающим процессорам забирать половину работы из локальных очередей других, более загруженных процессоров, обеспечивая балансировку нагрузки. 
  • Для эффективного распределения работы и минимизации блокировок, планировщик использует модель GMP (Goroutine, Machine, Processor) с локальными очередями (LRQ) для каждого процессора и глобальной очередью (GRQ). 
  • Для обработки блокирующих системных вызовов (например, работа с файлами), Go использует механизм "Hand-off", создавая новый системный тред для выполнения других горутин, пока заблокированный тред ожидает. 
  • Сетевые операции и другие неблокирующие системные вызовы обрабатываются через "Network Poller", который позволяет горутинам ожидать ответа, не блокируя системные треды и не создавая новые. 
  • System Monitor (SimoN) играет ключевую роль в планировщике, отслеживая время выполнения горутин, инициируя Hand-off для долгих syscall'ов и перемещая долго ожидающие горутины из Network Poller'а в GRQ. 
  • Планировщик Go является кооперативным, но с версии 1.14 включает элементы вытесняющей многозадачности, позволяя принудительно прерывать долго выполняющиеся горутины для предотвращения зависаний. 
Анатомия Go: Как работает планировщик горутин на самом деле

Анатомия Go: Как работает планировщик горутин на самом деле

Этот ролик подробно разбирает внутреннее устройство планировщика Go, объясняя его эволюцию от базовых концепций конкурентности до сложных механизмов управления горутинами, тредами и системными вызовами для достижения эффективной и дешевой параллельной работы.

Тезисы

Понимание внутренних механизмов планировщика Go критически важно для оптимизации кода, особенно при работе с I/O-bound, CPU-bound задачами, файлами и сетью.
Go-планировщик разработан для обеспечения дешевой и эффективной конкурентной работы, максимально задействуя ядра процессора и упрощая асинхронное выполнение задач.
Планировщик Go реализует модель M:N, где множество горутин выполняются на ограниченном количестве системных тредов, что позволяет создавать тысячи горутин с минимальными накладными расходами.
Go использует концепцию горутин — легковесных "пользовательских" тредов, управляемых планировщиком Go, в отличие от системных тредов, управляемых операционной системой.
Механизм "Work Stealing" позволяет простаивающим процессорам забирать половину работы из локальных очередей других, более загруженных процессоров, обеспечивая балансировку нагрузки.
Для эффективного распределения работы и минимизации блокировок, планировщик использует модель GMP (Goroutine, Machine, Processor) с локальными очередями (LRQ) для каждого процессора и глобальной очередью (GRQ).
Для обработки блокирующих системных вызовов (например, работа с файлами), Go использует механизм "Hand-off", создавая новый системный тред для выполнения других горутин, пока заблокированный тред ожидает.
Сетевые операции и другие неблокирующие системные вызовы обрабатываются через "Network Poller", который позволяет горутинам ожидать ответа, не блокируя системные треды и не создавая новые.
System Monitor (SimoN) играет ключевую роль в планировщике, отслеживая время выполнения горутин, инициируя Hand-off для долгих syscall'ов и перемещая долго ожидающие горутины из Network Poller'а в GRQ.
Планировщик Go является кооперативным, но с версии 1.14 включает элементы вытесняющей многозадачности, позволяя принудительно прерывать долго выполняющиеся горутины для предотвращения зависаний.
Пересказ любого видео — бесплатно
Summarizer.tube
Копировать всё
Ссылка
В закладки

Пересказ любого видео с YouTube — бесплатно

Вы только что прочитали пересказ этого видео. Вставьте ссылку на любое другое — получите тезисы с таймкодами за секунды. Без регистрации, 5 в день бесплатно.

Ещё материалы

Другие пересказы

15 мин

Fatherhood and Tradition in the First Space Marine Legion – Warhammer Conference 2024

Warhammer Conferenceru

Видео анализирует сложные отношения между Лионом Эль'Джонсоном и Лютером, а также причины предательства Лютера, используя философские концепции Ханны Арендт о традиции и действии, чтобы объяснить, как

1 ч 1 мин

ИИ начал действовать сам – 8 случаев, о которых молчат

Визионерыru

Видео анализирует тревожные тенденции в развитии искусственного интеллекта, подчеркивая, что человечество теряет контроль над мощными ИИ-системами, которые могут представлять угрозу для кибербезопасно

2 мин

Врач с полувековым опытом рассказал правду, которую многие понимают слишком поздно

Zarina | OfficialProru

Опытный врач, подписавший 4000 свидетельств о смерти, выделил пять основных "убийц" – повседневных привычек, которые незаметно разрушают здоровье и приводят к преждевременной кончине, призывая слушате

1 ч 27 мин

Наполеон

Tamara Eidelmanru

Лекция исследует многогранный образ Наполеона Бонапарта, анализируя "белую легенду", представляющую его как гениального полководца, законодателя и романтического героя, и "черную легенду", изображающу