Skip to navigation

Workload Managers Quick Reference

View as Markdown

F.1 Slurm

Slurm is a GPL-licensed workload management system and developed largely at Lawrence Livermore National Laboratory. The name was originally an acronym for Simple Linux Utility for Resource Management, but the acronym is deprecated because it no longer does justice to the advanced capabilities of Slurm.

The Slurm service and outputs are normally handled using the Base View or cmsh front end tools for CMDaemon (section 7.4).

From the command line, direct Slurm commands that may sometimes come in useful include the following:

  • sacct: used to report job or job step accounting information about active or completed jobs.

    Example

    # sacct -j 43 -o jobid,AllocCPUs,NCPUS,NNodes,NTasks,ReqCPUs
    JobID AllocCPUS NCPUS NNodes NTasks ReqCPUS
    ------------ ---------- ---------- -------- -------- --------
    43 1 1 1 1
  • salloc: used to allocate resources for a job in real time. Typically this is used to allocate resources and spawn a shell. The shell is then used to execute srun commands to launch parallel tasks.

  • sattach used to attach standard input, output, and error plus signal capabilities to a currently running job or job step. One can attach to and detach from jobs multiple times.

  • sbatch: used to submit a job script for later execution. The script typically contains one or more srun commands to launch parallel tasks.

  • sbcast: used to transfer a file from local disk to local disk on the nodes allocated to a job. This can be used to effectively use diskless compute nodes or provide improved performance relative to a shared filesystem.

  • scancel: used to cancel a pending or running job or job step. It can also be used to send an arbitrary signal to all processes associated with a running job or job step.

  • scontrol: the administrative tool used to view and/or modify Slurm state. Note that many scontrol commands can only be executed as user root.

    Example

    [fred@basecm11 ~]$ scontrol show nodes
    NodeName=basecm11 Arch=x86_64 CoresPerSocket=1
    CPUAlloc=0 CPUErr=0 CPUTot=1 CPULoad=0.05 Features=(null)
    ...

    If a node, for example node001, is stuck in a CG state (“completing”), and rebooting it is not feasible, then the following may clear it in some cases:

    Example

    [fred@basecm11 ~]$ scontrol update nodename=node001 state=down reason=hung
    [fred@basecm11 ~]$ scontrol update nodename=node001 state=resume
  • sinfo: reports the state of partitions and nodes managed by Slurm. It has a wide variety of filtering, sorting, and formatting options.

    Example

    basecm11:~ # sinfo -o "%9P %.5a %.10l %.6D %.6t %C %N"
    PARTITION AVAIL TIMELIMIT NODES STATE CPUS(A/I/O/T) NODELIST
    defq* up infinite 1 alloc 1/0/0/1 basecm11
  • smap: reports state information for jobs, partitions, and nodes managed by Slurm, but graphically displays the information to reflect network topology.

  • squeue: reports the state of jobs or job steps. It has a wide variety of filtering, sorting, and formatting options. By default, it reports the running jobs in priority order and then the pending jobs in priority order.

    Example

    basecm11:~ # squeue -o "%.18i %.9P %.8j %.8u %.2t %.10M %.6D %C %R"
    JOBID PARTITION NAME USER ST TIME NODES CPUS NODELIST(REASON)
    43 defq bash fred R 16:22 1 1 basecm11
    ...
  • srun: used to submit a job for execution or initiate job steps in real time. srun has a wide variety of options to specify resource requirements, including: minimum and maximum node count, processor count, specific nodes to use or not use, and specific node characteristics (so much memory, disk space, certain required features, etc.). A job can contain multiple job steps executing sequentially or in parallel on independent or shared nodes within the job’s node allocation.

    Auto Scaler dynamic node issues with srun: A concern about srun (https://bugs.schedmd.com/show_bug.cgi?id=1333) at the time of writing (January 2023) is the following: After an srun job has been queued, and a new node is added, the slurm.conf file is not read again. This means that the new node resource is not seen by jobs using srun. Thus, with srun jobs, nodes launched dynamically by Auto Scaler remain unused, and can fail. Workarounds are to use salloc or sbatch instead of srun.

  • smap: reports state information for jobs, partitions, and nodes managed by Slurm, but graphically displays the information to reflect network topology.

  • strigger: used to set, get or view event triggers. Event triggers include things such as nodes going down or jobs approaching their time limit.

  • sview: a graphical user interface to get and update state information for jobs, partitions, and nodes managed by Slurm.

There are man pages for these commands. Full documentation on Slurm is available online at: http://slurm.schedmd.com/documentation.html.