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 |
|
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 |
|
Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0. |
power_policy_plugin |
|
The name of the power policy plugin that will be used to set CPU specific policies |
redfish_environment_metrics_path |
|
Partial Redfish URL path to the CPU device that contains EnvironmentMetrics, example: “Systems/HGX_Baseboard_0/Processors/CPU_%d” |
minimum_power_increment |
|
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 |
|
Type of the device |
model |
|
Model name of the device |
count |
|
Number of devices of the given type |
ComputerSystemSpec#
ComputerSystem device specification
Field |
Type |
Description |
|---|---|---|
devices |
repeated |
Contained devices in this node |
power_policy_plugin |
|
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 |
|
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 |
|
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 |
|
Partial Redfish URL path to the device that contains EnvironmentMetrics, example: “Chassis/HGX_ProcessorModule_%d” |
processor_modules_count |
|
Number of processor modules ComputerSystem contains |
idle_policy |
map |
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 |
|
Skip firmware-version validation for this device. |
static_load_watts |
|
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 |
|
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 |
|
none |
value |
|
none |
ComputerSystemSpec.Limit#
Policy limit for a component, given as watts or percentage
Field |
Type |
Description |
|---|---|---|
oneof _watts.watts |
optional |
Power limit in watts. Must be finite and greater than 0. |
oneof _percentage.percentage |
optional |
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 |
|
none |
model |
|
none |
description |
|
none |
oneof Spec.gpu |
|
none |
oneof Spec.computerSystem |
|
none |
oneof Spec.powerSupply |
|
none |
oneof Spec.powerDistribution |
|
none |
oneof Spec.powerDomain |
|
none |
oneof Spec.cpu |
|
none |
oneof Spec.memory |
|
none |
Devices#
Devices is a list of devices
Field |
Type |
Description |
|---|---|---|
devices |
repeated |
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 |
|
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 |
|
Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0. |
wpps_support |
|
Whether the GPU supports workload power profiles |
power_policy_plugin |
|
The name of the power policy plugin that will be used to set GPU specific policies |
redfish_environment_metrics_path |
|
Partial Redfish URL path to the GPU device that contains EnvironmentMetrics, example: “Systems/HGX_Baseboard_0/Processors/GPU_%d” |
index_base |
|
Starting Redfish index used when formatting indexed GPU endpoint paths. |
edpp |
|
EDPp capability metadata. If omitted, EDPp is unsupported for this GPU. |
minimum_power_increment |
|
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 |
|
Minimum EDPp percentage supported by this GPU. Must be set and greater than 0. |
max_percentage |
|
Maximum EDPp percentage supported by this GPU. Must be set and greater than 0. |
multiplier |
|
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 |
|
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 |
|
Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0. |
minimum_power_increment |
|
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 |
|
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 |
|
Maximum power value that can be set (the maximum amount of power device consumes). Must be finite and greater than 0. |
efficiency_factor |
|
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 |
|
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 |
|
AC power factor. Must be finite and between 0 and 1, inclusive. |
power_limit_va |
|
Apparent power limit in volt-amperes. Must be finite and greater than or equal to 0. |
current_limit_amps |
|
Current limit in amperes. Must be finite and greater than or equal to 0. |
v_min |
|
Minimum voltage. Must be finite and greater than or equal to 0. |
v_max |
|
Maximum voltage. Must be finite and greater than or equal to 0. |
static_load_watts |
|
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 |