Create and Use Custom Node Groups

Applies To: Windows HPC Server 2008

This topic describes common criteria for creating custom node groups, and how you can use node groups to partition, schedule, monitor, and manage your Windows® HPC Server 2008 cluster.

This topic also includes an example of how to sort nodes and assign them to a new node group based on the Location property.

Using custom node groups

A node group is a named collection of compute nodes. Nodes can belong to more than one group. You can use custom node groups to:

  • Monitor, manage, and diagnose all the nodes in a group at once.

  • Filter the node list by node group, and then run commands or perform actions on the returned subset of nodes.

  • Simplify job resource allocation. Define the NodeGroups job property in your job templates so that certain types of jobs run on certain types of nodes. For example, for jobs that require “AppX”, create a template with the node group property equal to “HaveAppX”.

  • Facilitate resource selection for individual jobs. For example, if a user submits a job that specifies the node groups “HaveAppX” and “HaveBigMemory”, then the job will only run on nodes that fall into both groups.

For an example of how to use node groups in conjunction with job templates, see Steps: Partitioning a Group of Nodes for a Group of Users.

Common criteria for grouping nodes

The following list describes common criteria for grouping nodes, and provides some examples of how you can use these types of node groups to manage your cluster:

  • Physical location (by datacenter or chassis): Perform maintenance tasks on nodes based on datacenter or rack location.

  • Network location (shared switch): Schedule jobs based on network affinity of nodes for faster input/output. Run connectivity diagnostics based on the network location of a node.

  • Installed applications or services: Specify application-based node groups in job templates or when submitting a job. Run latency diagnostics, such as an MPI Ping Pong test, between nodes that have specific applications or services installed.

  • Hardware configuration: Create groups such as “HaveBigMemory” or “HaveGPU” (Graphics Processing Unit). Specify hardware-based node groups in job templates or when submitting a job.

  • Staging or production use: Partition staging nodes for testing new applications and debugging.

  • Administrator or user group: Partition your cluster according to who runs or uses it.

Example: Sorting nodes and adding them to new groups based on location

The node Location property can store data center, rack, and chassis information about the node.

The following procedure describes how you can use either HPC Cluster Manager or HPC PowerShell to sort your nodes by location, add the nodes to new node groups based on their data center value, and run diagnostic tests to verify node connectivity.

In the example, the Data Center values are either “East” or “West”, and the nodes are added to groups called “DataCenterEast” and “DataCenterWest”, respectively.

Steps HPC Cluster Manager HPC PowerShell

1. View the location property values for all nodes, and sort nodes by location.

  1. In List view, right-click anywhere on the column headers then click Column Chooser.

  2. Add Location to the list of displayed columns.

  3. Click the Location column header to sort the node list.

Get-HpcNode|select netbiosname, location|sort location

2. Create a new node group called “DataCenterEast” and add nodes to the new node group.

  1. In List view, select all the nodes that are in Data Center “East”.

  2. Right-click your selection, point to Groups, then click New Group.

  3. In the New Group dialog box, in Name, type DataCenterEast then click OK.

New-HpcGroup DataCenterEast

Get-HpcNode|where {$_.Location –like “*DataCenter=`”East`”*”}|Add-HpcGroup –name DataCenterEast

3. Create a new node group called “DataCenterWest” and add nodes to the new node group.

  1. Select the nodes that are in Data Center “West”.

  2. Right-click your selection, then add them to a new group that you name “DataCenterWest”.

New-HpcGroup DataCenterWest

Get-HpcNode|where {$_.Location –like “*DataCenter=`”West`”*”}|Add-HpcGroup –name DataCenterWest

4. Run the Connectivity suite diagnostic tests on all nodes in “DataCenterEast”.

  1. In Diagnostics, select all the tests in the Connectivity suite.

  2. Right-click your selection, then click Run.

  3. In the dialog box, select the node group “DataCenterEast”, then click Run.

Invoke-HpcTest –GroupName DataCenterEast –test (Get-HpcTest|where {$_.Suite –eq “Connectivity”})

Notes about the PowerShell syntax in the example

  • Use the select cmdlet to specify the properties you want to see, and sort to organize the output.

  • The PowerShell escape character is the backward apostrophe (`). Use the backward apostrophe (`) to make the double quotes () around the data center value literal.

  • Use the where cmdlet to filter the output from the node list, then use the pipe symbol (“|”) to pipe the filtered list to the Add-HpcGroup cmdlet.

  • $_ is a placeholder for the objects that are piped into the where cmdlet. You can evaluate any property of the object that you pipe in. For example:

    • To get all nodes with less than (-lt) 8 cores, enter the following command:

      Get-HpcNode|where {$_.ProcessorCores –lt 8}

    • To get all nodes with memory greater than or equal to (-ge) 4000 MB, enter the following command:

      Get-HpcNode|where {$_.Memory –ge 4000}

  • The cmdlets select and where are shorthand aliases for select-object and where-object, respectively.

  • For more information about Windows PowerShell commands, see Windows PowerShell Core (https://go.microsoft.com/fwlink/?LinkId=154268)

Additional considerations

  • To add or modify node location information, right-click one or more nodes in HPC Cluster Manager, then click Edit. Alternately, you can perform the same action using the Set-HpcNode cmdlet:

    Set-HpcNode –Name Node1 –DataCenter East –Rack 01 –Chassis 001

  • If you are adding compute nodes to your cluster by importing a node XML file, you can associate properties to compute nodes at the time of deployment. For example, in the XML file you can specify the names of the node groups to which each node should be added. For more information, see Creating a Node XML File in Windows HPC Server 2008 Step-by-Step Guide.

Additional references