A Go publication by Nolan Keir

Go, beneath
the surface.

Deep dives into the Go runtime, concurrency, performance, and the trade-offs behind clean abstractions.

Latest

All articles
  1. The GOGC I set next to GOMEMLIMIT never fired

    GOGC=100 with a 256 MiB limit produced exactly what GOGC=off produced: same collections, same CPU share, same throughput. The tighter rule binds, the other goes quiet.

    Runtime internals
  2. A 404 from net/http costs 62 allocations

    A static route through net/http's mux costs 85.6 ns and nothing on the heap. A path that matches no pattern costs 2125.5 ns and 62 allocations.

    Ecosystem and tooling
  3. 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.

    Runtime internals

Series

All series

Topics

Every topic

Arrow keys to move, Enter to open.