Modifying ECCE to work with SLURM

In the ECCE file apps/siteconfig/QueueManagers, add

#
QueueManagers:      LoadLeveler \
            Maui \
            EASY \
            PBS \
            LSF \
            Moab \
            SGE \
            Shell\
            Slurm

#

and add this to the end of the file:

###############################################################################
# SLURM
# Simple Linux Utility for Resource Management
#
#
Slurm|submitCommand:           sbatch ##script##
Slurm|cancelCommand:           scancel ##id##
Slurm|queryJobCommand:         squeue
Slurm|queryMachineCommand:     sinfo -p ##queue##
Slurm|queryQueueCommand:       squeue -a
Slurm|queryDiskUsageCommand:   df -k
Slurm|jobIdParseExpression:    .*
Slurm|jobIdParseLeadingText:   job

Also, edit apps/scripts/eccejobmonitor and add (without line numers):

2124 LogMsg "Globus status from eccejobstore: $state";
2125 }
2126 elsif ($q eq 'slurm') 
2127 {
2128 $cmd = "squeue 2>&1";
2129 if (open(QUERY, "$cmd |"))
2130 {
2131 $gotState = 0;
2132 while ()
2133 { 
2134 LogMsg "JobCheck: Slurm qstat line: $_";
2135 if (/^\s*$id/)
2136 {
2137 my $state = (split)[5];
2138 
2139 &MsgSendUp("Slurm job id '$id' in state '$state'");
2140 
2141 if (grep {$state eq $_} qw{R
2142 t})
2143 {
2144 $status = $JOB_STATE_RUNNING;
2145 }
2146 elsif (grep {$state eq $_} qw{PD})
2147 {
2148 $status = $JOB_STATE_PENDING;
2149 }
2150 $gotState = 1;
2151 last;
2152 }
2153 }
2154 if ($gotState == 0)
2155 { 
2156 if ($gJobCheckState != $JOB_STATE_NONE)
2157 {
2158 $status = $JOB_STATE_DONE;
2159 }
2160 }
2161 close QUERY;

Now when you’re adding or modifying a machine with ecce -admin you can select Slurm. You’ll still need to edit your CONFIG.xxxx file after the machine creation and add account information etc.

 

Leave a Reply

Your email address will not be published. Required fields are marked *