# Moab Cluster Suite Integration Guide

## Overview

Moab Cluster Suite configuration is quite complicated and is beyond the scope of any documents we could supply with SLURM. The best resource for Moab configuration information is the online documents at Cluster Resources Inc.: http://www.clusterresources.com/products/mwm/docs/slurmintegration.shtml.

## Configuration

First, download the Moab scheduler kit from their web site http://www.clusterresources.com/pages/products/moab-cluster-suite.php. Note: Moab version 4.5.0 or higher and SLURM version 1.1.10 or higher.

### SLURM configuration

Set the slurm.conf scheduler parameters as follows:

    SchedulerType=sched/wiki2
    SchedulerPort=7321

Running multiple jobs per mode can be accomplished using the Shared=yes parameter on partitions. The SelectType=select/cons_res parameter is not compatable with the sched/wiki plugin (both would try to schedule the individual processors within a node).

SLURM's wiki configuration is stored in a file specific to the wiki-plugin named wiki.conf. This file should be protected from reading by users. It only needs to be readable by SlurmUser (as configured in slurm.conf) and only needs to exist on computers where the slurmctld daemon executes. More information about wiki.conf is available in a man page distributed with SLURM.

The currently supported wiki.conf keywords include:

AuthKey is a DES based encryption key used to sign communctions between SLURM and Maui or Moab. This use of this key is essential to insure that a user not build his own program to cancel other user's jobs in SLURM. This should be a numeric value and match the the encryption key in Maui (--with-key on the configure line) or Moab (KEY parameter in the moab-private.cfg file). Note that SLURM's wiki plugin does not include a mechanism to submit new jobs, so even without this key nobody could run jobs as another user.

EPort is an event notification port in Moab. When a job is submitted to or terminates in SLURM, Moab is sent a message on this port to begin an attempt to schedule the computer. This numeric value should match EPORT configured in the moab.cnf file.

EHost is the event notification host for Moab. This identifies the computer on which the Moab daemons executes which should be notified of events.

JobAggregationTime is used to avoid notifying Moab of large numbers of events occuring about the same time. If an event occurs within this number of seconds since Moab was last notified of an event, another notification is not sent. This should be an integer number of seconds. The default value is 10 seconds. The value should match JOBAGGREGATIONTIME configured in the moab.cnf file.

JobPriority controls the scheduling of newly arriving jobs in SLURM. SLURM can either place all newly arriving jobs in a HELD state (priority = 0) and let Moab decide when and where to run the jobs or SLURM can control when and where to run jobs. In the later case, Moab can modify the priorities of pending jobs to re-order the job queue or just monitor system state. Possible values are "hold" and "run" with "hold" being the default.

Here is a sample wiki.conf file

    # wiki.conf
    # SLURM's wiki plugin configuration file
    #
    # Matches KEY in moab-private.cfg
    AuthKey=1234
    #
    # Have Moab control job scheduling
    JobPriority=hold
    #
    # Moab event notification port, matches EPORT in moab.cfg
    EPort=15017
    # Moab event notification host, where the Moab daemon runs
    #EHost=tux0
    #
    # Moab event notifcation throttle, matches JOBAGGREGATIONTIME
    # in moab.cfg (integer value in seconds)
    JobAggregationTime=15

### Moab Configuration

Moab has support for SLURM's WIKI interface by default. Specify this interface in the moab.cfg file as follows:

    RMCFG[slurm]         TYPE=wiki:slurm AUTHTYPE=CHECKSUM

In moab-private.cfg specify the private key as follows:

    KEY=1234

Insure that this file is protected from viewing by users.

Last modified 18 December 2006