Power Management
Aspects of power management in NVIDIA Base Command Manager include:
-
managing the main power supply to nodes through the use of power distribution units, baseboard management controllers, or CMDaemon
-
monitoring power consumption over time
-
setting power-saving options in workload managers
-
ensuring the passive head node can safely take over from the active head during failover (Chapter 17)
-
allowing cluster burn tests to be carried out (Chapter 11 of the Installation Manual)
The ability to control power inside a cluster is therefore important for cluster administration, and also creates opportunities for power savings. This chapter describes BCM power management features.
In section 4.1 the configuration of the methods used for power operations is described.
Section 4.2 then describes the way the power operations commands themselves are used to allow the administrator turn power on or off, reset the power, and retrieve the power status. It explains how these operations can be applied to devices in various ways.
Section 4.3 briefly covers monitoring power.
The integration of power saving with workload management systems is covered in the chapter on Workload Management (section 7.9).
4.1 Configuring Power Parameters
Several methods exist to control power to devices:
-
Power Distribution Unit (PDU) based power control
-
IPMI-based power control (for node devices only)
-
Custom power control
-
HP iLO-based power control (for node devices only)
-
Dell DRAC-based power control (for node devices only)
-
Cisco UCS CIMC-based power control (for node devices only)
-
Redfish-based power control (for node devices only)
4.1.1 PDU-based Power Control
4.1.1.1 Introduction To PDU-based Power Control
For PDU-based power control, the power supply of a device is plugged into a port on a PDU. The device can be a node, but also anything else with a power supply, such as a switch or a blade chassis. The device can then be turned on or off by changing the state of the PDU port.
4.1.1.2 Configuring The PDU Itself
To use PDU-based power control, the PDU itself must be added and configured as a device in the cluster, and must be reachable over the network. PDU configuration was introduced in section 3.9. A summary of the configuration of PDUs is as follows:
The PDU can be added via cmsh using device mode, and is set as an object with a type of PowerDeviceUnit and is given a name. The value for Ports is automatically read, and is the number of power ports available to the other devices in the cluster.
In Base View the corresponding navigation path for a PDU named mypdu is:
Devices > PowerDistribution Unit list > mypdu > Add
4.1.1.3 Configuring The Devices To Use The PDU
After the PDU itself is configured, then the devices that use it can be configured to use the PDU and its ports.
For example, for a node node001 that is be powered by the PDU mypdu, in Base View the configuration can be done using the navigation path:
Devices > Nodes > Physical Node list[node001] > Edit > Settings > JUMP TO > Power Distribution Units > ADD > PDUPort
which opens up the PDU Port window (figure 4.1):

Figure 4.1: PDU configuration settings for a node
and allows the PDU and port used by node001 to be set.
For the APC brand of PDUs: the Power control property (here) should be set to apc, or the list of PDU ports is ignored by default. Overriding the default is described in section 4.1.3.
4.1.1.4 Power Ports: One-to-many And Many-to-one
Nodes may have multiple power feeds for redundancy reasons. Thus, there may be multiple PDU ports and multiple PDUs defined for a single device. The cluster management takes care of operating all ports of a device in the correct order when a power operation is done on the device.
For example, if a PDU mypdu has its ports 2 and 4 connected to a blade chassis mychassis, then the configuration can be specified using cmsh with:
Example
It is also possible for multiple devices to share the same PDU port. This is the case for example when twin nodes are used (i.e. two nodes sharing a single power supply). In this case, all power operations on one device apply to all nodes sharing the same PDU port.
4.1.1.5 Non-manageable PDUs
If the PDUs defined for a node are not manageable, then the node’s baseboard management controllers (that is, IPMI/iLO and similar) are assumed to be inoperative and are therefore assigned an unknown state. This means that dumb PDUs, which cannot be managed remotely, are best not assigned to nodes in BCM. It is suggested that administrators record that a dumb PDU is assigned to a node as follows:
-
in Base View the
Notesfield or theUserdefined1/Userdefined2fields can be used with the navigation paths:Devices[device] >Settings>Partition>Notes
or
Devices[device] >Settings>User Defined>Userdefined1/Userdefined1 -
in
cmshthe equivalent is accessible on using the device fromdevicemode, and running:-
set notes -
set userdefined1or -
set userdefined2
-
4.1.1.6 Manageable PDUs And Node Power Status
For PDUs that are manageable:
-
In
cmsh, power-related options can be accessed fromdevicemode, after selecting a device:Example
The power status of a node can be accessed with:
Example
NOTE: The output of
power statusis delivered as a private event (section 12.10), unlikedevice status/status, which is not event-based. If private events have been turned off withevents off(orevents off private), thenpower statusproduces no output at all. This is because power queries can be slow, involving a round trip through PDUs or BMCs, whiledevice statusis fast and does not need the event indirection. Runningevents off broadcastinstead, leaving private events on, still allowspower statusoutput to be seen.If the node is up and has one or more PDUs assigned to it, then the power status is one of
ON,OFF,RESET,FAILED, orUNKNOWN:
4.1.2 IPMI-Based Power Control
IPMI-based power control relies on the baseboard management controller (BMC) inside a node. It is therefore only available for node devices. Blades inside a blade chassis typically use IPMI for power management. Section 3.7 describes setting up networking and authentication for IPMI/iLO/DRAC/CIMC/Redfish interfaces.
To carry out IPMI-based power control operations, the Power control property (here) must be set to the IPMI interface through which power operations should be relayed. Normally this IPMI interface is configured to be ipmi0. Any list of configured APC PDU ports displayed in the GUI is ignored by default when the Power control property is not apc.
Example
Configuring power parameters settings for all the nodes using cmsh, with IPMI interfaces that are called ipmi0:
Example
Configuring power parameters settings for a node using cmsh with APC:
4.1.3 Combining PDU- and IPMI-Based Power Control
By default when nodes are configured for IPMI Based Power Control, any configured PDU ports are ignored. However, it is sometimes useful to change this behavior.
For example, in the CMDaemon configuration file directives in /cm/local/apps/cmd/etc/cmd.conf (introduced in section 2.6.2 and listed in Appendix C), the default value of PowerOffPDUOutlet is false. It can be set to true on the head node, and CMDaemon restarted to activate it.
With PowerOffPDUOutlet set to true it means that CMDaemon, after receiving an IPMI-based power off instruction for a node, and after powering off that node, also subsequently powers off the PDU port. Powering off the PDU port shuts down the BMC, which saves some additional power—typically a few watts per node. When multiple nodes share the same PDU port, the PDU port only powers off when all nodes served by that particular PDU port are powered off.
When a node has to be started up again the power is restored to the node. It is important that the node BIOS is configured to automatically power on the node when power is restored.
4.1.4 Custom Power Control
For a device which cannot be controlled through any of the standard existing power control options, it is possible to set a custom power management script. This is then invoked by the cluster management daemon on the head node whenever a power operation for the device is done.
Power operations are described further in section 4.2.
4.1.4.1 Using custompowerscript
To set a custom power management script for a device, the powercontrol attribute is set by the administrator to custom using either Base View or cmsh, and the value of custompowerscript is specified by the administrator. The value for custompowerscript is the full path to an executable custom power management script on the head node(s) of a cluster.
A custom power script is invoked with the following mandatory arguments:
where <device> is the name of the device on which the power operation is done, and <operation> is one of the following:
On success a custom power script exits with exit code 0. On failure, the script exits with a non-zero exit-code.
4.1.4.2 Using custompowerscriptargument
The mandatory argument values for <operation> and <device> are passed to a custom script for processing. For example, in bash the positional variables $1 and $2 are typically used for a custom power script. A custom power script can also be passed a further argument value by setting the value of custompowerscriptargument for the node via cmsh or Base View. This further argument value would then be passed to the positional variable $3 in bash.
An example custom power script is located at /cm/local/examples/cmd/custompower. In it, setting $3 to a positive integer delays the script via a sleep command by $3 seconds.
An example that is conceivably more useful than a “sleep $3” command is to have a “wakeonlan $3” command instead. If the custompowerscriptargument value is set to the MAC address of the node, that means the MAC value is passed on to $3. Using this technique, the power operation ON can then carry out a Wake On LAN operation on the node from the head node.
Setting the custompowerscriptargument can be done like this for all nodes:
The preceding material usefully illustrates how custompowerscriptargument can be used to pass on arbitrary parameters for execution to a custom script.
However, the goal of the task can be achieved in a simpler and quicker way using the environment variables available in the cluster management daemon environment (section 3.3.1 of the Developer Manual). This is explained next.
4.1.4.3 Using Environment Variables With custompowerscript
Simplification of the steps needed for custom scripts in CMDaemon is often possible because there are values in the CMDaemon environment already available to the script. A line such as:
added to the start of a custom script dumps the names and values of the environment variables to /tmp/env for viewing.
One of the names is $CMD_MAC, and it holds the MAC address string of the node being considered.
So, it is not necessary to retrieve a MAC value for custompowerscriptargument with a bash script as shown in the previous section, and then pass the argument via $3 such as done in the command “wakeonlan $3”. Instead, custompowerscript can simply call “wakeonlan $CMD_MAC” directly in the script when run as a power operation command from within CMDaemon.
4.1.5 Hewlett Packard iLO-Based Power Control
4.1.5.1 iLO Configuration During Installation
If “Hewlett Packard” is chosen as the node manufacturer during installation (section 3.3.11 of the Installation Manual), and the nodes have an iLO management interface, then Hewlett-Packard’s iLO management package, hponcfg, is installed by default on the nodes and head nodes.
4.1.5.2 iLO Configuration After Installation
If “Hewlett Packard” has not been specified as the node manufacturer during installation then it can be configured after installation as follows:
The hponcfg rpm package is normally obtained and upgraded for specific HP hardware from the HP website. Using an example of hponcfg-3.1.1-0.noarch.rpm as the package downloaded from the HP website, and to be installed, the installation can then be done on the head node, the software image, and in the node-installer as follows:
To use iLO on a node, the iLO interface of the node is set up just like the IPMI interfaces as outlined in section 4.1.2. That is, using “set powercontrol ilo0” instead of “set powercontrol ipmi0”. BCM treats HP iLO interfaces just like regular IPMI interfaces, except that the interface names are ilo0, ilo1… instead of ipmi0, ipmi1…
For example, nodes in the default category can be brought under iLO power control as follows:
Example
4.1.6 Dell drac-based Power Control
Dell drac configuration is covered here.
4.1.7 Redfish-Based and CIMC-Based Power Control
Section 3.7 describes setting up networking and authentication for Redfish/CIMC, as well as for IPMI/iLO/DRAC interfaces.
4.2 Power Operations
4.2.1 Power Operations Overview
4.2.1.1 Main Power Operations
Power operations may be carried out on devices from either Base View or cmsh. There are four main power operations:
-
Power On: power on a device
-
Power Off: power off a device
-
Power Reset: power off a device and power it on again after a brief delay
-
Power Status: check power status of a device
4.2.1.2 Scheduling-related Power Operations
There are also scheduling-related power operations, which are currently (December 2018) only accessible via cmsh. Scheduling-related power operations are power operations associated with managing and viewing explicitly-scheduled execution.
Scheduled execution of power operations can be carried out explicitly via the --at, --after, -d, and --parallel-delay options. The scheduling-related power operations to manage and view such scheduled power operations are:
-
power wait: Identifies the devices that have power operations that are in thewaitingstate, i.e. waiting to be carried out, and also outputs the number of operations that are waiting to be carried out. -
power cancel: Cancels an operation in thewaitingstate. The devices on which they should be cancelled can be specified. -
power list: Lists the power operations on the device and the states of the operations. Possible states for operations are:-
waiting: waiting to be executed -
busy: are being executed -
canceled: have been canceled -
done: have been executed
-
It is possible that power operations without an explicitly-scheduled execution time setting show up very briefly in the output of power list and power wait. However, the output displayed is almost always about the explicitly-scheduled power operations.
4.2.2 Power Operations With Base View
In Base View, executing the main power operations can be carried out as follows:
-
via the menu dropdown for a node. For example:
-
for the head node, via the navigation path
Devices>Head Nodes>Power -
for a regular node via the navigation path
Devices>Nodes>Power
-
-
via the menu dropdown for a category or group. For example, for the
defaultcategory, via the navigation pathGrouping>Categories>Power -
via the
Actionsbutton. TheActionsbutton is available when specific device has been selected. For example, for the head nodebasecm10theActionsbutton can be seen via the navigation pathDevices>Head Nodes[basecm10]> checkbox.Clicking on the
Actionsbutton then makes power operation buttons available (figure 4.2).

Figure 4.2: Actions button, accessing the power operations
4.2.3 Power Operations Through cmsh
Power operations on nodes can be carried out from within the device mode of cmsh, via the power command options.
4.2.3.1 Powering On
Powering on can be carried out on a list of nodes (here). Powering on node001, and nodes from node018 to node033 (output truncated):
Example
When a power operation is carried out on multiple devices, CMDaemon ensures that a 1 second delay occurs by default between successive devices. This helps avoid power surges on the infrastructure.
4.2.3.2 Delay Period Between Nodes
The delay period can be modified from within the device mode of cmsh, by using the -d|--delay option of the power command. For example, the preceding power command can be run with a shorter, 10ms delay with:
A 0-second delay (-d 0) should not be set for larger number of nodes, unless the power surge that this would cause has been taken into consideration.
4.2.3.3 Powering Up In Batches
Groups of nodes can be powered up “in batches”, according to power surge considerations. For example, to power up 3 racks at a time (“in batches of 3”), the -p|--parallel option is used:
Example
By default, there is a delay of 20s between batch commands. So, in the preceding example, there is a 20s pause before the each batch of the next three racks is powered up. For batch operation a delay of -d 0 is assumed, i.e. the nodes within in the rack are powered up without a built-in delay between the nodes of the rack.
4.2.3.4 Thread Use During Powering Up
The default number of threads that are started up to handle powering up of all the nodes is 32. If the hardware can cope with it, then it is possible to decrease startup time by increasing the default number of threads used to handle powerup, by editing the PowerThreadPoolSize advanced configuration directive in CMDaemon.
4.2.3.5 Powering Off Nodes
An example of powering off nodes is the following, where all nodes in the default category are powered off, with a 100ms delay between nodes (some output elided):
Example
4.2.3.6 Getting The Power Status
The power status command lists the status for devices:
Example
4.2.3.7 Getting The Power History
The power history command lists the last few power operations on nodes. By default it lists up to the last 8.
Example
4.2.3.8 The power Command Help Text
The help text for the power command is:
4.3 Monitoring Power
Monitoring power consumption is important since electrical power is an important component of the total cost of ownership for a cluster. The monitoring system of BCM collects power-related data from PDUs in the following metrics:
-
PDUBankLoad: Phase load (in amperes) for one (specified) bank in a PDU -
PDULoad: Total phase load (in amperes) for one PDU
Chapter 12 on cluster monitoring has more on metrics and how they can be visualized.
4.4 Switch Configuration To Survive Power Downs
Besides the nodes and the BMC interfaces being configured for power control, it may be necessary to check that switches can handle power on and off network operations properly. Interfaces typically negotiate the link speed down to reduce power while still supporting Wake On Lan and other features. During such renegotiations the switch may lose connectivity to the node or BMC interface. This can happen if dynamic speed negotiation is disabled on the switch. Dynamic speed negotiation should therefore be configured to be on on the switch in order to reduce the chance that a node does not provision from a powered down state.