Skip to content

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
  • Own section below with data for SSD-plots

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.

Overview

Distribution (hdd-k29, C0)

Distribution (hdd-k29, C0-C15)

List
hdd-k29hdd-k30hdd-k31hdd-k32
C036.376 GiB75.196 GiB155.279 GiB320.321 GiB
C1534.893 GiB72.223 GiB149.315 GiB308.351 GiB
%-4.08 %-3.95 %-3.84 %-3.74 %
Full list
hdd-k29hdd-k30hdd-k31hdd-k32
C036.376 GiB75.196 GiB155.279 GiB320.321 GiB
C136.277 GiB74.998 GiB154.882 GiB319.523 GiB
C236.178 GiB74.800 GiB154.484 GiB318.725 GiB
C336.079 GiB74.602 GiB154.086 GiB317.927 GiB
C435.980 GiB74.404 GiB153.689 GiB317.129 GiB
C535.882 GiB74.205 GiB153.291 GiB316.331 GiB
C635.783 GiB74.007 GiB152.894 GiB315.533 GiB
C735.684 GiB73.809 GiB152.496 GiB314.735 GiB
C835.585 GiB73.611 GiB152.098 GiB313.937 GiB
C935.486 GiB73.412 GiB151.701 GiB313.139 GiB
C1035.387 GiB73.214 GiB151.303 GiB312.341 GiB
C1135.288 GiB73.016 GiB150.905 GiB311.543 GiB
C1235.189 GiB72.818 GiB150.508 GiB310.745 GiB
C1335.091 GiB72.620 GiB150.110 GiB309.947 GiB
C1434.992 GiB72.421 GiB149.713 GiB309.149 GiB
C1534.893 GiB72.223 GiB149.315 GiB308.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-k29hdd-k30hdd-k31hdd-k32
99.5%±0.485 GiB±0.729 GiB±1.082 GiB±1.586 GiB
C0 (average)36.4 GiB75.2 GiB155.3 GiB320.4 GiB
C0 (range)35.8 - 36.974.4 - 76.0154.1 - 156.4318.7 - 322.0
Full list
hdd-k29hdd-k30hdd-k31hdd-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
C035.8 - 36.974.4 - 76.0154.1 - 156.4318.7 - 322.0
C135.7 - 36.874.2 - 75.8153.7 - 156.0317.9 - 321.2
C235.6 - 36.774.0 - 75.6153.4 - 155.6317.1 - 320.4
C335.5 - 36.673.8 - 75.4153.0 - 155.2316.3 - 319.6
C435.4 - 36.573.6 - 75.2152.6 - 154.8315.5 - 318.8
C535.3 - 36.473.4 - 75.0152.2 - 154.4314.7 - 318.0
C635.2 - 36.373.2 - 74.8151.8 - 154.0313.9 - 317.2
C735.1 - 36.273.0 - 74.6151.4 - 153.6313.1 - 316.4
C835.1 - 36.172.8 - 74.4151.0 - 153.2312.3 - 315.6
C935.0 - 36.072.6 - 74.2150.6 - 152.8311.5 - 314.8
C1034.9 - 35.972.4 - 74.0150.2 - 152.4310.7 - 314.0
C1134.8 - 35.872.2 - 73.8149.8 - 152.0309.9 - 313.2
C1234.7 - 35.772.0 - 73.6149.4 - 151.6309.1 - 312.4
C1334.6 - 35.671.8 - 73.4149.0 - 151.2308.3 - 311.6
C1434.5 - 35.571.6 - 73.2148.6 - 150.8307.5 - 310.8
C1534.4 - 35.471.4 - 73.0148.2 - 150.4306.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 GiB
hdd-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.

Quick intro about SSD-plots here. They are ready for use, though majority of netspace is HDD-plots.

Listing identical tables as HDD-plots above, but without charts. Patterns for SSD-plots are identical, just different numbers. Except, be careful with compression. Recommended to use C0 given the high IOPS for SSD-plots.

Average - List
ssd-k29ssd-k30ssd-k31ssd-k32
C014.633 GiB30.205 GiB62.285 GiB128.307 GiB
C1513.139 GiB27.218 GiB56.312 GiB116.365 GiB
%-10.21-9.89-9.59-9.31
Average - Full List
ssd-k29ssd-k30ssd-k31ssd-k32
C014.633 GiB30.205 GiB62.285 GiB128.307 GiB
C114.534 GiB30.006 GiB61.887 GiB127.511 GiB
C214.434 GiB29.807 GiB61.489 GiB126.715 GiB
C314.334 GiB29.608 GiB61.091 GiB125.919 GiB
C414.235 GiB29.409 GiB60.692 GiB125.122 GiB
C514.135 GiB29.210 GiB60.294 GiB124.326 GiB
C614.036 GiB29.010 GiB59.896 GiB123.530 GiB
C713.936 GiB28.811 GiB59.498 GiB122.734 GiB
C813.836 GiB28.612 GiB59.099 GiB121.938 GiB
C913.737 GiB28.413 GiB58.701 GiB121.142 GiB
C1013.637 GiB28.214 GiB58.303 GiB120.346 GiB
C1113.537 GiB28.015 GiB57.905 GiB119.549 GiB
C1213.438 GiB27.815 GiB57.507 GiB118.753 GiB
C1313.338 GiB27.616 GiB57.108 GiB117.957 GiB
C1413.239 GiB27.417 GiB56.710 GiB117.161 GiB
C1513.139 GiB27.218 GiB56.312 GiB116.365 GiB
%-10.21-9.89-9.59-9.31
Average - Formula
  • SSD-plot C0 (GiB): 1.97585*k*1.99570^(k-30.97589)+0.00479
  • SSD-plot C15 (%): -(1.0649^(55.3836-k)+4.9567)
Distribution - List
ssd-k29ssd-k30ssd-k31ssd-k32
99.5%±0.083 GiB±0.124 GiB±0.185 GiB±0.271 GiB
C0 (average)14.7 GiB30.3 GiB62.3 GiB128.4 GiB
C0 (range)14.5 - 14.830.0 - 30.462.1 - 62.5128.0 - 128.6
Distribution - Full List
ssd-k29ssd-k30ssd-k31ssd-k32
25%±0.009 GiB±0.014 GiB±0.021 GiB±0.031 GiB
50%±0.020 GiB±0.030 GiB±0.045 GiB±0.065 GiB
75%±0.034 GiB±0.051 GiB±0.076 GiB±0.111 GiB
99.5%±0.083 GiB±0.124 GiB±0.185 GiB±0.271 GiB
C014.5 - 14.830.0 - 30.462.1 - 62.5128.0 - 128.6
C114.4 - 14.729.8 - 30.261.7 - 62.1127.2 - 127.8
C214.3 - 14.629.6 - 30.061.3 - 61.7126.4 - 127.0
C314.2 - 14.529.4 - 29.860.9 - 61.3125.6 - 126.2
C414.1 - 14.429.2 - 29.660.5 - 60.9124.8 - 125.4
C514.0 - 14.329.0 - 29.460.1 - 60.5124.0 - 124.6
C613.9 - 14.228.8 - 29.259.7 - 60.1123.2 - 123.9
C713.8 - 14.128.6 - 29.059.3 - 59.7122.4 - 123.1
C813.7 - 14.028.4 - 28.858.9 - 59.3121.6 - 122.3
C913.6 - 13.928.2 - 28.658.5 - 58.9120.8 - 121.5
C1013.5 - 13.828.0 - 28.458.1 - 58.5120.0 - 120.7
C1113.4 - 13.727.8 - 28.257.7 - 58.1119.2 - 119.9
C1213.3 - 13.627.6 - 28.057.3 - 57.7118.4 - 119.1
C1313.2 - 13.527.4 - 27.856.9 - 57.3117.6 - 118.3
C1413.1 - 13.427.2 - 27.656.5 - 56.9116.8 - 117.5
C1513.0 - 13.327.0 - 27.456.1 - 56.5116.0 - 116.7
Distribution - Formula
  • SSD-plot k29 (±GiB): 0.088*sinh(0.00282*p)-0.0109*ln(100-p)+0.0502
  • SSD-plot k-size (multiplier): 2.386E-18*k^12.05
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

Without required plot file metadata, formula looks to be:

  • HDD-plot C0 (GiB): 5*k*2^(k-31) (ideal, not real-life)
  • SSD-plot C0 (GiB): 2*k*2^(k-31) (ideal, not real-life)

Questions, or wrong info above. Use #mmx-general or #mmx-farming channels on Discord.