Server#
- class impacthpc.src.Server(embodied_impacts: ~impacthpc.src.core.impacts.Impacts | None = None, components: ~typing.List[~typing.Tuple[Component, int]] = [], case: ~impacthpc.src.other_components.Case = <impacthpc.src.other_components.Case object>, allocation_method: AllocationMethod | None = None, usage_rate: ~impacthpc.src.core.ReplicableValue.ReplicableValue | None = None)#
Bases:
HasConsumptionAndEmbodiedImpacts
Represents a Server / Node and is used to compute its impacts.
- embodied_impacts#
The embodied impacts of the server. If the value is known,
estimate_embodied_impacts()
returns it, otherwise an estimation is done based on other attributes. Defaults to None.
- components#
A list of the
Component
instances that represent the electronic components of the server, along with the number of each component in the server. Defaults to [].- Type:
List[Tuple[Component, int]], optional
- allocation_method#
An allocation method for the server. Defaults to
naive_allocation()
for the default lifetime of a server, defined in the config file under default_values_server > lifetime.- Type:
AllocationMethod | None, optional
- usage_rate#
The usage rate of the server, between 0 and 1. Defaults to the value defined in the config file under default_values_server > usage_rate.
- Type:
ReplicableValue | None, optional
Example:#
Server( components=[ (CPU(name=ExactName("Intel Xeon Gold 6132")), 2), (RAM(size=SourcedValue(name="ram_size", value="3 TB", source="User Input")), 1), (GPU(name=find_close_gpu_model_name("Nvidia Tesla V100")), 4), # In the spec, we don't know the exact variant of Nvidia V100 used, so we can use find_close_gpu_model_name result and it will average the matching GPUs (MotherBoard(), 1), ] )
This represents a server with two Intel Xeon Gold 6132 CPUs, three terabytes of RAM, four Nvidia Tesla V100 GPUs, and a motherboard.
Methods Summary
Methods Documentation
- estimate_electric_power() ReplicableValue #
Estimate the electric power of the server.
The server’s instant consumption is the sum of its components’ power consumptions.
For Uncertainties, the sum of the components of the same type is done in dependent mode, i.e., CPUs’ consumptions are considered positively correlated (correlation = 1) with other CPUs’ consumptions, RAM sticks are correlated with other RAM sticks, etc.
The final sum of each group of the correlated consumptions is done in independent mode, i.e., they are considered uncorrelated (correlation = 0).
- Returns:
The electric power of the server.
- Return type:
- estimate_embedded_impacts(job_duration: ReplicableValue) Impacts #
Estimate the Embedded impacts of the server for the job.
Internally uses
estimate_embodied_impacts()
and passes it theallocation_method
with thejob_duration
.- Parameters:
job_duration (ReplicableValue) – The duration of the job we want to allocate the embodied impacts to.
- Returns:
The Embedded impacts of the server for the job.
- Return type:
Impact
- estimate_embodied_impacts() Impacts #
Estimate the embodied impacts of the server.
The server’s embodied impacts are the sum of its components’ embodied impacts.
For Uncertainties, the sum of the components of the same type is done in dependent mode, i.e., CPUs’ impacts are considered positively correlated (correlation = 1) with other CPUs’ impacts, RAM sticks are correlated with other RAM sticks, etc.
The final sum of each group of the correlated impacts is done in independent mode, i.e., they are considered uncorrelated (correlation = 0).
- Returns:
The embodied impacts of the server.
- Return type:
Impact
- estimate_idle_power() ReplicableValue #
Estimate the idle power of the server.
The server’s static consumption is the sum of its components’ power consumptions at idle.
For Uncertainties, the sum of the components of the same type is done in dependent mode, i.e., CPUs’ consumptions are considered positively correlated (correlation = 1) with other CPUs’ consumptions, RAM sticks are correlated with other RAM sticks, etc.
The final sum of each group of the correlated consumptions is done in independent mode, i.e., they are considered uncorrelated (correlation = 0).
- Returns:
The idle power of the server.
- Return type:
- estimate_peak_power() ReplicableValue #
Estimate the peak power of the server.
The server’s peak consumption is the sum of its components’ peak power consumptions.
For Uncertainties, the sum of the components of the same type is done in dependent mode, i.e., CPUs’ consumptions are considered positively correlated (correlation = 1) with other CPUs’ consumptions, RAM sticks are correlated with other RAM sticks, etc.
The final sum of each group of the correlated consumptions is done in independent mode, i.e., they are considered uncorrelated (correlation = 0).
- Returns:
The peak power of the server.
- Return type: