# Presentation: 258797

## An API for the Process Manager Component

- Meeting at Argonne
- June 5-6, 2003

## Schematic of Process Management Component in Context

- QM

- PM

- MPD’s

- mpdrun

- XML
- file

- mpiexec

- (MPI Standard args)

- Brett’s job
- submission language

- interactive

- simple scripts
- using SSS XML

- SSS Components

- application
- processes

- SSS
- XML

- “Official” SSS side

- Prototype MPD-based
-  implementation side

- EM

- SD

- PM

- Sched

- NSM

## How should we proceed?

- Proposal:  voting should actually be on an explanatory document that includes
- Descriptions – text and motivations
- Examples – for each type of message, both simple and complicated
- Details – XML schemas
- What follows is just input to this process

## The Process Manager Interface

- The “other end” of interfaces to other components
- Service Directory
- Event Manager
- The commands supported, currently tested by interaction with both the SSS Queue Manager and standalone interactive scripts
- Create-process-group
- Kill-process-group
- Signal-process-group
- Get-process-group-info
- Del-process-group-info
- Checkpoint-process-group

## Some Examples - 1

**<create-process-group submitter='desai' totalprocs='32’**
**       ****output='discard'>**
**     ****<process-spec exec='/bin/foo' cwd='/etc' path='/bin:/usr/sbin‘**
**           ****range='1-32' co-process='tv-server'>**
**       ****<arg idx='1' value='-v'/>**
**     ****</process-spec>**
**     ****<host-spec>**
**       ****node1**
**       ****node2**
**     ****</host-spec>**
**   ****</create-process-group>**
**   ****yields:**
**   ****<process-group pgid='1'/>**

## Some Examples - 2

**  ****<get-process-group-info>**
**    ****<process-group pgid='1'/>**
**  ****</get-process-group-info>**
**  ****yields:**
**  ****<process-groups>**
**    ****<process-group submitter="desai" pgid='1' totalprocs="2">**
**      ****<process-spec cwd="/home/desai/dev/sss/clients” **
**           ****exec="/bin/hostname" **
**           ****path="/opt/bin:/home/desai/bin:/opt/bin:/usr/local/bin:**
**                 ****/usr/bin:/bin:/usr/bin/X11:/usr/games"/>**
**      ****<host-spec>**
**        ****topaz**
**        ****topaz**
**      ****</host-spec>**
**   ****<output> **
**      ****topaz**
**      ****topaz**
**   ****</output>**
**</process-group>**
**</process-groups>**

## Some Examples - 3

- Things like signal and kill process group work the same:
**<kill-process-group>**
**  ****<process-group pgid='1' submitter='*'/>**
**</kill-process-group>**
**yields**
**<process-groups>**
**  ****<process-group pgid='1' submitter='desai'/>**
**</process-groups>**

## Input Schema - 1

**<xsd:schema xmlns:xsd="**_[http://www.w3.org/2001/](http://www.w3.org/2001/XMLSchema)__[XMLSchema](http://www.w3.org/2001/XMLSchema)_**" xml:lang="en"> **
**      ****<xsd:annotation>**
**        ****<xsd:documentation>**
**          ****Process Manager component inbound schema**
**          ****SciDAC SSS project, 2002 Andrew Lusk **_[alusk@mcs.anl.gov](mailto:alusk@mcs.anl.gov)_
**        ****</xsd:documentation>**
**      ****</xsd:annotation>**
**   ****<xsd:include schemaLocation="pm-types.xsd"/>**
**   ****<xsd:complexType name="createpgType">**
**     ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**       ****<xsd:element name="process-spec" type="pg-spec"/>**
**       ****<xsd:element name="host-spec" type="xsd:string"/>**
**     ****</xsd:choice>**
**     ****<xsd:attribute name="submitter" type="xsd:string" use="required"/>**
**     ****<xsd:attribute name="totalprocs" type="xsd:string" use="required"/>**
**     ****<xsd:attribute name="output" type="xsd:string" use="required"/>**
**   ****</xsd:complexType>**

## Input Schema - 2

**   ****<xsd:element name="create-process-group" type="createpgType"/>**
**<xsd:element name="get-process-group-info">**
**      ****<xsd:complexType>**
**        ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**          ****<xsd:element name="process-group" type="pgRestrictionType"/>**
**        ****</xsd:choice>**
**      ****</xsd:complexType>**
**    ****</xsd:element>**
**<xsd:element name="del-process-group-info">**
**      ****<xsd:complexType>**
**        ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**          ****<xsd:element name="process-group" type="pgRestrictionType"/>**
**        ****</xsd:choice>**
**      ****</xsd:complexType>**
**    ****</xsd:element>**

## Input Schema - 3

**    ****<xsd:element name="signal-process-group">**
**      ****<xsd:complexType>**
**        ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**          ****<xsd:element name="process-group" type="pgRestrictionType"/>**
**        ****</xsd:choice>**
**        ****<xsd:attribute name="signal" type="xsd:string" use="required"/>**
**      ****</xsd:complexType>**
**    ****</xsd:element>**
**<xsd:element name="kill-process-group">**
**       ****<xsd:complexType>**
**         ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**           ****<xsd:element name="process-group" type="pgRestrictionType"/>**
**         ****</xsd:choice>**
**       ****</xsd:complexType>**
**     ****</xsd:element>**
**<xsd:element name="checkpoint-process-group">**
**      ****<xsd:complexType>**
**        ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**          ****<xsd:element name="process-group" type="pgRestrictionType"/>**
**        ****</xsd:choice>**
**      ****</xsd:complexType>**
**    ****</xsd:element>**
**  ****</xsd:schema>**

## Output Schema - 1

**    ****<xsd:schema xmlns:xsd="**_[http://www.w3.org/2001/](http://www.w3.org/2001/XMLSchema)__[XMLSchema](http://www.w3.org/2001/XMLSchema)_**" xml:lang="en">**
**      ****<xsd:annotation>**
**        ****<xsd:documentation>**
**          ****Process Manager component outbound schema**
**          ****SciDAC SSS project, 2002 Andrew Lusk **_[alusk@mcs.anl.gov](mailto:alusk@mcs.anl.gov)_
**        ****</xsd:documentation>**
**      ****</xsd:annotation>**
**<xsd:include schemaLocation="pm-types.xsd"/>**
**    ****<xsd:include schemaLocation="sss-error.xsd"/>**
**<xsd:element name="process-groups">**
**      ****<xsd:complexType>**
**        ****<xsd:choice minOccurs='0' maxOccurs='unbounded'>**
**          ****<xsd:element name="process-group" type="pgType"/>**
**        ****</xsd:choice>**
**      ****</xsd:complexType>**
**    ****</xsd:element>**
**    ****<xsd:element name="process-group" type="pgRestrictionType"/>****  <xsd:element name="error" type="SSSError"/>****</xsd:schema>**

## Types Schema - 1

**<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en">**
**  ****<xsd:annotation>**
**    ****<xsd:documentation>**
**      ****Process Manager component schema**
**      ****SciDAC SSS project, 2002 Andrew Lusk alusk@mcs.anl.gov**
**    ****</xsd:documentation>**
**  ****</xsd:annotation>**
**  ****<xsd:complexType name="argType">**
**    ****<xsd:attribute name="idx" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="value" type="xsd:string" use="required"/>**
**  ****</xsd:complexType>**
**  ****<xsd:complexType name="envType">**
**    ****<xsd:attribute name="name" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="value" type="xsd:string" use="required"/>**
**  ****</xsd:complexType>**
**  **

## Types Schema - 2

**  ****<xsd:complexType name="pg-spec">**
**    ****<xsd:choice minOccurs='0' maxOccurs='unbounded'>**
**      ****<xsd:element name="arg" type="argType"/>**
**      ****<xsd:element name="env" type="envType"/>**
**    ****</xsd:choice>**
**    ****<xsd:attribute name="range" type="xsd:string"/>**
**    ****<xsd:attribute name="user" type="xsd:string"/>**
**    ****<xsd:attribute name="co-process" type="xsd:string"/>**
**    ****<xsd:attribute name="exec" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="cwd" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="path" type="xsd:string" use="required"/>**
**  ****</xsd:complexType>**
**  ****<xsd:complexType name="procType">**
**    ****<xsd:attribute name="host" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="pid" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="exec" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="session" type="xsd:string" use="required"/>**
**  ****</xsd:complexType>**
**  **

## Types Schema - 3

**  ****<xsd:complexType name="procRestrictionType">**
**    ****<xsd:attribute name="host" type="xsd:string"/>**
**    ****<xsd:attribute name="pid" type="xsd:string"/>**
**    ****<xsd:attribute name="exec" type="xsd:string"/>**
**  ****</xsd:complexType>**
**  **
**  ****<xsd:complexType name="pgType">**
**    ****<xsd:choice minOccurs="1" maxOccurs="unbounded">**
**      ****<xsd:element name="process" type="procType"/>**
**    ****</xsd:choice>**
**    ****<xsd:choice minOccurs='0' maxOccurs='1'>**
**      ****<xsd:element name='output' type='xsd:string'/>**
**    ****</xsd:choice>**
**    ****<xsd:attribute name="pgid" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="submitter" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="totalprocs" type="xsd:string" use="required"/>**
**    ****<xsd:attribute name="output" type="xsd:string" use="required"/>**
**  ****</xsd:complexType>**
**  **

## Types Schema - 4

**  ****<xsd:complexType name="pgRestrictionType">**
**    ****<xsd:choice minOccurs="0" maxOccurs="unbounded">**
**      ****<xsd:element name="process" type="procRestrictionType"/>**
**    ****</xsd:choice>**
**    ****<xsd:attribute name="pgid" type="xsd:string"/>**
**    ****<xsd:attribute name="submitter" type="xsd:string"/>**
**    ****<xsd:attribute name="totalprocs" type="xsd:string"/>**
**  ****</xsd:complexType>**
**</xsd:schema>**

## Error Schema - 1

**<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en">**
**  ****<xsd:annotation>**
**    ****<xsd:documentation>**
**      ****Service Directory error schema**
**      ****SciDAC SSS project**
**      ****2003 Narayan Desai desai@mcs.anl.gov**
**    ****</xsd:documentation>**
**  ****</xsd:annotation>**
**  ****<xsd:simpleType name="ErrorType">**
**    ****<xsd:restriction base="xsd:string">**
**      ****<xsd:pattern value="Validation|Semantic|Data"/>**
**    ****</xsd:restriction>**
**  ****</xsd:simpleType>**
**  ****<xsd:complexType name="SSSError">**
**    ****<xsd:attribute name="type" type="ErrorType" use="optional"/>**
**  ****</xsd:complexType>**
**</xsd:schema>**