benchmarks
- I blamed OpenCode; a 2-bit model passed Zig in it
Four 27B models failed a Zig agent task in OpenCode, and the client looked guilty. Then a 2-bit MoE in the same setup passed 6 of 6.
- 128k context is the floor, and prefill is the wall
A 128k context fits easily in 128 GB of unified memory. Filling it took gpt-oss-120b 29 minutes, and one model's 64k prefill hit a GPU ring timeout.
- The download that contaminated the benchmark
A model download bent one row of a long-context benchmark. The queue built to stop that got deleted by systemd at boot, then met a real power cut.
- 120 GiB for the GPU, set in the kernel, not the BIOS
On a 128 GB Strix Halo box the BIOS's 96 G GPU setting leaves Linux 31 GiB. The minimum plus two TTM parameters gives the GPU 120 GiB.
- The Falsifier That Never Fired
Spring should wedge at 256MB like Micronaut, or the r2dbc-pool theory is wrong. Ten hours later Spring wedged harder. Quarkus never noticed.
- Eighteen Requests for One Redirect
One 302 from a stub upstream, four HTTP client stacks, four bills: 18, 6, 3 and 1 requests. Two sensible defaults, multiplied.
- The Baseline Was the Bug
The JVM platform-thread baseline was measuring virtual threads, and native's famous 8x was dispatch plus double the heap. Matched, the gap is memory.
- Native Image Grew to 734 MB
Five things the benchmark taught me that the documentation didn't mention.
- 2492, 2495, 2508
Three frameworks, byte-identical DAOs, and the benchmark that collapsed to a rounding error.
- Eight Connections, Zero Available
Two reactive frameworks hit the same 60 rps wall. The pool said all 8 connections were busy. Postgres said they were idle.