User Space (Millions of Goroutines) Go Runtime (GMP Scheduler) OS Kernel (Hardware Threads) SPAWN (go) SPAWN (go) EXECUTE EXECUTE YIELD JS CONTEXT 1 Goroutine (2KB) JS CONTEXT 2 Goroutine (2KB) JS CONTEXT N Goroutine (2KB) GO SCHEDULER M:N Multiplexer OS THREAD 1 Heavy (~1-2MB) OS THREAD 2 Heavy (~1-2MB)