Sobes.tech
Senior
43

Pastāsti par Go plānotāju un GMP modeli, kā arī par work stealing mehānismu.

Uzņēmumi, kur jautāja
.wrk

Atbilde no AI

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, чтобы равномерно распределить работу и повысить эффективность использования потоков.

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