Sobes.tech
Назад к вопросам
Senior
9

Расскажи про планировщик Go и GMP-модель, а также механизм work stealing.

Компании, где спрашивали
.wrk

Ответ от нейросети

sobes.tech AI

Планировщик Go основан на модели GMP, где:

  • G (goroutine) — легковесная нить исполнения.
  • M (machine) — системный поток ОС (thread).
  • P (processor) — логический процессор, который связывает G и M для выполнения.

В Go рантайме есть фиксированное число P, определяющее максимальное количество одновременно выполняемых горутин на уровне ОС-потоков.

Механизм работы:

  • Горутину (G) нужно выполнить — она назначается на P.
  • P связывается с M (потоком ОС), и M выполняет G.
  • Когда G блокируется (например, на системном вызове), M освобождается и может выполнять другую G.

Work stealing — это механизм балансировки нагрузки между P. Если у одного P очередь горутин пуста, он может «украсть» горутины из очереди другого P, чтобы равномерно распределить работу и повысить эффективность использования потоков.

Такой подход позволяет эффективно масштабировать многопоточные программы, минимизируя накладные расходы на переключение контекста и блокировки.