Runtime internals
What the Go runtime actually does underneath the parts of the language you write every day — scheduling, allocation, and the garbage collector — measured rather than asserted.
4 parts
What the Go scheduler does when your goroutine blocks
A blocking syscall costs an OS thread. A blocking network read costs nothing. Measured with 200 goroutines, GOMAXPROCS=2 and a thread count.
sync.Pool survives one GC, not two
A pool holding 100 objects lost none across one collection and all 100 across two. Here is the victim cache, and what it costs at 122,000 ops per millisecond.
GOMAXPROCS is not your thread count
GOMAXPROCS=1 with 200 goroutines blocked in read(2) produced 202 OS threads. Measured on go1.27.0, alongside the container case Go 1.25 changed.
A 1 MiB goroutine stack costs 136µs and reports 144 B/op
Reaching a 1 MiB stack copied it nine times. The copying cost 136µs of CPU that -benchmem reports as 144 bytes, because stack memory is not heap memory.