Skip to content

Storage

Persistent storage backing a Server (typically SSD or HDD). Capacity is sized to the cumulative volume of data jobs write, plus an optional baseline.

When to use this class

Storage is allocated per-server through Server.storage. Use the archetype helpers (Storage.ssd(), Storage.hdd()) for sensible defaults, then override fields as needed.

Common pitfalls

Storage.data_storage_duration controls how long data lives before it is automatically dumped. Setting it longer than the modeling period means the storage need only ever grows, which can sharply inflate the number of instances required.

Params

name

A human readable description of the object.

storage_capacity

Capacity of one storage instance. Used as the divisor when sizing the number of instances required to hold the cumulative storage need.

Unit: terabyte_stored.

carbon_footprint_fabrication_per_storage_capacity

Embodied carbon emitted to manufacture one unit of storage capacity. Multiplied by capacity to obtain the per-instance fabrication footprint.

Unit: kilogram / terabyte_stored.

data_replication_factor

Multiplier accounting for redundant copies stored on top of the live data, such as a value of 3 for a triplicated cluster.

Unit: dimensionless.

data_storage_duration

How long stored data is retained before being automatically dumped. Drives how cumulative storage grows over time.

Unit: hour.

base_storage_need

Storage occupied independently of jobs (system data, indexes, baseline assets). Added on top of the cumulative job-driven storage need.

Unit: terabyte_stored.

lifespan

Expected time before a storage instance is replaced. Embodied carbon is amortised over this duration.

Unit: year.

fixed_nb_of_instances

Number of physical storage units deployed when capacity is provisioned ahead of time. Leave empty to let e-footprint size capacity from the cumulative storage need.

User defined number of instances. Can be an EmptyExplainableObject in which case the optimum number of instances will be computed, or an ExplainableQuantity with a dimensionless value, in which case e-footprint will raise an error if the object needs more instances than available.

power

Unit: watt.

Fixed by Storage to 0.0 W — not configurable.

fraction_of_usage_time

Unit: dimensionless.

Fixed by Storage to 1.0 — not configurable.

Calculated attributes

carbon_footprint_fabrication

Embodied carbon of one storage instance, equal to the per-capacity fabrication footprint times the instance's capacity.

Example value: 160 kg

Depends directly on:

through the following calculations:

You can also visit the link to Carbon footprint’s full calculation graph.

full_cumulative_storage_need_per_job

Per-job cumulative volume of stored data over time, applying the replication factor and dropping data older than Storage.data_storage_duration.

Example value: {
Job Manually defined job (66f104): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in TB stored:
first 10 vals [0.0000042, 0.0000054, 0.0000072, 0.0000078, 0.0000108, 0.000015, 0.0000186, 0.000321, 0.000925, 0.00183],
last 10 vals [18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100],
VideoStreamingJob Video streaming job (c36fe0): 26298 values from 2025-01-01 00:00:00+00:00 to 2028-01-01 18:00:00+00:00 in B stored:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
last 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Cumulative storage need for Manually defined job’s full calculation graph.

full_cumulative_storage_need

Total cumulative storage volume held by this storage at each hour, summing per-job cumulative needs and adding the base storage need.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in TB stored:
first 10 vals [0.0000042, 0.0000054, 0.0000072, 0.0000078, 0.0000108, 0.000015, 0.0000186, 0.000321, 0.000925, 0.00183],
last 10 vals [18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100]

Depends directly on:

through the following calculations:

You can also visit the link to Full cumulative storage need’s full calculation graph.

raw_nb_of_instances

Hourly storage instances strictly required to hold the cumulative storage need, before rounding.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in k:
first 10 vals [0.0000000042, 0.0000000054, 0.0000000072, 0.0000000078, 0.0000000108, 0.000000015, 0.0000000186, 0.000000321, 0.000000925, 0.00000183],
last 10 vals [18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1]

Depends directly on:

through the following calculations:

You can also visit the link to Hourly raw number of instances’s full calculation graph.

nb_of_instances

Hourly storage instances actually attributed: fractional for serverless backends (only used capacity is billed), held to the user-fixed count if set, otherwise ceiled to whole instances.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in k:
first 10 vals [0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001],
last 10 vals [18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1, 18.1]

Depends directly on:

through the following calculations:

You can also visit the link to Hourly number of instances’s full calculation graph.

instances_fabrication_footprint

Hourly fabrication-phase emissions of all instances, equal to the embodied carbon of one instance amortised over its lifespan and multiplied by the number of instances active in each hour.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in kg:
first 10 vals [0.00304, 0.00304, 0.00304, 0.00304, 0.00304, 0.00304, 0.00304, 0.00304, 0.00304, 0.00304],
last 10 vals [55.1, 55.1, 55.1, 55.1, 55.1, 55.1, 55.1, 55.1, 55.1, 55.1]

Depends directly on:

through the following calculations:

You can also visit the link to Hourly instances fabrication footprint’s full calculation graph.

instances_energy

Hourly energy consumed by storage instances. Currently always empty: storage operating energy is folded into the hosting server's energy footprint rather than tracked separately.

Example value: no value

Depends directly on:

through the following calculations:

You can also visit the link to no value’s full calculation graph.

energy_footprint

Hourly carbon emissions caused by the electricity consumed by this hardware, equal to its hourly energy use times the local grid carbon intensity.

Example value: no value

Depends directly on:

through the following calculations:

You can also visit the link to Hourly energy footprint’s full calculation graph.

fabrication_impact_repartition_weights

Per-job weights used to attribute storage fabrication footprint to jobs, equal to each job's cumulative storage plus an even share of the unused capacity and base storage need.

Example value: {
Job Manually defined job (66f104): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in TB stored:
first 10 vals [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.501],
last 10 vals [18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100],
VideoStreamingJob Video streaming job (c36fe0): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in GB stored:
first 10 vals [500, 500, 500, 500, 500, 500, 500, 500, 500, 499],
last 10 vals [54.7, 87.9, 121, 154, 188, 221, 254, 287, 320, 354],
}

Depends directly on:

through the following calculations:

You can also visit the link to Manually defined job fabrication weight in impact repartition’s full calculation graph.

fabrication_impact_repartition_weight_sum

Sum of fabrication impact repartition weights, used as the denominator when normalising into per-container shares.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in TB stored:
first 10 vals [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
last 10 vals [18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100, 18100]

Depends directly on:

through the following calculations:

You can also visit the link to Fabrication impact repartition weights sum’s full calculation graph.

fabrication_impact_repartition

Normalised share of fabrication-phase emissions that this object attributes to each container.

Example value: {
Job Manually defined job (66f104): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.501],
last 10 vals [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
VideoStreamingJob Video streaming job (c36fe0): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.499],
last 10 vals [0.00000302, 0.00000485, 0.00000668, 0.00000852, 0.0000103, 0.0000122, 0.000014, 0.0000159, 0.0000177, 0.0000195],
}

Depends directly on:

through the following calculations:

You can also visit the link to fabrication impact attribution to Manually defined job’s full calculation graph.

usage_impact_repartition_weight_sum

Sum of usage impact repartition weights, used as the denominator when normalising into per-container shares.

Example value: no value

Depends directly on:

through the following calculations:

You can also visit the link to Usage impact repartition weights sum’s full calculation graph.