Server
A physical or virtual machine with CPU and RAM that runs jobs as part of a digital service. Resource use is computed from the jobs it hosts and rolled up into an hourly energy and fabrication footprint.
When to use this class
Use Server for CPU-bound workloads with manually defined hardware specifications. Use GPUServer for GPU-bound workloads such as model training or inference. Use BoaviztaCloudServer for cloud instances whose hardware specifications and fabrication footprint should be looked up automatically from Boavizta reference data.
Usage from Python
Construct Server with all required quantities, then attach Jobs by passing the server to each job's constructor. The server is wired into the system through the jobs that reference it.
Common pitfalls
Server.fixed_nb_of_instances only applies when Server.server_type is on-premise. Setting it on an autoscaling or serverless server has no effect; setting it too low on an on-premise server raises an error when peak demand exceeds capacity.
Params
name
A human readable description of the object.
server_type
Provisioning model of the server, which decides how many instances are attributed in each hour. Autoscaling rounds the hourly demand up to a whole number of instances, so an instance is billed even when it is only partially loaded. Serverless attributes only the fractional instance-hours actually used. On-premise holds a fixed number of physical instances over the whole modeling period (capacity sized to peak demand, or to Server.fixed_nb_of_instances if set).
For example, autoscaling.
carbon_footprint_fabrication
Embodied carbon emitted to manufacture one server instance. Amortised over the lifespan when computing the hourly fabrication footprint.
Unit: kilogram.
power
Electrical power drawn by one fully-loaded instance, before applying datacenter overhead.
Unit: watt.
lifespan
Expected time before the server is replaced. Embodied carbon is amortised over this duration.
Unit: year.
idle_power
Electrical power drawn by one instance that is on but not running any jobs.
Unit: watt.
ram
Total memory available on one instance. Combined with Server.utilization_rate to obtain the memory usable by jobs.
Unit: gigabyte_ram.
compute
Total compute capacity available on one instance, expressed in CPU cores.
Unit: cpu_core.
power_usage_effectiveness
Datacenter overhead multiplier applied to instance power to account for cooling, lighting, and other site-wide energy use.
Unit: dimensionless.
average_carbon_intensity
Average grid carbon intensity at the location where the server runs, used to convert energy consumption into carbon emissions.
Unit: gram / kilowatt_hour.
utilization_rate
Fraction of an instance's RAM and compute that is considered usable by jobs after operating-system and headroom overhead.
Unit: dimensionless.
base_ram_consumption
RAM consumed per instance independently of jobs, for the operating system, agents, and idle services.
Unit: megabyte_ram.
base_compute_consumption
Compute consumed per instance independently of jobs.
Unit: cpu_core.
storage
Backing Storage attached to the server. Storage emissions are reported separately from the server's own footprint.
An instance of Storage.
fixed_nb_of_instances
On-premise only: number of physical machines deployed. Used to detect when traffic exceeds capacity. Leave empty for autoscaling and serverless server types.
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.
fraction_of_usage_time
Unit: dimensionless.
Fixed by Server to 1.0 — not configurable.
Backwards links
Calculated attributes
hour_by_hour_ram_need
Hourly RAM demand placed on the server by all of its jobs combined.
Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in GB ram:
first 10 vals [0.117, 0.0334, 0.0501, 0.0167, 0.0835, 0.117, 0.1, 0.0806, 0.161, 0.125],
last 10 vals [0.0694, 0.0694, 0.0694, 0.0694, 0.0694, 0.0555, 0.0416, 0.0277, 0.0138, 0]
Depends directly on:
- Hourly average occurrences across usage patterns
- RAM needed during job processing
- Hourly average occurrences across usage patterns
- RAM needed
through the following calculations:
You can also visit the link to Hour by hour ram need’s full calculation graph.
hour_by_hour_compute_need
Hourly compute demand placed on the server by all of its jobs combined.
Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in cpu core:
first 10 vals [0.00765, 0.00218, 0.00328, 0.00109, 0.00546, 0.00765, 0.00655, 0.0321, 0.0642, 0.0887],
last 10 vals [0.139, 0.139, 0.139, 0.139, 0.139, 0.111, 0.0832, 0.0555, 0.0277, 0]
Depends directly on:
- Hourly average occurrences across usage patterns
- cpu cores needed on server server during job processing
- Hourly average occurrences across usage patterns
- CPU needed
through the following calculations:
You can also visit the link to Hour by hour compute need’s full calculation graph.
occupied_ram_per_instance
RAM that is permanently occupied on each instance, summing the server's own base consumption with the base consumption of every installed service.
Example value: 2.3 GB ram
Depends directly on:
through the following calculations:
You can also visit the link to Occupied RAM per instance including services’s full calculation graph.
occupied_compute_per_instance
Compute that is permanently occupied on each instance, summing the server's own base consumption with the base consumption of every installed service.
Example value: 2 cpu core
Depends directly on:
through the following calculations:
You can also visit the link to Occupied CPU per instance including services’s full calculation graph.
available_ram_per_instance
RAM each instance has left for jobs after applying the utilization rate and subtracting RAM occupied by installed services.
Example value: 113 GB ram
Depends directly on:
through the following calculations:
You can also visit the link to Available RAM per instance’s full calculation graph.
available_compute_per_instance
Compute each instance has left for jobs after applying the utilization rate and subtracting compute occupied by installed services.
Example value: 19.6 cpu core
Depends directly on:
through the following calculations:
You can also visit the link to Available CPU per instance’s full calculation graph.
raw_nb_of_instances
Hourly number of instances strictly required to serve hourly demand, taking the maximum across the RAM and compute dimensions, before rounding 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 :
first 10 vals [0.00104, 0.000296, 0.000444, 0.000148, 0.000739, 0.00104, 0.000887, 0.00164, 0.00328, 0.00453],
last 10 vals [0.00708, 0.00708, 0.00708, 0.00708, 0.00708, 0.00566, 0.00425, 0.00283, 0.00141, 0]
Depends directly on:
- Hour by hour ram need
- Available RAM per instance
- Hour by hour compute need
- Available CPU per instance
through the following calculations:
You can also visit the link to Hourly raw number of instances’s full calculation graph.
nb_of_instances
Hourly number of instances actually billed, computed differently per server type: ceiled to whole instances for autoscaling, mirrored from raw demand for serverless, and held flat at peak (or the user-fixed count) for on-premise.
Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
last 10 vals [1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
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 g:
first 10 vals [11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4],
last 10 vals [11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 11.4, 0]
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 all running instances, decomposed into idle baseline energy plus the extra energy drawn while serving load, with PUE applied.
Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in kWh:
first 10 vals [0.0603, 0.0601, 0.0601, 0.06, 0.0602, 0.0603, 0.0603, 0.0605, 0.061, 0.0614],
last 10 vals [0.0621, 0.0621, 0.0621, 0.0621, 0.0621, 0.0617, 0.0613, 0.0608, 0.0604, 0]
Depends directly on:
through the following calculations:
You can also visit the link to Hourly energy consumed by instances’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: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in g:
first 10 vals [6.03, 6.01, 6.01, 6, 6.02, 6.03, 6.03, 6.05, 6.1, 6.14],
last 10 vals [6.21, 6.21, 6.21, 6.21, 6.21, 6.17, 6.13, 6.08, 6.04, 0]
Depends directly on:
through the following calculations:
You can also visit the link to Hourly energy footprint’s full calculation graph.
service_total_job_volumes
Total hourly volume of jobs going through each installed service, used to attribute service-level overhead to individual jobs.
Example value: {
VideoStreaming Video streaming service (f18d7a): 26298 values from 2025-01-01 00:00:00+00:00 to 2028-01-01 18:00:00+00:00 in :
first 10 vals [2.33, 0.667, 1, 0.333, 1.67, 2.33, 2, 1.33, 2.67, 1.67],
last 10 vals [2, 1, 1, 1.33, 0.333, 1.67, 0.667, 2, 1, 1.67],
}
Depends directly on:
through the following calculations:
You can also visit the link to Total job volume for Video streaming service’s full calculation graph.
job_repartition_weights
Per-job weight used to attribute the server's fabrication and energy footprint back to its jobs, proportional to each job's share of compute and RAM consumption over the modeling period.
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.0000177, 0.00000506, 0.0000076, 0.00000253, 0.0000127, 0.0000177, 0.0000152, 0.00127, 0.00255, 0.00381],
last 10 vals [0.00633, 0.00632, 0.00633, 0.00633, 0.00633, 0.00506, 0.00379, 0.00253, 0.00126, 0],
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.0168, 0.016, 0.0161, 0.0158, 0.0165, 0.0168, 0.0167, 0.0163, 0.017, 0.0165],
last 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}
Depends directly on:
- Hourly average occurrences across usage patterns
- cpu cores needed on server server during job processing
- Nb cpu cores
- RAM needed during job processing
- RAM
through the following calculations:
You can also visit the link to Manually defined job 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 :
first 10 vals [0.0169, 0.016, 0.0162, 0.0158, 0.0165, 0.0169, 0.0167, 0.0176, 0.0196, 0.0203],
last 10 vals [0.00633, 0.00632, 0.00633, 0.00633, 0.00633, 0.00506, 0.00379, 0.00253, 0.00126, 0]
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.00105, 0.000317, 0.00047, 0.00016, 0.000767, 0.00105, 0.000911, 0.0724, 0.13, 0.188],
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.999, 1, 1, 1, 0.999, 0.999, 0.999, 0.928, 0.87, 0.812],
last 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
}
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: 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.0169, 0.016, 0.0162, 0.0158, 0.0165, 0.0169, 0.0167, 0.0176, 0.0196, 0.0203],
last 10 vals [0.00633, 0.00632, 0.00633, 0.00633, 0.00633, 0.00506, 0.00379, 0.00253, 0.00126, 0]
Depends directly on:
through the following calculations:
You can also visit the link to Usage impact repartition weights sum’s full calculation graph.
usage_impact_repartition
Normalised share of usage-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.00105, 0.000317, 0.00047, 0.00016, 0.000767, 0.00105, 0.000911, 0.0724, 0.13, 0.188],
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.999, 1, 1, 1, 0.999, 0.999, 0.999, 0.928, 0.87, 0.812],
last 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
}
Depends directly on:
through the following calculations:
You can also visit the link to usage impact attribution to Manually defined job’s full calculation graph.