<!--#include virtual="header.txt"-->

<h1>Large Cluster Administration Guide</h1>

<p>This document contains Slurm administrator information specifically
for clusters containing 1,024 nodes or more.
Some examples of large systems currently managed by Slurm are:
<ul>
<li>Frontier at Oak Ridge National Laboratory (ORNL) with 8,699,904 cores.</li>
<li>Tianhe-2 at the National University of Defense Technology in China with
4,981,760 cores.</li>
<li>Perlmutter at National Energy Research Scientific Computing (NERSC) with
761,856 cores.</li>
</ul>
Slurm operation on systems orders of magnitude larger has been validated
using emulation.
Getting optimal performance at that scale does require some tuning and
this document should help get you off to a good start.
A working knowledge of Slurm should be considered a prerequisite
for this material.</p>

<h2 id="perf">Performance<a class="slurm_link" href="#perf"></a></h2>

<p>Times below are for execution of an MPI program printing "Hello world" and
exiting and includes the time for processing output. Your performance may
vary due to differences in hardware, software, and configuration.</p>
<ul>
<li>1,966,080 tasks on 122,880 compute nodes of a BlueGene/Q: 322 seconds</li>
<li>30,000 tasks on 15,000 compute nodes of a Linux cluster: 30 seconds</li>
</ul>

<h2 id="sys_config">System Configuration
<a class="slurm_link" href="#sys_config"></a>
</h2>

<p>Three system configuration parameters must be set to support a large number
of open files and TCP connections with large bursts of messages. Changes can
be made using the <b>/etc/rc.d/rc.local</b> or <b>/etc/sysctl.conf</b>
script to preserve changes after reboot. In either case, you can write values
directly into these files
(e.g. <i>"echo 388067 &gt; /proc/sys/fs/file-max"</i>).</p>
<ul>
<li><b>/proc/sys/fs/file-max</b>:
The maximum number of concurrently open files. The appropriate amount is highly
dependent on system specs and workload. We recommend starting with a minimum of
388067 or the default for your OS, whichever is greater. This may need to be
adjusted upwards, depending on your needs.</li>
<li><b>/proc/sys/net/ipv4/tcp_max_syn_backlog</b>:
Maximum number of remembered connection requests, which still have not
received an acknowledgment from the connecting client.
The default value is 1024 for systems with more than 128Mb of memory, and 128
for low memory machines. If server suffers of overload, try to increase this
number.</li>
<li><b>/proc/sys/net/core/somaxconn</b>:
Limit of socket listen() backlog, known in userspace as SOMAXCONN. Defaults to
128. The value should be raised substantially to support bursts of request.
For example, to support a burst of 1024 requests, set somaxconn to 1024.</li>
</ul>

<p>The transmit queue length (<b>txqueuelen</b>) may also need to be modified
using the ifconfig command. A value of 4096 has been found to work well for one
site with a very large cluster
(e.g. <i>"ifconfig <interface> txqueuelen 4096"</i>).</p>

<h3 id="process_limit">Thread/Process Limit
<a class="slurm_link" href="#process_limit"></a>
</h3>

<p>There is a newly introduced limit in SLES 12 SP2 (used on Cray systems
with CLE 6.0UP04, to be released mid-2017).
The version of systemd shipped with SLES 12 SP2 contains support for the
<a href="https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP2/#fate-320358">
PIDs cgroup controller</a>.
Under the new systemd version, each init script or systemd service is limited
to 512 threads/processes by default.
This could cause issues for the slurmctld and slurmd daemons on large clusters
or systems with a high job throughput rate.
To increase the limit beyond the default:</p>
<ul>
<li>If using a systemd service file: Add <i>TasksMax=N</i> to the [Service]
 section. N can be a specific number, or special value <i>infinity</i>.</li>
<li>If using an init script: Create the file<br>
/etc/systemd/system/&lt;init script name&gt;.service.d/override.conf<br>
with these contents:
<pre>
  [Service]
  TasksMax=N
</pre></li>
</ul></p>
<p>Note: Earlier versions of systemd that don't support the PIDs cgroup
controller simply ignore the TasksMax setting.</p>

<h2 id="limits">User Limits<a class="slurm_link" href="#limits"></a></h2>

<p>The <b>ulimit</b> values in effect for the <b>slurmctld</b> daemon should
be set quite high for memory size, open file count and stack size.</p>

<h2 id="select_type">Node Selection Plugin (SelectType)
<a class="slurm_link" href="#select_type"></a>
</h2>

<p>While allocating individual processors within a node is great
for smaller clusters, the overhead of keeping track of the individual
processors and memory within each node adds significant overhead.
For best scalability, allocate whole nodes using <i>select/linear</i>
and avoid <i>select/cons_tres</i>.</p>

<h2 id="acct_gather">Job Accounting Gather Plugin (JobAcctGatherType)
<a class="slurm_link" href="#acct_gather"></a>
</h2>

<p>Job accounting relies upon the <i>slurmstepd</i> daemon on each compute
node periodically sampling data.
This data collection will take compute cycles away from the application
inducing what is known as <i>system noise</i>.
For large parallel applications, this system noise can detract from
application scalability.
For optimal application performance, disabling job accounting
is best (<i>jobacct_gather/none</i>).
Consider use of job completion records (<i>JobCompType</i>) for accounting
purposes as this entails far less overhead.
If job accounting is required, configure the sampling interval
to a relatively large size (e.g. <i>JobAcctGatherFrequency=task=300</i>).
Some experimentation may be required to deal with collisions
on data transmission.</p>

<h2 id="node_config">Node Configuration
<a class="slurm_link" href="#node_config"></a>
</h2>

<p>While Slurm can track the amount of memory and disk space actually found
on each compute node and use it for scheduling purposes, this entails
extra overhead.
Optimize performance by specifying the expected configuration using
the available parameters (<i>RealMemory</i>, <i>CPUs</i>, and
<i>TmpDisk</i>).
If the node is found to contain less resources than configured,
it will be marked DOWN and not used.
While Slurm can easily handle a heterogeneous cluster, configuring
the nodes using the minimal number of lines in <i>slurm.conf</i>
will both make for easier administration and better performance.</p>

<h2 id="timers">Timers<a class="slurm_link" href="#timers"></a></h2>

<p>The <i>EioTimeout</i> configuration parameter controls how long the srun
command will wait for the slurmstepd to close the TCP/IP connection used to
relay data between the user application and srun when the user application
terminates. The default value is 60 seconds. Larger systems and/or slower
networks may need a higher value.</p>

<p>If a high throughput of jobs is anticipated (i.e. large numbers of jobs
with brief execution times) then configure <i>MinJobAge</i> to the smallest
interval practical for your environment. <i>MinJobAge</i> specifies the
minimum number of seconds that a terminated job will be retained by Slurm's
control daemon before purging. After this time, information about terminated
jobs will only be available through accounting records.</p>

<p>The configuration parameter <i>SlurmdTimeout</i> determines the interval
at which <i>slurmctld</i> routinely communicates with <i>slurmd</i>.
Communications occur at half the <i>SlurmdTimeout</i> value.
The purpose of this is to determine when a compute node fails
and thus should not be allocated work.
Longer intervals decrease system noise on compute nodes (we do
synchronize these requests across the cluster, but there will
be some impact upon applications).
For really large clusters, <i>SlurmdTimeout</i> values of
120 seconds or more are reasonable.</p>

<p>If MPICH-2 is used, the srun command will manage the key-pairs
used to bootstrap the application.
Depending upon the processor speed and architecture, the communication
of key-pair information may require extra time.
This can be done by setting an environment variable PMI_TIME before
executing srun to launch the tasks.
The default value of PMI_TIME is 500 and this is the number of
microseconds allotted to transmit each key-pair.
We have executed up to 16,000 tasks with a value of PMI_TIME=4000.</p>

<p>The individual slurmd daemons on compute nodes will initiate messages
to the slurmctld daemon only when they start up or when the epilog
completes for a job. When a job allocated a large number of nodes
completes, it can cause a very large number of messages to be sent
by the slurmd daemons on these nodes to the slurmctld daemon all at
the same time. In order to spread this message traffic out over time
and avoid message loss, The <i>EpilogMsgTime</i> parameter may be
used. Note that even if messages are lost, they will be retransmitted,
but this will result in a delay for reallocating resources to new jobs.</p>

<h2 id="other">Other<a class="slurm_link" href="#other"></a></h2>

<p>Slurm uses hierarchical communications between the slurmd daemons
in order to increase parallelism and improve performance. The
<i>TreeWidth</i> configuration parameter controls the fanout of messages.
The default value is 16, meaning each slurmd daemon can communicate
with up to 16 other slurmd daemons and 4368 nodes can be contacted
with three message hops.
The default value will work well for most clusters.
Optimal system performance can typically be achieved if <i>TreeWidth</i>
is set to the cube root of the number of nodes in the cluster.</p>

<p>The srun command automatically increases its open file limit to
the hard limit in order to process all of the standard input and output
connections to the launched tasks. It is recommended that you set the
open file hard limit to 8192 across the cluster.</p>

<p style="text-align:center;">Last modified 2 October 2024</p>

<!--#include virtual="footer.txt"-->
