devices

API Reference: v1/devices.proto

These are the power distribution network, node, GPU, CPU, etc. device abstractions.

Table of Contents

Messages

CPUSpec

CPU device specification for a generic CPU. If you encounter a CPU with different power capabilities, do not use this model. Instead, create a new CPU specification for that CPU and register it as a new device.

Field Type Description
min_load_watts double Minimum power value that can be set (the minimum amount of power device consumes)
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes)
power_policy_plugin string The name of the power policy plugin that will be used to set GPU specific policies
redfish_environment_metrics_path string Partial Redfish URL path to the CPU device that contains EnvironmentMetrics, example: “Systems/HGX_Baseboard_0/Processors/CPU_%d”

ComputerSystemComponent

Field Type Description
type string Type of the device
model string Model name of the device
count uint32 Number of devices of the given type

ComputerSystemSpec

ComputerSystem device specification

Field Type Description
devices repeated ComputerSystemComponent Contained devices in this node
power_policy_plugin string The name of the power policy plugin that will be used to set power policies. This looks like “redfish”, (or something like “redfish_gb200.v1” if there are different flavors of it), and identifies one of the existing implementations of power policy plugins.
min_load_watts double Minimum power value that can be set (the minimum amount of power device consumes)
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes)
redfish_environment_metrics_path string Partial Redfish URL path to the device that contains EnvironmentMetrics, example: “Chassis/HGX_ProcessorModule_%d”
processor_modules_count uint32 Number of processor modules ComputerSystem contains
idle_policy map ComputerSystemSpec.IdlePolicyEntry The policy that should be used to cap power for idle nodes. If omitted, idle nodes will not be capped. The key must be one of: Node, GPU, CPU, Memory The limit must contain either the watt limit, or percentage limit

ComputerSystemSpec.IdlePolicyEntry

Field Type Description
key string none
value ComputerSystemSpec.Limit none

ComputerSystemSpec.Limit

Policy limit for a component, given as watts or percentage

Field Type Description
oneof _watts.watts optional double none
oneof _percentage.percentage optional double none

Device

A device describes the power-related attributes of a power distribution network device, gpu, node, etc.

Field Type Description
type string none
model string none
description string none
oneof Spec.gpu GPUSpec none
oneof Spec.computerSystem ComputerSystemSpec none
oneof Spec.powerSupply PDNComponentSpec none
oneof Spec.powerDistribution PDNComponentSpec none
oneof Spec.powerDomain PDNComponentSpec none
oneof Spec.cpu CPUSpec none
oneof Spec.memory MemorySpec none

Devices

Devices is a list of devices

Field Type Description
devices repeated Device none

GPUSpec

GPU device specification for a generic GPU. If you encounter a GPU with different power capabilities, do not use this model. Instead, create a new GPU specification for that GPU and register it as a new device.

Field Type Description
min_load_watts double Minimum power value that can be set (the minimum amount of power device consumes)
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes)
wpps_support bool Whether the GPU supports workload power profiles
power_policy_plugin string The name of the power policy plugin that will be used to set GPU specific policies
redfish_environment_metrics_path string Partial Redfish URL path to the GPU device that contains EnvironmentMetrics, example: “Systems/HGX_Baseboard_0/Processors/GPU_%d”

MemorySpec

Memory device specification for a generic memory unit.

Field Type Description
min_load_watts double Minimum power value that can be set (the minimum amount of power device consumes)
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes)

PDNComponentSpec

Generic power distribution network device specification

Field Type Description
min_load_watts double Minimum power value that can be set (the minimum amount of power device consumes)
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes)
efficiency_factor double A factor of efficiency of the device, affects only contained devices. Total load on the device should not exceed total available power * efficiency_factor
power_limit_watts double The power limit that cannot be exceeded (this_device_consumption + (downstream_devices_consumption * efficiency_factor))
power_factor double none
power_limit_va double none
current_limit_amps double none
v_min double none
v_max double none

Scalar Value Types

.proto Type Notes C++ Type Java Type Python Type

double
double double float

float
float float float

int32
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int

int64
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long

uint32
Uses variable-length encoding. uint32 int int/long

uint64
Uses variable-length encoding. uint64 long int/long

sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int

sint64
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long

fixed32
Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int

fixed64
Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long

sfixed32
Always four bytes. int32 int int

sfixed64
Always eight bytes. int64 long int/long

bool
bool boolean boolean

string
A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode

bytes
May contain any arbitrary sequence of bytes. string ByteString str