v1/devices.proto#

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

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”

minimum_power_increment

double

Minimum meaningful power increment in watts. Must be finite and greater than or equal to 0. Zero (the proto3 default) means use the device default.

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

disable_firmware_check

bool

Skip firmware-version validation for this device.

static_load_watts

double

Total power consumed by the computer system while idle, including idle GPU and CPU consumption and fixed infrastructure overhead. A topology entity’s StaticLoad, when present, overrides this value. Must not exceed max_load_watts.

minimum_power_increment

double

Minimum meaningful power increment in watts. Must be finite and greater than or equal to 0. Zero (the proto3 default) means use the device default

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”

index_base

uint32

Starting Redfish index used when formatting indexed GPU endpoint paths.

edpp

GPUSpec.EDPpSpec

EDPp capability metadata. If omitted, EDPp is unsupported for this GPU.

minimum_power_increment

double

Minimum meaningful power increment in watts. Must be finite and greater than or equal to 0. Zero (the proto3 default) means use the device default.

GPUSpec.EDPpSpec#

EDPp (Electrical Design Point percentage) capability metadata for a GPU. If omitted, EDPp is unsupported for this GPU.

Field

Type

Description

min_percentage

double

Minimum EDPp percentage supported by this GPU. Must be set and greater than 0.

max_percentage

double

Maximum EDPp percentage supported by this GPU. Must be set and greater than 0.

multiplier

double

Multiplier used to convert between EDPp percentage and power. Must be set, finite, and greater than 0.

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.

minimum_power_increment

double

Minimum meaningful power increment in watts. Must be finite and greater than or equal to 0. Zero (the proto3 default) means use the device default.

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.

static_load_watts

double

Power consumed by this component independent of its downstream load. A topology entity’s StaticLoad, when present, overrides this value. During PDN aggregation, downstream load is adjusted by efficiency_factor before this component’s static load is added. Must not exceed max_load_watts.

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