Unit 9 · Research methods · Lesson 7 of 12
Benchmark realism and external validity
Step 1: Learn the ideas
- Internal, construct and external validity
- Microbenchmarks versus application benchmarks
- Synthetic workloads: skew, burstiness, request mixes
- Trace-driven evaluation and trace limitations
- Open-loop versus closed-loop load generators
- Measurement bias and setup randomization
- Cloud pitfalls: homogeneity, elasticity, single-machine baselines
- ML and LLM benchmark contamination and saturation
- Stating the conditions of a claim
Why it matters
Reviewers and interviewers rarely doubt that your numbers were measured; they ask whether the numbers mean anything outside your setup. A cache that wins on uniform keys may lose on skewed ones, a scheduler tuned on a synthetic arrival process may fail on bursty production traffic, and a model that tops a public benchmark may have seen its test items during training.
Core ideas
Three validities. Internal validity: did your change cause the difference, or did something that changed with it? Construct validity: does the metric capture the property you claim (is saturation throughput the right metric for an interactive service)? External validity: does the result hold for other workloads, machines, scales and datasets? Each claim should say which settings it covers.
Workload choices. Synthetic workloads give control: you can sweep key skew (for example Zipf parameters), request sizes, read/write mix and burstiness, and isolate effects. The danger is choosing parameters that favour your design. Trace-driven evaluation adds realism (diurnal patterns, heavy tails, correlated arrivals), but traces are often old, sampled or anonymized, come from another environment, and change meaning when replayed against a system that responds differently from the original. Production experiments are the most realistic and least controllable. Strong evaluations combine them: traces to show relevance, synthetic sweeps to explain behaviour.
Open versus closed loops. A closed-loop generator sends the next request only after a response, so a slow system automatically receives less load and its tail latency is under-reported. An open-loop generator sends requests on a schedule regardless of responses, which matches many internet-facing services. Schroeder, Wierman and Harchol-Balter show that the two models can lead to different conclusions about the same scheduling policy; state which one you used and why.
Hidden confounders. Mytkowicz et al. showed that innocuous details, the size of the UNIX environment and the link order of object files, shift memory layout enough to change conclusions about compiler optimizations; they recommend randomizing the setup and using causal analysis. Similar confounders include frequency scaling and turbo, SMT, NUMA placement, warm page caches and buffer pools, background services, cloud instance hardware generations and noisy neighbours. A factor that can change the outcome and was neither varied nor fixed limits your claim.
Cloud-specific pitfalls. Schwarzkopf, Murray and Hand describe seven sins: unnecessary distributed parallelism (no single-machine baseline), assuming performance homogeneity, picking low-hanging fruit as a baseline, forcing an abstraction onto a poorly matched problem, unrepresentative workloads, assuming perfect elasticity and ignoring fault tolerance. Heiser's list of benchmarking crimes adds selective benchmarking, improper baselines, misleading summary statistics and missing platform details.
ML and LLM benchmarks. Test items can leak into training data; small prompt changes can reorder models; heavily used benchmarks saturate and reward overfitting to their quirks; automated judges have biases of their own. Agent benchmarks add another layer: tasks may not resemble real tool environments, and scores can depend on harness details.
Common misconceptions
- "A standard benchmark guarantees comparability." Only with the same version, configuration, subset and environment; unexplained subsetting is a classic crime.
- "Traces are ground truth." They are evidence from one environment and period, shaped by the system that produced them.
- "More load-generator clients fix tail measurement." A closed-loop design still under-reports tails; the loop model matters more than client count.
- "Stable results across runs mean an unbiased setup." Stable but biased is common; vary the setup itself to expose bias.
- "Topping a leaderboard shows general improvement." It shows improvement on that benchmark, which may be contaminated or saturated.
How to approach it
For every claim, write "this holds for workloads like ..., on hardware like ..., at scales up to ..." and check that the evaluation covers it. Audit one published evaluation against the seven sins and Heiser's list, then try the setup-perturbation exercise. Graduates should spot a closed-loop tail measurement or a missing single-machine baseline; senior candidates should design workloads that reveal where a system fails.
Suggested order
- 1Read Schwarzkopf, Murray and Hand, "The Seven Deadly Sins of Cloud Computing Research", and write one example of each sin from systems you know.
- 2Read Mytkowicz et al., focusing on the two sources of measurement bias and the setup-randomization remedy.
- 3Read Schroeder, Wierman and Harchol-Balter, "Open Versus Closed: A Cautionary Tale", on how the load model changes conclusions.
- 4Read Gernot Heiser's list of systems benchmarking crimes and turn it into a review checklist.
- 5Re-read Le Boudec Ch. 1 on the hidden factor paradox and Simpson's paradox as general forms of confounding.
- 6Do the "Audit a cloud or systems evaluation against the seven deadly sins" exercise, then the "Perturb an innocuous setup factor" exercise on a benchmark you can run.
Step 2: Check off what you can do
Tap each one you can genuinely do or explain. Each earns 10 XP.
Step 3: Go deeper
The Seven Deadly Sins of Cloud Computing ResearchStart here
USENIXAudit checklist of recurring evaluation shortcuts in cloud and data-processing research.
Open(opens in a new tab)Link responded, 5 Oct 2026Producing Wrong Data Without Doing Anything Obviously Wrong!Start here
USI Lugano, SAPE research group (co-author page with a free ACM download)Evidence that innocuous setup details bias performance conclusions, with setup randomization as the remedy.
Open(opens in a new tab)Link responded, 5 Oct 2026Open Versus Closed: A Cautionary Tale
USENIXHow open, closed and partly-open load generators change measured latency and policy comparisons.
Open(opens in a new tab)Link responded, 5 Oct 2026Systems Benchmarking Crimes
Gernot Heiser's websitePractitioner checklist of misleading benchmarking practices in systems papers.
Open(opens in a new tab)Link responded, 5 Oct 2026Performance Evaluation of Computer and Communication Systems
EPFL (free online edition by the author)Section: Ch. 1: Methodology
Hidden factors and Simpson's paradox as the general shape of confounding.
Open(opens in a new tab)Link responded, 5 Oct 2026
Step 4: Practice
When auditing, quote the figure or section that commits or avoids each sin and propose the experiment that would fix it. For the perturbation exercise, take a speedup you can reproduce locally and vary one setup factor (environment size, core pinning, warm versus cold cache) with the code held fixed; report whether the interval of the speedup still excludes zero. If your cloud coursework involved co-location or interference experiments, revisit which factors were controlled there.
- Audit a cloud or systems evaluation against the seven deadly sinsOpen(opens in a new tab)Not attemptedGuided reading (HotCloud 2012 checklist)
- Perturb an innocuous setup factor and test whether a speedup survivesOpen(opens in a new tab)Not attemptedSelf-directed (after Mytkowicz et al., ASPLOS 2009)
Record attempts on each problem’s page (+15 XP, +10 more when solved on your own).
Step 5: Test yourself
Answer each one out loud or on paper before you finish the lesson.
- Question 1Is your load generator open-loop or closed-loop, and does that match the deployment you claim?
- Question 2Which setup factors could change your result that you neither fixed nor randomized?
- Question 3Where would a single-machine baseline land in your comparison?
- Question 4How old is the trace you use, and which system produced it?
- Question 5Could your ML test set have appeared in pretraining data, and how would you check?
You’re done when you can
- Audit one published evaluation against all seven sins and at least five benchmarking crimes, citing figures or sections.
- Explain open-loop versus closed-loop load generation and its effect on tail latency in under two minutes.
- Show, on a benchmark you ran, whether a measured difference survives a change in one setup factor.
- State the external-validity conditions of one of your own results in a single sentence.
Finish the lesson
Unlocks next: Network measurement: emulation, simulation and deployment, Database workload evaluation, Trace-driven evaluation and revisiting your cloud coursework, Performance modeling, traces and bottleneck attribution


