In the ECCE file apps/siteconfig/QueueManagers, add
#
QueueManagers: LoadLeveler \
Maui \
EASY \
PBS \
LSF \
Moab \
SGE \
Shell\
Slurm
#
- <span class="com">#</span><span class="pln">
- </span><span class="typ">QueueManagers</span><span class="pun">:</span><span class="pln"> </span><span class="typ">LoadLeveler</span><span class="pln"> \
- </span><span class="typ">Maui</span><span class="pln"> \
- EASY \
- PBS \
- LSF \
- </span><span class="typ">Moab</span><span class="pln"> \
- SGE \
- </span><span class="typ">Shell</span><span class="pln">\
- </span><span class="typ">Slurm</span><span class="pln">
- </span><span class="com">#</span>
<span class="com">#</span><span class="pln">
</span><span class="typ">QueueManagers</span><span class="pun">:</span><span class="pln"> </span><span class="typ">LoadLeveler</span><span class="pln"> \
</span><span class="typ">Maui</span><span class="pln"> \
EASY \
PBS \
LSF \
</span><span class="typ">Moab</span><span class="pln"> \
SGE \
</span><span class="typ">Shell</span><span class="pln">\
</span><span class="typ">Slurm</span><span class="pln">
</span><span class="com">#</span>
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
- <span class="com">###############################################################################</span><span class="pln">
- </span><span class="com"># SLURM</span><span class="pln">
- </span><span class="com"># Simple Linux Utility for Resource Management</span><span class="pln">
- </span><span class="com">#</span><span class="pln">
- </span><span class="com">#</span><span class="pln">
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">submitCommand</span><span class="pun">:</span><span class="pln"> sbatch </span><span class="com">##script##</span><span class="pln">
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">cancelCommand</span><span class="pun">:</span><span class="pln"> scancel </span><span class="com">##id##</span><span class="pln">
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryJobCommand</span><span class="pun">:</span><span class="pln"> squeue
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryMachineCommand</span><span class="pun">:</span><span class="pln"> sinfo </span><span class="pun">-</span><span class="pln">p </span><span class="com">##queue##</span><span class="pln">
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryQueueCommand</span><span class="pun">:</span><span class="pln"> squeue </span><span class="pun">-</span><span class="pln">a
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryDiskUsageCommand</span><span class="pun">:</span><span class="pln"> df </span><span class="pun">-</span><span class="pln">k
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">jobIdParseExpression</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.*</span><span class="pln">
- </span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">jobIdParseLeadingText</span><span class="pun">:</span><span class="pln"> job</span>
<span class="com">###############################################################################</span><span class="pln">
</span><span class="com"># SLURM</span><span class="pln">
</span><span class="com"># Simple Linux Utility for Resource Management</span><span class="pln">
</span><span class="com">#</span><span class="pln">
</span><span class="com">#</span><span class="pln">
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">submitCommand</span><span class="pun">:</span><span class="pln"> sbatch </span><span class="com">##script##</span><span class="pln">
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">cancelCommand</span><span class="pun">:</span><span class="pln"> scancel </span><span class="com">##id##</span><span class="pln">
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryJobCommand</span><span class="pun">:</span><span class="pln"> squeue
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryMachineCommand</span><span class="pun">:</span><span class="pln"> sinfo </span><span class="pun">-</span><span class="pln">p </span><span class="com">##queue##</span><span class="pln">
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryQueueCommand</span><span class="pun">:</span><span class="pln"> squeue </span><span class="pun">-</span><span class="pln">a
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">queryDiskUsageCommand</span><span class="pun">:</span><span class="pln"> df </span><span class="pun">-</span><span class="pln">k
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">jobIdParseExpression</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.*</span><span class="pln">
</span><span class="typ">Slurm</span><span class="pun">|</span><span class="pln">jobIdParseLeadingText</span><span class="pun">:</span><span class="pln"> job</span>
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;
- <span class="lit">2124</span><span class="pln"> </span><span class="typ">LogMsg</span><span class="pln"> </span><span class="str">"Globus status from eccejobstore: $state"</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2125</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2126</span><span class="pln"> </span><span class="kwd">elsif</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$q eq </span><span class="str">'slurm'</span><span class="pun">)</span><span class="pln">
- </span><span class="lit">2127</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2128</span><span class="pln"> $cmd </span><span class="pun">=</span><span class="pln"> </span><span class="str">"squeue 2>&1"</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2129</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">open</span><span class="pun">(</span><span class="pln">QUERY</span><span class="pun">,</span><span class="pln"> </span><span class="str">"$cmd |"</span><span class="pun">))</span><span class="pln">
- </span><span class="lit">2130</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2131</span><span class="pln"> $gotState </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2132</span><span class="pln"> </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">()</span><span class="pln">
- </span><span class="lit">2133</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2134</span><span class="pln"> </span><span class="typ">LogMsg</span><span class="pln"> </span><span class="str">"JobCheck: Slurm qstat line: $_"</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2135</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="str">/^\s*$id/</span><span class="pun">)</span><span class="pln">
- </span><span class="lit">2136</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2137</span><span class="pln"> </span><span class="kwd">my</span><span class="pln"> $state </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">split</span><span class="pun">)[</span><span class="lit">5</span><span class="pun">];</span><span class="pln">
- </span><span class="lit">2138</span><span class="pln">
- </span><span class="lit">2139</span><span class="pln"> </span><span class="pun">&</span><span class="typ">MsgSendUp</span><span class="pun">(</span><span class="str">"Slurm job id '$id' in state '$state'"</span><span class="pun">);</span><span class="pln">
- </span><span class="lit">2140</span><span class="pln">
- </span><span class="lit">2141</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">grep </span><span class="pun">{</span><span class="pln">$state eq $_</span><span class="pun">}</span><span class="pln"> qw</span><span class="pun">{</span><span class="pln">R
- </span><span class="lit">2142</span><span class="pln"> t</span><span class="pun">})</span><span class="pln">
- </span><span class="lit">2143</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2144</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_RUNNING</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2145</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2146</span><span class="pln"> </span><span class="kwd">elsif</span><span class="pln"> </span><span class="pun">(</span><span class="pln">grep </span><span class="pun">{</span><span class="pln">$state eq $_</span><span class="pun">}</span><span class="pln"> qw</span><span class="pun">{</span><span class="pln">PD</span><span class="pun">})</span><span class="pln">
- </span><span class="lit">2147</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2148</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_PENDING</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2149</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2150</span><span class="pln"> $gotState </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2151</span><span class="pln"> </span><span class="kwd">last</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2152</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2153</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2154</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$gotState </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln">
- </span><span class="lit">2155</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2156</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$gJobCheckState </span><span class="pun">!=</span><span class="pln"> $JOB_STATE_NONE</span><span class="pun">)</span><span class="pln">
- </span><span class="lit">2157</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- </span><span class="lit">2158</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_DONE</span><span class="pun">;</span><span class="pln">
- </span><span class="lit">2159</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2160</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
- </span><span class="lit">2161</span><span class="pln"> close QUERY</span><span class="pun">;</span>
<span class="lit">2124</span><span class="pln"> </span><span class="typ">LogMsg</span><span class="pln"> </span><span class="str">"Globus status from eccejobstore: $state"</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2125</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2126</span><span class="pln"> </span><span class="kwd">elsif</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$q eq </span><span class="str">'slurm'</span><span class="pun">)</span><span class="pln">
</span><span class="lit">2127</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2128</span><span class="pln"> $cmd </span><span class="pun">=</span><span class="pln"> </span><span class="str">"squeue 2>&1"</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2129</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">open</span><span class="pun">(</span><span class="pln">QUERY</span><span class="pun">,</span><span class="pln"> </span><span class="str">"$cmd |"</span><span class="pun">))</span><span class="pln">
</span><span class="lit">2130</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2131</span><span class="pln"> $gotState </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2132</span><span class="pln"> </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">()</span><span class="pln">
</span><span class="lit">2133</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2134</span><span class="pln"> </span><span class="typ">LogMsg</span><span class="pln"> </span><span class="str">"JobCheck: Slurm qstat line: $_"</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2135</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="str">/^\s*$id/</span><span class="pun">)</span><span class="pln">
</span><span class="lit">2136</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2137</span><span class="pln"> </span><span class="kwd">my</span><span class="pln"> $state </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">split</span><span class="pun">)[</span><span class="lit">5</span><span class="pun">];</span><span class="pln">
</span><span class="lit">2138</span><span class="pln">
</span><span class="lit">2139</span><span class="pln"> </span><span class="pun">&</span><span class="typ">MsgSendUp</span><span class="pun">(</span><span class="str">"Slurm job id '$id' in state '$state'"</span><span class="pun">);</span><span class="pln">
</span><span class="lit">2140</span><span class="pln">
</span><span class="lit">2141</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">grep </span><span class="pun">{</span><span class="pln">$state eq $_</span><span class="pun">}</span><span class="pln"> qw</span><span class="pun">{</span><span class="pln">R
</span><span class="lit">2142</span><span class="pln"> t</span><span class="pun">})</span><span class="pln">
</span><span class="lit">2143</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2144</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_RUNNING</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2145</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2146</span><span class="pln"> </span><span class="kwd">elsif</span><span class="pln"> </span><span class="pun">(</span><span class="pln">grep </span><span class="pun">{</span><span class="pln">$state eq $_</span><span class="pun">}</span><span class="pln"> qw</span><span class="pun">{</span><span class="pln">PD</span><span class="pun">})</span><span class="pln">
</span><span class="lit">2147</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2148</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_PENDING</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2149</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2150</span><span class="pln"> $gotState </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2151</span><span class="pln"> </span><span class="kwd">last</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2152</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2153</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2154</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$gotState </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln">
</span><span class="lit">2155</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2156</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">$gJobCheckState </span><span class="pun">!=</span><span class="pln"> $JOB_STATE_NONE</span><span class="pun">)</span><span class="pln">
</span><span class="lit">2157</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="lit">2158</span><span class="pln"> $status </span><span class="pun">=</span><span class="pln"> $JOB_STATE_DONE</span><span class="pun">;</span><span class="pln">
</span><span class="lit">2159</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2160</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="lit">2161</span><span class="pln"> close QUERY</span><span class="pun">;</span>
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.