Sobes.tech
Middle+

Tell me about the Go scheduler device (GMP model).

sobes.tech AI

Answer from AI

The Go scheduler is based on the GMP model, where:

  • G (goroutine) — a lightweight thread of execution.
  • M (machine) — a system thread of the operating system.
  • P (processor) — a logical processor that connects G and M.

Each M can execute only one G at a time, but executing G requires P. The number of P is limited by the GOMAXPROCS parameter, which sets the maximum number of goroutines that can run simultaneously at the OS level.

The scheduler distributes goroutines across available P and M, switching them as needed. If a goroutine blocks (for example, on I/O), M is released and can take another G to avoid idling.

This allows efficient use of system resources, providing high concurrency and scalability for Go applications.