Skip to content

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.

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:

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:

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:

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:

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.