HFT-52 · Week 25 · Load testing

Coordinated omission

A load generator that waits for each response before sending the next request stops measuring exactly when the system is slow. Stall the server and compare what each method records.

One service, one stall, two ways to measure it
Requests around the stall: open loop sends on schedule (blue); closed loop waits for each reply (orange)
Recorded latency over the 10-second run (log scale) Open loop (from scheduled send)Closed loop (from actual send)
PercentileClosed loopOpen loopClosed under-reports by

The server handles one request at a time in about 100 µs. At t = 4 s it stops responding for the stall length (a GC pause, a page fault storm, a lock convoy). Closed loop times each request from when it was actually sent, so it sends nothing during the stall and records one slow sample. Open loop times each request from when it should have been sent, so every request that real clients would have sent during the stall shows up as slow. HdrHistogram's record_corrected back-fills those missing samples from a closed-loop run.