Generator

What one summary promises, and what the merge of 8 delivers

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
What one summary promises, and what the merge of 8 deliversFour quantiles of 20,000 log-normal, σ = 1.2 — a latency distribution values. The promise column is ε times the mass above the quantile, which is what a single high-biased summary at ε = 0.01 is entitled to. The merged column is the rank error a merge of 8 shard summaries actually made. Where the merged error exceeds the promise the row is marked: the merge did not break its OWN bound — which is looser, and compounds up the tree — it broke the one a reader would have been quoted.quantilepromisedone summarymerge of 8q = 0.5100.01418q = 0.920.0183q = 0.992.005overq = 0.9990.214overrank error, in items out of 20,000ε = 0.01 · high-biased · 8 shards, round2 of 4 quantiles over the single summary's promise

What one summary promises, and what the merge of 8 delivers

Four quantiles of 20,000 log-normal, σ = 1.2 — a latency distribution values. The promise column is ε times the mass above the quantile, which is what a single high-biased summary at ε = 0.01 is entitled to. The merged column is the rank error a merge of 8 shard summaries actually made. Where the merged error exceeds the promise the row is marked: the merge did not break its OWN bound — which is looser, and compounds up the tree — it broke the one a reader would have been quoted.

Drawn at 700 × 294, wide on the page. Everything above is what merge-quantiles returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

6 essays call merge-quantiles. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

quantilepromisedone summarymerge of 8q = 0.5100.01418q = 0.920.0183q = 0.992.005overq = 0.9990.214overrank error, in items out of 20,000ε = 0.01 · high-biased · 8 shards, round2 of 4 quantiles over the single summary's promise What is taught wrongly

The promise that does not survive the tree

1,000248163264high-biased, α = 0.56low-biased, α = 0.56none-biased, α = 0.74tuples keptshards mergedlog-normal, σ = 1.2 — a latency distribution · 20,000 valuesα 0.56 / 0.56 / 0.74 · worst residual 6.5% The other axis

The cheap tail and the expensive merge

ε = 0.0515 → 29 (1.93×)ε = 0.0238 → 73 (1.92×)ε = 0.0177 → 136 (1.77×)ε = 0.005152 → 270 (1.78×)ε = 0.002397 → 674 (1.70×)reportedoccupied at the peak20,000 arrivals · lognormalpeak = resident + period, to 14% The other axis

The tuples a summary does not report

1,00010,000248163264ε = 0.02, α = 0.58ε = 0.01, α = 0.56ε = 0.005, α = 0.54tuples keptshards mergedlog-normal, σ = 1.2 — a latency distribution · 20,000 valuesα 0.58 / 0.56 / 0.54 · worst residual 2.0% One pass, and no room

The tuples a merge does not give back

10010³10⁴10⁵10⁶⌊1/2ε⌋ = 50151025501002005001,000tuples, and tuples examinedcompression period, in updatestuples examinedpeak tuplesresident tuplesworst rank errorε = 0.01 · 20,000 arrivalspeak 10× · work 72× · answer 1.21× One pass, and no room

The period that is not a promise

folded in one at a time2,616 tuples17 ranks outcombined pairwise, in a tree3,637 tuples17 ranks outfolded in, last shard first2,615 tuples17 ranks outtuples kept, and worst rank error against a promise of 10032 shards · ε = 0.01 · high-biased · round1.39× the space, 0 ranks of answer Structures

The shape that moves the bill

The library, page 3 of 5 — where merge-quantiles sits