Skip to download

hesela.dev

Storage glossary · datasets · llms.txt · hesela.com

Deterministic accounting / no device measurements

LRC repair costs: explicit denominators

Five deterministic whole-fragment examples distinguish data repair, all-fragment averages and parity-inclusive accounting. Not cluster measurements.

Download CSV5 configurations / 14 columns

JSON and provenance / Model code / Research explanation

Read accounting

For each independent single-fragment loss, intact helpers supply whole equal-size fragments. Data and local parity cost k/localGroups reads in the modeled LRC topology; global parity costs k. RS costs k for any fragment. Sum costs across all positions, then divide by total fragments or by k. Uniform role distribution is assumed for node-level interpretation.

Helper-fragment reads, not IOPS or seconds. Storage factor includes parity; every example uses 64 MiB fragments. Values shown to at most four decimal places; CSV retains full numeric precision.
ConfigurationStorage factorData repairLocal parity repairGlobal parity repairAll-fragment meanPer data-equivalent
RS 6+31.56N/A669
RS 12+41.333312N/A121216
LRC 6+2+21.66673363.66
LRC 12+2+21.333366126.759
LRC 12+4+21.5331246

Reproduce

The downloadable module needs only Node.js. This command prints the identical CSV; there is no device access, random seed or external dependency.

node --input-type=module -e 'import { toCsv } from "./lrc-repair-costs.mjs"; process.stdout.write(toCsv())'

For LRC 12+2+2, the role-weighted sum is 108 reads. Dividing by 16 gives 6.75; dividing by 12 gives 9. The generated JSON includes SHA-256 hashes of the model and CSV. Generation time is not an observation period.

Limits

Column definitions

label
RS uses data+global parity; LRC uses data+local parity+global parity. Not Ceph CLI notation.
k
Number of payload data fragments per stripe.
localGroups
Equal data groups, each with one local parity; zero for the RS baseline.
globalParities
Number of global parity fragments.
totalFragments
Total stored fragments: data plus all parity.
shardBytes
Bytes per equal-size fragment. Illustrative input; 1 MiB = 1048576 bytes.
storageFactor
Stored bytes divided by payload bytes; dimensionless, excluding metadata.
dataReads
Complete helper fragments read for one data-fragment loss.
localParityReads
Complete helper fragments read for one local-parity loss; zero means not applicable in RS.
globalParityReads
Complete helper fragments read to recompute one global parity.
sumIndependentReads
Sum of independent one-fragment repair read counts across every position; not simultaneous losses.
averageReadsPerLostFragment
Sum of independent read counts divided by total stored fragments; uniform lost-role assumption.
readsPerLostDataEquivalent
Same sum divided by payload data fragments; parity repairs amortized over payload.
dataReadBytes
Helper bytes read for one data-fragment loss, excluding the reconstructed write.

Sources and license

CC0-1.0 for Hesela's original model and generated rows. Cited publications retain their own rights.

  1. Cheng Huang, Huseyin Simitci, Yikang Xu, Aaron Ogus, Brad Calder, Parikshit Gopalan, Jin Li and Sergey Yekhanin. Erasure Coding in Windows Azure Storage. USENIX ATC 2012, pp. 15-26; sections 2-3. (accessed 2026-10-11)
  2. Oleg Kolosov, Gala Yadgar, Matan Liram, Itzhak Tamo and Alexander Barg. On Fault Tolerance, Locality, and Optimality in Locally Repairable Codes. USENIX ATC 2018, pp. 865-877; sections 3, 5-6. (accessed 2026-10-11)
  3. Ceph: Locally Repairable Erasure Code Plugin (development documentation; parameter names are implementation-specific). (accessed 2026-10-11)

Definitions: locally repairable code, repair locality, repair-read amplification.