Large Maps vs Go GC

Design
Map entries
GC every
1. What the GC mark phase sees
[]byte blob, 1 GB
-
map[string]string
-
Mark cost follows the number of pointers, not bytes. Times are modeled from the post's benchmark (1M: 10.2 ms, 10M: 103.3 ms, 20M: 342.6 ms), with straight lines in between. The pointer count is modeled as 2 per entry plus bucket pointers.
2. One proxy node, request by request
Each dot stands for 250 requests (about 4,000 QPS per node). Time runs in slow motion so you can see the stalls. Simplified: the whole mark time is treated as a stall, like the post's runtime.GC() measurement.
3. Request latency over time (modeled)
Request Stalled by GC Shaded band = GC mark time
4. Where the routing rules live (10 Go nodes)
Memory is modeled at 90 bytes per entry (two short strings plus headers and bucket overhead).
Waiting for the first request...
Waiting for the first GC cycle...