Sobes.tech
Senior

How does the Go scheduler (GMP) work?

sobes.tech AI

Answer from AI

The Go scheduler is based on the GMP model (G — goroutine, M — OS thread, P — processor).

  • G (goroutine) — a lightweight thread of execution created by the program.
  • M (machine) — a real operating system thread on which goroutines run.
  • P (processor) — a logical processor that connects M and G, managing execution.

Scheduler operation:

  1. Each P has a queue of goroutines ready to run.
  2. M is bound to a P and executes goroutines from its queue.
  3. If a goroutine blocks (e.g., on I/O), M is released and can take another goroutine from the queue of another P.
  4. The scheduler balances the load between P, distributing goroutines for efficient use of threads.

This allows Go to efficiently manage thousands of goroutines on a limited number of OS threads, ensuring high concurrency and scalability.