Correct for coordinated omission in JMeter: correction factor, lost requests, adjusted response times, and required threads. Free client-side tool.
JMeter Coordinated Omission Calculator
Section titled โJMeter Coordinated Omission CalculatorโWhen the server canโt keep up with your target throughput, JMeterโs Thread Group silently drops requests instead of queuing them. This produces artificially low response times and inflated percentiles. Enter your target RPS, actual RPS, average response time, and test duration to compute the correction factor, lost requests, corrected response time, and the thread count you should have used.
Heuristic correction based on Gil Tene's queue-depth model. Validate with How NOT to Measure Latency. See Best Practices and Thread Calculator.
What is coordinated omission?
Section titled โWhat is coordinated omission?โCoordinated Omission is a measurement bias that occurs when a load generator schedules the next request at a fixed interval (e.g., every 20 ms for 50 RPS) but fails to account for the time already spent waiting on the previous request.
When the server degrades:
- Threads get โstuckโ waiting for slow responses.
- Fewer requests are sent than the target rate.
- The โmissingโ requests are silently dropped - never queued.
- Measured throughput drops, but response times look artificially low.
Example: You target 50 RPS with 100 threads. Server degrades to 5-second response time. Instead of 50 RPS, you get ~20 RPS (100 threads / 5s). Your throughput drops by 60%, and your average response time doesnโt reflect what real users would experience.
How the correction works
Section titled โHow the correction worksโThe calculator uses the queue-depth model from Gil Teneโs talk How NOT to Measure Latency:
correction_factor = target_RPS / actual_RPSlost_requests = (target_RPS - actual_RPS) ร duration_secondsqueue_depth = (target_RPS - actual_RPS) ร (avg_RT_ms / 1000)corrected_RT = avg_RT_ms + (queue_depth ร avg_RT_ms)needed_threads = target_RPS ร (avg_RT_ms / 1000)When target_RPS > actual_RPS, the correction factor tells you how much your
measured metrics are skewed. A factor of 2.5x means your real response time is
roughly 2.5ร what JMeter reported.
Example
Section titled โExampleโ| Target RPS | Actual RPS | Avg RT | Duration | Correction | Lost reqs | Corrected RT |
|---|---|---|---|---|---|---|
| 50 | 20 | 5,000ms | 60s | 2.5x | 1,800 | ~12,500ms |
| 100 | 80 | 3,000ms | 120s | 1.25x | 2,400 | ~3,750ms |
| 200 | 200 | 500ms | 60s | 1.0x | 0 | 500ms |
What this does not include
Section titled โWhat this does not includeโ- Percentile correction - the queue-depth model corrects averages; for percentile correction, use a proper histogram (HdrHistogram) in your test.
- Think time / pacing - real users pause between actions; this calculator assumes continuous load.
- Server-side queuing - if the server itself queues requests, the corrected RT is a lower bound on what users experience.
- Distributed test aggregation - run this per engine and combine results.
Recommended workflow
Section titled โRecommended workflowโ- Run your test and record target RPS, actual RPS, avg response time, and duration.
- Use this calculator to compute the correction factor and lost requests.
- If the factor is > 1.25, your results are significantly skewed.
- Re-run with more threads (use the Thread Calculator) or lower the target RPS.
- For accurate percentiles, instrument with HdrHistogram in your JMeter test.