Plot size
An attempt to quantify real-life MMX plot size patterns into charts, tables and formulas. Created by plotting lots of different k-sizes and C-levels. Both to find patterns, and make sure of them. Goal is an easy overview of plot size behavior, with solid numbers as a bonus.
- Compression resistant plot format
- Given a specific k-size/C-level, following is true:
- Plot size is random, within a small bell curved range
- Plot size will average out, given enough plots
- Varying size equals less or more proofs, not better compression
- Given specific k-size, following is true:
- Delta size between C-levels is identical, linear
- Delta size of distribution bell curve is identical for all C-levels
- Evaluate yourself what C-compression level is worth it
- A few thoughts about filling a disk further down
First chart is an overall overview using formulas created. Followed by two charts using real-life hdd-k29 plotting data to illustrate patterns. Those patterns repeat in other k-sizes. Decimal GiB numbers in overview chart have been rounded up. Less chance of underestimating combined size of plots.
List
hdd-k29 | hdd-k30 | hdd-k31 | hdd-k32 | |
|---|---|---|---|---|
C0 | 36.376 GiB | 75.196 GiB | 155.279 GiB | 320.321 GiB |
C15 | 34.893 GiB | 72.223 GiB | 149.315 GiB | 308.351 GiB |
% | -4.08 % | -3.95 % | -3.84 % | -3.74 % |
Full list
hdd-k29 | hdd-k30 | hdd-k31 | hdd-k32 | |
|---|---|---|---|---|
C0 | 36.376 GiB | 75.196 GiB | 155.279 GiB | 320.321 GiB |
C1 | 36.277 GiB | 74.998 GiB | 154.882 GiB | 319.523 GiB |
C2 | 36.178 GiB | 74.800 GiB | 154.484 GiB | 318.725 GiB |
C3 | 36.079 GiB | 74.602 GiB | 154.086 GiB | 317.927 GiB |
C4 | 35.980 GiB | 74.404 GiB | 153.689 GiB | 317.129 GiB |
C5 | 35.882 GiB | 74.205 GiB | 153.291 GiB | 316.331 GiB |
C6 | 35.783 GiB | 74.007 GiB | 152.894 GiB | 315.533 GiB |
C7 | 35.684 GiB | 73.809 GiB | 152.496 GiB | 314.735 GiB |
C8 | 35.585 GiB | 73.611 GiB | 152.098 GiB | 313.937 GiB |
C9 | 35.486 GiB | 73.412 GiB | 151.701 GiB | 313.139 GiB |
C10 | 35.387 GiB | 73.214 GiB | 151.303 GiB | 312.341 GiB |
C11 | 35.288 GiB | 73.016 GiB | 150.905 GiB | 311.543 GiB |
C12 | 35.189 GiB | 72.818 GiB | 150.508 GiB | 310.745 GiB |
C13 | 35.091 GiB | 72.620 GiB | 150.110 GiB | 309.947 GiB |
C14 | 34.992 GiB | 72.421 GiB | 149.713 GiB | 309.149 GiB |
C15 | 34.893 GiB | 72.223 GiB | 149.315 GiB | 308.351 GiB |
% | -4.08 % | -3.95 % | -3.84 % | -3.74 % |
Formula
- HDD-plot C0 (GiB):
4.98452*k*1.99844^(k-30.99297)+0.00513 - HDD-plot C15 (%):
-(1.0871^(34.1291-k)+2.5423)
Nearly all plots will be within a 99.5% GiB range, with average plot size in middle. Given enough plots there will be a few outliers, but not many. 99.5% is a representative value for a practical range. GiB numbers with one decimal place have been rounded up and down to best fit purpose. Less chance of underestimating average plot sizes and range values.
List
hdd-k29 | hdd-k30 | hdd-k31 | hdd-k32 | |
|---|---|---|---|---|
99.5% | ±0.485 GiB | ±0.729 GiB | ±1.082 GiB | ±1.586 GiB |
C0 (average) | 36.4 GiB | 75.2 GiB | 155.3 GiB | 320.4 GiB |
C0 (range) | 35.8 - 36.9 | 74.4 - 76.0 | 154.1 - 156.4 | 318.7 - 322.0 |
Full list
hdd-k29 | hdd-k30 | hdd-k31 | hdd-k32 | |
|---|---|---|---|---|
25% | ±0.052 GiB | ±0.078 GiB | ±0.116 GiB | ±0.170 GiB |
50% | ±0.113 GiB | ±0.169 GiB | ±0.251 GiB | ±0.369 GiB |
75% | ±0.195 GiB | ±0.293 GiB | ±0.435 GiB | ±0.638 GiB |
99.5% | ±0.485 GiB | ±0.729 GiB | ±1.082 GiB | ±1.586 GiB |
C0 | 35.8 - 36.9 | 74.4 - 76.0 | 154.1 - 156.4 | 318.7 - 322.0 |
C1 | 35.7 - 36.8 | 74.2 - 75.8 | 153.7 - 156.0 | 317.9 - 321.2 |
C2 | 35.6 - 36.7 | 74.0 - 75.6 | 153.4 - 155.6 | 317.1 - 320.4 |
C3 | 35.5 - 36.6 | 73.8 - 75.4 | 153.0 - 155.2 | 316.3 - 319.6 |
C4 | 35.4 - 36.5 | 73.6 - 75.2 | 152.6 - 154.8 | 315.5 - 318.8 |
C5 | 35.3 - 36.4 | 73.4 - 75.0 | 152.2 - 154.4 | 314.7 - 318.0 |
C6 | 35.2 - 36.3 | 73.2 - 74.8 | 151.8 - 154.0 | 313.9 - 317.2 |
C7 | 35.1 - 36.2 | 73.0 - 74.6 | 151.4 - 153.6 | 313.1 - 316.4 |
C8 | 35.1 - 36.1 | 72.8 - 74.4 | 151.0 - 153.2 | 312.3 - 315.6 |
C9 | 35.0 - 36.0 | 72.6 - 74.2 | 150.6 - 152.8 | 311.5 - 314.8 |
C10 | 34.9 - 35.9 | 72.4 - 74.0 | 150.2 - 152.4 | 310.7 - 314.0 |
C11 | 34.8 - 35.8 | 72.2 - 73.8 | 149.8 - 152.0 | 309.9 - 313.2 |
C12 | 34.7 - 35.7 | 72.0 - 73.6 | 149.4 - 151.6 | 309.1 - 312.4 |
C13 | 34.6 - 35.6 | 71.8 - 73.4 | 149.0 - 151.2 | 308.3 - 311.6 |
C14 | 34.5 - 35.5 | 71.6 - 73.2 | 148.6 - 150.8 | 307.5 - 310.8 |
C15 | 34.4 - 35.4 | 71.4 - 73.0 | 148.2 - 150.4 | 306.7 - 310.0 |
Formula
- HDD-plot k29 (±GiB):
0.153*sinh(0.00872*p)-0.0632*ln(100-p)+0.2911 - HDD-plot k-size (multiplier):
2.386E-18*k^12.05
No perfect way to get 0 bytes free when filling a disk with plots. Random element of plot size complicates some. But plot size has a predictable range, and averages out. As shown in charts and tables above.
Also remember. Smaller or larger plot size within same k-size/C-level is not better compression. Just less or more proofs.
Let’s say you are able to plot k31 in RAM, going for that k-size. You feel confident with a C-level up to C4 on farming load (individual choice).
Take an 18TB disk. Convert capacity to GiB, with 2 GiB filesystem overhead:
18TB capacity: (18E12 / 1024^3) - 2.0 = 16761.8 GiBhdd-k31 C4 (low): 16761.8 GiB / 152.6 = 109(.84) plots [free: 128.4 GiB]hdd-k31 C4 (avg): 16761.8 GiB / 153.7 = 109(.06) plots [free: 8.5 GiB]hdd-k31 C4 (high): 16761.8 GiB / 154.8 = 108(.28) plots [free: 43.4 GiB]What is not realistic here is getting a run of only lowest possible C4, or highest. More probable is a 109 plot run averaging out closer to average C4 size. Because of low sample size (number of plots), statistics will have it somewhat under or over.
What to do?
- Keep it simple. Find your wanted k-size/C-level. Plot and fill disks, not thinking about left over free space.
- Optionally go through disks afterwards, see if a few lower k-size/C-level plots could fill up left over free space.
Other strategies are possible. Filtering a ‘cache’ (if you have space) of plots weighted against certain sizes. Then have a strategy to fill up disks. That will cost time and complicate plotting process. Often the simplest is best.
Just go to Discord and ask for advice, links in feedback section below.
Basic data
If useful to anyone. Link to plot-size_csv.zip with raw CSV data used to create formulas. Would even more data be preferable? Always. But was enough to see patterns, and estimate good values for formulas.
Formula creation
Formulas above are not perfect, but close enough. Transforming real source code logic into perfect formulas would be too complex. Better with a good approximation that matches real-life behavior.
Strategy used:
- Map all real-life plot data into spreadsheets
- Transform numbers in different ways, find patterns
- Create points for each k-size on a graph
- Find basic curve formula that matches points on graph
- Brute force iterate numbers in formula
- Find numbers with least difference across all k-sizes
Questions, or wrong info above. Use #mmx-general or #mmx-farming channels on Discord.





