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). Must be finite and greater than or equal to 0.
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0.
power_policy_plugin string The name of the power policy plugin that will be used to set CPU 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). Must be finite and greater than or equal to 0.
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0.
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 Power limit in watts. Must be finite and greater than 0.
oneof _percentage.percentage optional double Power limit as a percentage. Must be finite and greater than 0 and no more than 100.

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). Must be finite and greater than or equal to 0.
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0.
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). Must be finite and greater than or equal to 0.
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0.

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). Must be finite and greater than or equal to 0.
max_load_watts double Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0.
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. Must be finite and greater than 0 and no more than 1.
power_limit_watts double The power limit that cannot be exceeded (this_device_consumption + (downstream_devices_consumption * efficiency_factor)). Must be finite and greater than or equal to 0.
power_factor double AC power factor. Must be finite and between 0 and 1, inclusive.
power_limit_va double Apparent power limit in volt-amperes. Must be finite and greater than or equal to 0.
current_limit_amps double Current limit in amperes. Must be finite and greater than or equal to 0.
v_min double Minimum voltage. Must be finite and greater than or equal to 0.
v_max double Maximum voltage. Must be finite and greater than or equal to 0.

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