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.
Backwards links
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:
- Cumulative storage need for Manually defined job
- Cumulative storage need for Video streaming job
- Initial storage need
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:
- Cumulative storage need for Manually defined job
- Hourly number of instances
- Storage capacity
- Full cumulative storage need
- Initial storage need
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:
- Manually defined job fabrication weight in impact repartition
- Video streaming job fabrication weight in impact repartition
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:
- Manually defined job fabrication weight in impact repartition
- Fabrication impact repartition weights sum
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.