Workload isolation: pools, warehouses, clusters
How much capacity does sharing save, and why can a warehouse per team still be right?
The choice is between space-sharing (separate clusters or warehouses per tenant: partition the machines) and time-sharing (pools on one cluster: share them over time). The arithmetic that favors sharing is statistical multiplexing.
Size N tenants separately and you buy the sum of the peaks: Σ peak(i). Share and you buy the peak of the sum: peak(Σ i). For independent, bursty demands, means add linearly while standard deviations add in quadrature (the square root of the sum of squares). So the headroom per tenant shrinks by roughly √N: sharing among 16 tenants cuts the buffer requirement about fourfold.
- tenants with independent, bursty demand
- mean and standard deviation of one tenant's demand
- standard deviations of headroom planned for
Data table
| Tenants n | series | Slots to provision |
|---|---|---|
| 1 | separate (sum of peaks) | 20 |
| 1.06 | separate (sum of peaks) | 21.2 |
| 1.12 | separate (sum of peaks) | 22.4 |
| 1.19 | separate (sum of peaks) | 23.8 |
| 1.26 | separate (sum of peaks) | 25.2 |
| 1.33 | separate (sum of peaks) | 26.7 |
| 1.41 | separate (sum of peaks) | 28.3 |
| 1.5 | separate (sum of peaks) | 29.9 |
| 1.58 | separate (sum of peaks) | 31.7 |
| 1.68 | separate (sum of peaks) | 33.6 |
| 1.78 | separate (sum of peaks) | 35.6 |
| 1.88 | separate (sum of peaks) | 37.7 |
| 2 | separate (sum of peaks) | 39.9 |
| 2.11 | separate (sum of peaks) | 42.3 |
| 2.24 | separate (sum of peaks) | 44.8 |
| 2.37 | separate (sum of peaks) | 47.4 |
| 2.51 | separate (sum of peaks) | 50.2 |
| 2.66 | separate (sum of peaks) | 53.2 |
| 2.82 | separate (sum of peaks) | 56.4 |
| 2.99 | separate (sum of peaks) | 59.7 |
| 3.16 | separate (sum of peaks) | 63.2 |
| 3.35 | separate (sum of peaks) | 67 |
| 3.55 | separate (sum of peaks) | 71 |
| 3.76 | separate (sum of peaks) | 75.2 |
| 3.98 | separate (sum of peaks) | 79.6 |
| 4.22 | separate (sum of peaks) | 84.3 |
| 4.47 | separate (sum of peaks) | 89.3 |
| 4.73 | separate (sum of peaks) | 94.6 |
| 5.01 | separate (sum of peaks) | 100 |
| 5.31 | separate (sum of peaks) | 106 |
| 5.62 | separate (sum of peaks) | 112 |
| 5.96 | separate (sum of peaks) | 119 |
| 6.31 | separate (sum of peaks) | 126 |
| 6.68 | separate (sum of peaks) | 134 |
| 7.08 | separate (sum of peaks) | 142 |
| 7.5 | separate (sum of peaks) | 150 |
| 7.94 | separate (sum of peaks) | 159 |
| 8.41 | separate (sum of peaks) | 168 |
| 8.91 | separate (sum of peaks) | 178 |
| 9.44 | separate (sum of peaks) | 189 |
| 10 | separate (sum of peaks) | 200 |
| 10.6 | separate (sum of peaks) | 212 |
| 11.2 | separate (sum of peaks) | 224 |
| 11.9 | separate (sum of peaks) | 238 |
| 12.6 | separate (sum of peaks) | 252 |
| 13.3 | separate (sum of peaks) | 267 |
| 14.1 | separate (sum of peaks) | 283 |
| 15 | separate (sum of peaks) | 299 |
| 15.8 | separate (sum of peaks) | 317 |
| 16.8 | separate (sum of peaks) | 336 |
| 17.8 | separate (sum of peaks) | 356 |
| 18.8 | separate (sum of peaks) | 377 |
| 20 | separate (sum of peaks) | 399 |
| 21.1 | separate (sum of peaks) | 423 |
| 22.4 | separate (sum of peaks) | 448 |
| 23.7 | separate (sum of peaks) | 474 |
| 25.1 | separate (sum of peaks) | 502 |
| 26.6 | separate (sum of peaks) | 532 |
| 28.2 | separate (sum of peaks) | 564 |
| 29.9 | separate (sum of peaks) | 597 |
| 31.6 | separate (sum of peaks) | 632 |
| 33.5 | separate (sum of peaks) | 670 |
| 35.5 | separate (sum of peaks) | 710 |
| 37.6 | separate (sum of peaks) | 752 |
| 39.8 | separate (sum of peaks) | 796 |
| 42.2 | separate (sum of peaks) | 843 |
| 44.7 | separate (sum of peaks) | 893 |
| 47.3 | separate (sum of peaks) | 946 |
| 50.1 | separate (sum of peaks) | 1K |
| 53.1 | separate (sum of peaks) | 1.06K |
| 56.2 | separate (sum of peaks) | 1.12K |
| 59.6 | separate (sum of peaks) | 1.19K |
| 63.1 | separate (sum of peaks) | 1.26K |
| 66.8 | separate (sum of peaks) | 1.34K |
| 70.8 | separate (sum of peaks) | 1.42K |
| 75 | separate (sum of peaks) | 1.5K |
| 79.4 | separate (sum of peaks) | 1.59K |
| 84.1 | separate (sum of peaks) | 1.68K |
| 89.1 | separate (sum of peaks) | 1.78K |
| 94.4 | separate (sum of peaks) | 1.89K |
| 100 | separate (sum of peaks) | 2K |
| 1 | shared (peak of the sum) | 20 |
| 1.06 | shared (peak of the sum) | 20.9 |
| 1.12 | shared (peak of the sum) | 21.8 |
| 1.19 | shared (peak of the sum) | 22.8 |
| 1.26 | shared (peak of the sum) | 23.8 |
| 1.33 | shared (peak of the sum) | 24.9 |
| 1.41 | shared (peak of the sum) | 26 |
| 1.5 | shared (peak of the sum) | 27.2 |
| 1.58 | shared (peak of the sum) | 28.4 |
| 1.68 | shared (peak of the sum) | 29.7 |
| 1.78 | shared (peak of the sum) | 31.1 |
| 1.88 | shared (peak of the sum) | 32.6 |
| 2 | shared (peak of the sum) | 34.1 |
| 2.11 | shared (peak of the sum) | 35.7 |
| 2.24 | shared (peak of the sum) | 37.3 |
| 2.37 | shared (peak of the sum) | 39.1 |
| 2.51 | shared (peak of the sum) | 41 |
| 2.66 | shared (peak of the sum) | 42.9 |
| 2.82 | shared (peak of the sum) | 45 |
| 2.99 | shared (peak of the sum) | 47.1 |
| 3.16 | shared (peak of the sum) | 49.4 |
| 3.35 | shared (peak of the sum) | 51.8 |
| 3.55 | shared (peak of the sum) | 54.3 |
| 3.76 | shared (peak of the sum) | 57 |
| 3.98 | shared (peak of the sum) | 59.8 |
| 4.22 | shared (peak of the sum) | 62.7 |
| 4.47 | shared (peak of the sum) | 65.8 |
| 4.73 | shared (peak of the sum) | 69.1 |
| 5.01 | shared (peak of the sum) | 72.5 |
| 5.31 | shared (peak of the sum) | 76.1 |
| 5.62 | shared (peak of the sum) | 79.9 |
| 5.96 | shared (peak of the sum) | 84 |
| 6.31 | shared (peak of the sum) | 88.2 |
| 6.68 | shared (peak of the sum) | 92.7 |
| 7.08 | shared (peak of the sum) | 97.4 |
| 7.5 | shared (peak of the sum) | 102 |
| 7.94 | shared (peak of the sum) | 108 |
| 8.41 | shared (peak of the sum) | 113 |
| 8.91 | shared (peak of the sum) | 119 |
| 9.44 | shared (peak of the sum) | 125 |
| 10 | shared (peak of the sum) | 132 |
| 10.6 | shared (peak of the sum) | 138 |
| 11.2 | shared (peak of the sum) | 146 |
| 11.9 | shared (peak of the sum) | 153 |
| 12.6 | shared (peak of the sum) | 161 |
| 13.3 | shared (peak of the sum) | 170 |
| 14.1 | shared (peak of the sum) | 179 |
| 15 | shared (peak of the sum) | 188 |
| 15.8 | shared (peak of the sum) | 198 |
| 16.8 | shared (peak of the sum) | 209 |
| 17.8 | shared (peak of the sum) | 220 |
| 18.8 | shared (peak of the sum) | 232 |
| 20 | shared (peak of the sum) | 244 |
| 21.1 | shared (peak of the sum) | 257 |
| 22.4 | shared (peak of the sum) | 271 |
| 23.7 | shared (peak of the sum) | 286 |
| 25.1 | shared (peak of the sum) | 301 |
| 26.6 | shared (peak of the sum) | 318 |
| 28.2 | shared (peak of the sum) | 335 |
| 29.9 | shared (peak of the sum) | 353 |
| 31.6 | shared (peak of the sum) | 372 |
| 33.5 | shared (peak of the sum) | 393 |
| 35.5 | shared (peak of the sum) | 414 |
| 37.6 | shared (peak of the sum) | 437 |
| 39.8 | shared (peak of the sum) | 461 |
| 42.2 | shared (peak of the sum) | 487 |
| 44.7 | shared (peak of the sum) | 514 |
| 47.3 | shared (peak of the sum) | 542 |
| 50.1 | shared (peak of the sum) | 572 |
| 53.1 | shared (peak of the sum) | 604 |
| 56.2 | shared (peak of the sum) | 637 |
| 59.6 | shared (peak of the sum) | 673 |
| 63.1 | shared (peak of the sum) | 710 |
| 66.8 | shared (peak of the sum) | 750 |
| 70.8 | shared (peak of the sum) | 792 |
| 75 | shared (peak of the sum) | 836 |
| 79.4 | shared (peak of the sum) | 883 |
| 84.1 | shared (peak of the sum) | 933 |
| 89.1 | shared (peak of the sum) | 986 |
| 94.4 | shared (peak of the sum) | 1.04K |
| 100 | shared (peak of the sum) | 1.1K |
The dividend depends on independence, and tenants are not independent
That dividend is entirely a dividend on independence, and tenant demand is not independent. Month-end close, 09:00 dashboards, the same upstream pipeline landing: correlation goes to 1 exactly at peak, which is when you needed the gain. This is "independence assumed and false," now quantified: the multiplexing discount is real on average and evaporates in the case you sized for.
If all 16 tenants peak together at 20, the shared pool needs 320 slots, not 200.
Why "a warehouse per team" can be a good design
This is why separate warehouses per team is a defensible design, not (as it is often framed) an admission of failure. You are paying the sum of peaks for the guarantee that no one else's spike is yours. The honest framing is a price quote, not a best practice: isolation costs the multiplexing gain you forgo, minus the portion of that gain that was fictitious because demands are correlated.
Sharing capacity is a bet on independence that pays out on ordinary days and defaults on the peak.