Scalable Systems Software Node Object Specification

SSS Node Object Specification
Release Version 3.1.0
26 April 2011

Scott Jackson, PNNL
David Jackson, Ames Lab
Brett Bode, Ames Lab

Status of This Memo

This is a specification of the node object to be used by Scalable Systems Software compliant components. It is envisioned for this specification to be used in conjunction with the SSSRMAP protocol with the node object passed in the Data field of Requests and Responses. Queries can be issued to a node-cognizant component in the form of modified XPATH expressions to the Get field to extract specific information from the node object as described in the SSSRMAP protocol.

Abstract

This document describes the syntax and structure of the SSS node object. This node model takes into account various node property categories such as whether it represents a configured, available or utilized property.

Table of Contents

1.0 Introduction

This specification proposes a standard XML representation for a node object for use by the various components in the SSS Resource Management System. This object will be used in multiple contexts and by multiple components. It is anticipated that this object will be passed via the Data Element of SSSRMAP Requests and Responses.

1.1 Goals

There are several goals motivating the design of this representation.

It needs to be inherently flexible. We recognize we will not be able to exhaustively include the ever-changing node properties and capabilities that constantly arise.

The same node object should be used at all stages of its lifecycle. This object needs to distinguish between configured, available and utilized properties of a node.

Its design takes into account the properties and structure required to function in a meta or grid environment. It should eventually include the capability of resolving namespace and locality issues, though the earliest versions will ignore this requirement.

One should not have to make multiple queries to obtain a single piece of information -- i.e. there should not be two mutually exclusive ways to represent a node resource.

Needs to support resource metric as well as unit specifications.

1.2 Examples

Simple Example

This example shows a simple expression of the Node object.

<Node>
  <Id>Node64</Id>
  <Configured>
    <Processors>2</Processors>
    <Memory>512</Memory>
  </Configured>
</Node>
Elaborate Example

This example shows a more elaborate Node object.

<Node>
  <Id>64</Id>
  <Name>Netpipe2</Name>
  <Feature>BigMem</Feature>
  <Feature>NetOC12</Feature>
  <Opsys>AIX</Opsys>
  <Arch>Power4</Arch>
  <Configured>
    <Processors>16</Processors>
    <Memory units=”MB”>512</Memory>
    <Swap>512</Swap>
  </Configured>
  <Available>
    <Processors>7</Processors>
    <Memory metric=”Instantaneous”>143</Memory>
  </Available>
  <Utilized>
    <Processors wallDuration=”3576”>8</Processors>
    <Memory metric=”Average” wallDuration=”3576”>400</Memory>
  </Utilized>
</Node>

2.0 Conventions Used in This Document

2.1 Keywords

The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in RFC2119.

2.2 Table Column Interpretations

In the property tables, the columns are interpreted to have the following meanings:

Name of the XML element (xsd:element)
Data type defined by xsd (XML Schema Definition) as:
Stringxsd:string(a finite length sequence of printable characters)
Integerxsd:integer(a signed finite length sequence of decimal digits)
Floatxsd:float (single-precision 32-bit floating point)
Booleanxsd:boolean (consists of the literals “true” or “false”)
DateTimexsd:dateTime (discreet time values are represented in ISO 8601 extended format CCYY-MM-DDThh:mm:ss where "CC" represents the century, "YY" the year, "MM" the month and "DD" the day. The letter "T" is the date/time separator and "hh", "mm", "ss" represent hour, minute and second respectively. This representation may be immediately followed by a "Z" to indicate Coordinated Universal Time (UTC) or, to indicate the time zone, i.e. the difference between the local time and Coordinated Universal Time, immediately followed by a sign, + or -, followed by the difference from UTC.)
Durationxsd:duration (a duration of time is represented in ISO 8601 extended format PnYnMnDTnHnMnS, where nY represents the number of years, nM the number of months, nD the number of days, 'T' is the date/time separator, nH the number of hours, nM the number of minutes and nS the number of seconds. The number of seconds can include decimal digits to arbitrary precision.)
Brief description of the meaning of the property
This column indicates whether the given property has to appear within the parent element. It assumes the following meanings:
MUSTThis property is REQUIRED when the parent is specified.
SHOULDA compliant implementation SHOULD support this property.
MAYA compliant implementation MAY support this property.
The column indicates whether a compliant implementation has to support the given property.
MUSTA compliant implementation MUST support this property.
SHOULDA compliant implementation SHOULD support this property.
MAYA compliant implementation MAY support this property.
Some properties may be categorized into one of several categories. Letters in this column indicate that the given property can be classified in the the following property categories.
CThis property can be encompassed in a Configured element.
AThis property can be encompassed in an Available element.
UThis property can be encompassed in a Utilized element.

2.3 Element Syntax Cardinality

The cardinality of elements in the element syntax sections may make use of regular expression wildcards with the following meanings:

Zero or more occurrences
One or more occurrences
Zero or one occurrences

The absence of one of these symbols implies one and only one occurrence.

3.0 The Node Model

The primary element within the node model is a node. One can speak of some node properties as being a configured, available or utilized property of the node.

4.0 Node Element

The Node element is the root element of a node object and is used to encapsulate a node.

  • A node object MUST have exactly one Node element.
  • A compliant implementation MUST support this element.
  • A node MUST specify one or more Node Properties.

 

4.1 Uncategorized Node Properties

Uncategorized Node Properties are properties that apply to the node as a whole and do not need to be distinguished between being configured, available or utilized. These include the node id and other optional node properties.

Simple Node Properties

Simple (unstructured) node properties are enumerated in Table 1.

Table 1: Simple Node Properties
Element Name Type Description Appearance Compliance
String Node identifier MUST MUST
String Node name or pattern MAY MAY
String Operating System MAY SHOULD
String Architecture MAY SHOULD
String Description of the node MAY MAY
String State of the node. Valid states may include Offline, Configured, Unknown, Idle, and Busy. SHOULD MUST
String Arbitrary named features of the node (comma-delimited string) MAY SHOULD
Extension Element

The Extension element provides a means to pass extensible properties with the node object. Some applications may find it easier to deal with a named extension property than discover and handle elements for which they do not understand or anticipate by name.

  • A compliant implementation MAY support this element.
  • This element MUST have a name attribute that is of type String and represents the name of the extension property. A compliant implementation MUST support this attribute if this element is supported.
  • This element MAY have a type attribute that is of type String and provides a hint about the context within which the property should be understood. A compliant implementation SHOULD support this attribute if this element is supported.
  • The character content of this element is of type String and is the value of the extension property.

 

The following is an example of an Extension element:

<Extension type=”Chemistry” name=”Software”>NWChem</Extension>

4.2 Property Categories

Certain node properties (particularly consumable resources) need to be classified as being in a particular category. This is done when it is necessary to distinguish between a property that is configured versus a property that is available or utilized. For example, a node might be configured with 16 processors. At a particular time, 8 might be utilized, 7 might be available and 1 disabled. When a node property must be categorized to be understood properly, the property MUST be enveloped within the appropriate Property Category Element.

Configured Element

A configured node property reflects resources pertaining to the node that could in principle be used though they may not be available at this time. This information could be used to determine if a job could ever conceivably run on a given node.

  • A compliant implementation MUST support this element.

 

The following is an example of using Configured Properties:

<Configured>
  <Processors>16</Processors>
  <Memory units=”MB”>512</Memory>
</Configured>
Available Element

An available node property refers to a resource that is currently available for use.

  • A compliant implementation SHOULD support this element.

The following is an example of specifying available properties:

<Available>
  <Processors>7</Processors>
  <Memory units=”MB”>256</Memory>
</Available>
Utilized Element

A utilized node property reflects resources that are currently utilized.

  • A compliant implementation SHOULD support this element.

The following is an example of specifying utilized properties:

<Utilized>
  <Processors>8</Processors>
  <Memory metric=”Average”>207</Memory>
</Utilized>

4.3 Categorized Node Properties

Consumable Resources

Consumable Resources are a special group of node properties that can have additional attributes and can be used in multiple categories. In general a consumable resource is a resource that can be consumed in a measurable quantity.

  • A consumable resource MUST be categorized as being a configured, available or utilized node property by being a child element of a Configured, Available or Utilized element respectively.
  • A consumable resource MAY have a units attribute that is of type String that specifies the units by which it is being measured. If this attribute is omitted, a default unit is implied. A compliant implementation MAY support this attribute if the element is supported.
  • A consumable resource MAY have a metric attribute that is of type String that specifies the type of measurement being described. For example, the measurement may be a Total, an Average, a Min or a Max. A compliant implementation MAY support this attribute if the element is supported.
  • A consumable resource MAY have a wallDuration attribute of type Duration that indicates the amount of time for which that resource was used. This need only be specified if the resource was used for a different amount of time than the wallDuration for the step. A compliant implementation MAY support this attribute if the element is supported.
  • A consumable resource MAY have a consumptionRate attribute of type Float that indicates the average percentage that a resource was used over its wallDuration. For example, an overbooked SMP running 100 jobs across 32 processors may wish to scale the usage and charge by the average fraction of processor usage actually delivered. A compliant implementation MAY support this attribute if the element is supported.

 

A list of simple consumable resources is listed in Table 2.

Table 2: Consumable Resource Node Properties
Element Name Type Description Appearance Compliance Categories
Integer Number of processors MAY MUST CAU
Float Amount of memory MAY SHOULD CAU
Float Amount of disk MAY SHOULD CAU
Float Amount of virtual memory MAY MAY CAU
Float Amount of network MAY MAY CAU

The following are two examples for specifying a consumable resource:

<Memory metric=”Max” units=”GB”>483</Memory>
<Processors wallDuration=”1234” consumptionRate=”0.63”>4</Processors>
Resource Element

In addition to the consumable resources enumerated in the above table, an extensible consumable resource is defined by the Resource element.

  • A compliant implementation SHOULD support this element.
  • This element MAY appear zero or more times within a given set of node properties.
  • Like the other consumable resources, this property MUST be categorized as a configured, available or utilized property by being encompassed in the appropriate elements.
  • This element is of type Float.
  • It shares the other same properties and attributes as the other consumable resources but it requires an additional name (and optional type) attribute to describe it.
  • This element MUST have a name attribute of type String that indicates the type of consumable resource being measured. A compliant implementation MUST support this attribute if the element is supported.
  • This element MAY have a type attribute of type String that distinguishes it within a general resource class. A compliant implementation SHOULD support this attribute if the element is supported.

The following are two examples for specifying a Resource element:

<Resource name=”License” type=”MATLAB”>1</Resource>
<Resource name=”Telescope” type=”Zoom2000” wallDuration=”750” metric=”KX”>10</Resource>

4.4 Node Reference

When a simple reference to a predefined node is needed in an encapsulating element, a Node element is used with the text content being the node id:

<Node>node1</Node>
  • This element MAY have an aggregation attribute of type String that provides a way to indicate multiple values with a single expression. A compliant implementation MAY support the aggregation attribute if the Feature element is supported. Possible values for this attribute include:
    • List a comma-separated list of features
    • Pattern a regular expression (perl5) matching desired features
    • Range a range of nodes of the form: <prefix>[5-23,77]
  • If an aggregation attribute is specified with the value of List, this element MAY also have a delimiter attribute of type String that indicates what delimiter is used to separate list elements. The default list delimiter is a comma.
  • This element MAY have a count attribute of type Integer that indicates the instance count of the specified node(s).

The following is an another example of a Node element:

<Node aggregation=”Pattern”>node[1-5]</Node>

Appendix A

Units of Measure Abbreviations

Abbreviation Definition Quantity
byte 1 byte
Kilobyte 2^10 bytes
Megabyte 2^20 bytes
Gigabyte 2^30 bytes
Terabyte 2^40 bytes
Petabyte 2^50 bytes
Exabyte 2^60 bytes
Aettabyte 2^70 bytes
Yottabyte 2^80 bytes
Nonabyte 2^90 bytes
Doggabyte 2^100 bytes

Copyright © 2012 Adaptive Computing Enterprises, Inc.®