Buffer survival under overload
The number that matters is not the buffer's size in bytes but its capacity in seconds.
- Capacity
- how much the buffer holds (events)
- Arrival rate
- how much work comes in per second
- Service rate
- how much work the consumer can finish per second
- Backlog
- work waiting after t seconds of overload
How it behaves
One input on the horizontal axis, the others held fixed.
Data table
| Overload λ − μ (events per second) | series | Survival time |
|---|---|---|
| 10 | 600,000 events | 60,000 s |
| 11.2 | 600,000 events | 53,500 s |
| 12.6 | 600,000 events | 47,700 s |
| 14.1 | 600,000 events | 42,500 s |
| 15.8 | 600,000 events | 37,900 s |
| 17.8 | 600,000 events | 33,700 s |
| 20 | 600,000 events | 30,100 s |
| 22.4 | 600,000 events | 26,800 s |
| 25.1 | 600,000 events | 23,900 s |
| 28.2 | 600,000 events | 21,300 s |
| 31.6 | 600,000 events | 19,000 s |
| 35.5 | 600,000 events | 16,900 s |
| 39.8 | 600,000 events | 15,100 s |
| 44.7 | 600,000 events | 13,400 s |
| 50.1 | 600,000 events | 12,000 s |
| 56.2 | 600,000 events | 10,700 s |
| 63.1 | 600,000 events | 9,510 s |
| 70.8 | 600,000 events | 8,480 s |
| 79.4 | 600,000 events | 7,550 s |
| 89.1 | 600,000 events | 6,730 s |
| 100 | 600,000 events | 6,000 s |
| 112 | 600,000 events | 5,350 s |
| 126 | 600,000 events | 4,770 s |
| 141 | 600,000 events | 4,250 s |
| 158 | 600,000 events | 3,790 s |
| 178 | 600,000 events | 3,370 s |
| 200 | 600,000 events | 3,010 s |
| 224 | 600,000 events | 2,680 s |
| 251 | 600,000 events | 2,390 s |
| 282 | 600,000 events | 2,130 s |
| 316 | 600,000 events | 1,900 s |
| 355 | 600,000 events | 1,690 s |
| 398 | 600,000 events | 1,510 s |
| 447 | 600,000 events | 1,340 s |
| 501 | 600,000 events | 1,200 s |
| 562 | 600,000 events | 1,070 s |
| 631 | 600,000 events | 951 s |
| 708 | 600,000 events | 848 s |
| 794 | 600,000 events | 755 s |
| 891 | 600,000 events | 673 s |
| 1,000 | 600,000 events | 600 s |
| 1,120 | 600,000 events | 535 s |
| 1,260 | 600,000 events | 477 s |
| 1,410 | 600,000 events | 425 s |
| 1,580 | 600,000 events | 379 s |
| 1,780 | 600,000 events | 337 s |
| 2,000 | 600,000 events | 301 s |
| 2,240 | 600,000 events | 268 s |
| 2,510 | 600,000 events | 239 s |
| 2,820 | 600,000 events | 213 s |
| 3,160 | 600,000 events | 190 s |
| 3,550 | 600,000 events | 169 s |
| 3,980 | 600,000 events | 151 s |
| 4,470 | 600,000 events | 134 s |
| 5,010 | 600,000 events | 120 s |
| 5,620 | 600,000 events | 107 s |
| 6,310 | 600,000 events | 95.1 s |
| 7,080 | 600,000 events | 84.8 s |
| 7,940 | 600,000 events | 75.5 s |
| 8,910 | 600,000 events | 67.3 s |
| 10K | 600,000 events | 60 s |
| 11.2K | 600,000 events | 53.5 s |
| 12.6K | 600,000 events | 47.7 s |
| 14.1K | 600,000 events | 42.5 s |
| 15.8K | 600,000 events | 37.9 s |
| 17.8K | 600,000 events | 33.7 s |
| 20K | 600,000 events | 30.1 s |
| 22.4K | 600,000 events | 26.8 s |
| 25.1K | 600,000 events | 23.9 s |
| 28.2K | 600,000 events | 21.3 s |
| 31.6K | 600,000 events | 19 s |
| 35.5K | 600,000 events | 16.9 s |
| 39.8K | 600,000 events | 15.1 s |
| 44.7K | 600,000 events | 13.4 s |
| 50.1K | 600,000 events | 12 s |
| 56.2K | 600,000 events | 10.7 s |
| 63.1K | 600,000 events | 9.51 s |
| 70.8K | 600,000 events | 8.48 s |
| 79.4K | 600,000 events | 7.55 s |
| 89.1K | 600,000 events | 6.73 s |
| 100K | 600,000 events | 6 s |
| 10 | 6,000,000 events | 600,000 s |
| 11.2 | 6,000,000 events | 535,000 s |
| 12.6 | 6,000,000 events | 477,000 s |
| 14.1 | 6,000,000 events | 425,000 s |
| 15.8 | 6,000,000 events | 379,000 s |
| 17.8 | 6,000,000 events | 337,000 s |
| 20 | 6,000,000 events | 301,000 s |
| 22.4 | 6,000,000 events | 268,000 s |
| 25.1 | 6,000,000 events | 239,000 s |
| 28.2 | 6,000,000 events | 213,000 s |
| 31.6 | 6,000,000 events | 190,000 s |
| 35.5 | 6,000,000 events | 169,000 s |
| 39.8 | 6,000,000 events | 151,000 s |
| 44.7 | 6,000,000 events | 134,000 s |
| 50.1 | 6,000,000 events | 120,000 s |
| 56.2 | 6,000,000 events | 107,000 s |
| 63.1 | 6,000,000 events | 95,100 s |
| 70.8 | 6,000,000 events | 84,800 s |
| 79.4 | 6,000,000 events | 75,500 s |
| 89.1 | 6,000,000 events | 67,300 s |
| 100 | 6,000,000 events | 60,000 s |
| 112 | 6,000,000 events | 53,500 s |
| 126 | 6,000,000 events | 47,700 s |
| 141 | 6,000,000 events | 42,500 s |
| 158 | 6,000,000 events | 37,900 s |
| 178 | 6,000,000 events | 33,700 s |
| 200 | 6,000,000 events | 30,100 s |
| 224 | 6,000,000 events | 26,800 s |
| 251 | 6,000,000 events | 23,900 s |
| 282 | 6,000,000 events | 21,300 s |
| 316 | 6,000,000 events | 19,000 s |
| 355 | 6,000,000 events | 16,900 s |
| 398 | 6,000,000 events | 15,100 s |
| 447 | 6,000,000 events | 13,400 s |
| 501 | 6,000,000 events | 12,000 s |
| 562 | 6,000,000 events | 10,700 s |
| 631 | 6,000,000 events | 9,510 s |
| 708 | 6,000,000 events | 8,480 s |
| 794 | 6,000,000 events | 7,550 s |
| 891 | 6,000,000 events | 6,730 s |
| 1,000 | 6,000,000 events | 6,000 s |
| 1,120 | 6,000,000 events | 5,350 s |
| 1,260 | 6,000,000 events | 4,770 s |
| 1,410 | 6,000,000 events | 4,250 s |
| 1,580 | 6,000,000 events | 3,790 s |
| 1,780 | 6,000,000 events | 3,370 s |
| 2,000 | 6,000,000 events | 3,010 s |
| 2,240 | 6,000,000 events | 2,680 s |
| 2,510 | 6,000,000 events | 2,390 s |
| 2,820 | 6,000,000 events | 2,130 s |
| 3,160 | 6,000,000 events | 1,900 s |
| 3,550 | 6,000,000 events | 1,690 s |
| 3,980 | 6,000,000 events | 1,510 s |
| 4,470 | 6,000,000 events | 1,340 s |
| 5,010 | 6,000,000 events | 1,200 s |
| 5,620 | 6,000,000 events | 1,070 s |
| 6,310 | 6,000,000 events | 951 s |
| 7,080 | 6,000,000 events | 848 s |
| 7,940 | 6,000,000 events | 755 s |
| 8,910 | 6,000,000 events | 673 s |
| 10K | 6,000,000 events | 600 s |
| 11.2K | 6,000,000 events | 535 s |
| 12.6K | 6,000,000 events | 477 s |
| 14.1K | 6,000,000 events | 425 s |
| 15.8K | 6,000,000 events | 379 s |
| 17.8K | 6,000,000 events | 337 s |
| 20K | 6,000,000 events | 301 s |
| 22.4K | 6,000,000 events | 268 s |
| 25.1K | 6,000,000 events | 239 s |
| 28.2K | 6,000,000 events | 213 s |
| 31.6K | 6,000,000 events | 190 s |
| 35.5K | 6,000,000 events | 169 s |
| 39.8K | 6,000,000 events | 151 s |
| 44.7K | 6,000,000 events | 134 s |
| 50.1K | 6,000,000 events | 120 s |
| 56.2K | 6,000,000 events | 107 s |
| 63.1K | 6,000,000 events | 95.1 s |
| 70.8K | 6,000,000 events | 84.8 s |
| 79.4K | 6,000,000 events | 75.5 s |
| 89.1K | 6,000,000 events | 67.3 s |
| 100K | 6,000,000 events | 60 s |
Worked examples, recomputed
Every number the mechanisms quote for this relationship is recomputed from it, so none of them disagrees with it.
- 600,000 events at 2,000 − 800 per second → 500 s
- a buffer ten times bigger → 5,000 s
- (2,000 − 800) × 7,200 s = 8,640,000 events
- 800 − 400 per second for an hour → 1.44 million
- a stuck consumer: 100 per second for an hour → 360,000
- 2,000 per second, commit every 5 s → up to 10,000 re-read
- 2 GB/s consumed, 3 s to free space → 6 GB of reserve
- 300 GB free ÷ 120 GB/day → 2.5 days
- 6,000 offered against 5,000 for 10 min → a new request waits 120 s
- after an hour → 720 s
Where it appears
Each mechanism states it in its own names. The general symbol each name stands for is shown with it.
- Data Movement
How do records cross between two systems that have independent rates, independent availability and independent lifetimes, and what are you willing to lose when the assumption underneath the crossing breaks?
- Change Data Capture & Incremental Processing
What does it cost to know what changed, and is that cheaper than not needing to know?
free space = · log per day (reader stopped) =
- Measurement & Experimental Method
What would have to be true for this number to mean what I think it means?