Close Menu
DPC Virtual Tips
    Read More

    Slurm Node Is DRAINED: How to Find the Exact Reason

    August 10, 2026

    Why Is My Slurm Job Pending? How to Decode Every Common Reason

    August 9, 2026

    Linux Process Resource Usage: How to Find Heavy Processes

    August 6, 2026
    • Home
    • About Us
    • Contact
    • Cookie Policy
    • Comment Policy
    • Privacy Policy
    • Terms of Use
    • Disclaimer
    Monday, August 10
    DPC Virtual Tips
    • Home
    • Operating Systems
    • PowerFlex
    • HPC
    • Virtualization
    • About the Author
    • About Us
    • Contact
    DPC Virtual Tips
    Home » Slurm Node Is DRAINED: How to Find the Exact Reason
    HPC

    Slurm Node Is DRAINED: How to Find the Exact Reason

    DaniloBy DaniloAugust 10, 2026No Comments9 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    slurm node drained
    Share
    Facebook Twitter LinkedIn Pinterest Email

    A Slurm node DRAINED state means the scheduler has intentionally prevented a compute node from receiving new jobs. This usually happens because Slurm, a health-check mechanism, or a cluster administrator identified a condition that makes the node unsuitable for additional workloads.

    Seeing drain or drained in sinfo does not immediately tell you what failed. The node may have a hardware problem, a full filesystem, an invalid Slurm configuration, a failed Prolog or Epilog, or simply have been drained manually for maintenance.

    Fortunately, Slurm normally stores a reason with the node state. By combining sinfo, scontrol, system logs, and a few Linux checks, an administrator can usually determine exactly why the node was drained before deciding whether it is safe to return it to service.

    What Does DRAINED Mean in Slurm?

    Slurm uses node states to determine whether compute resources can receive new jobs.

    A node in the DRAINED state is unavailable for new job allocations. Slurm distinguishes this from DRAINING: a draining node still has one or more jobs running, but the scheduler will not assign additional jobs to it. Once the remaining jobs finish, the node transitions to DRAINED.

    For example:

    sinfo -N

    might return:

    NODELIST   NODES PARTITION STATE
    node01         1   compute idle
    node02         1   compute drain
    node03         1   compute alloc

    The important point is that DRAINED is not itself the root cause.

    It is the state Slurm uses to keep the node out of normal scheduling while an underlying condition is investigated or maintenance is performed.

    Start with sinfo -R

    The quickest way to investigate drained nodes is:

    sinfo -R

    The -R option displays nodes that are unavailable together with the reason associated with their state.

    Example:

    REASON                     USER      TIMESTAMP           NODELIST
    Low socket*core*thread      slurm     2026-08-09T08:42    node02

    Or you might see something similar to:

    REASON                     USER      TIMESTAMP           NODELIST
    Epilog failure              root      2026-08-09T09:15    node07
    tmp filesystem full         admin     2026-08-09T09:34    node12

    This is often enough to determine the direction of the investigation.

    sinfo can report reasons for unavailable nodes, making sinfo -R one of the most useful first commands when troubleshooting DOWN, DRAIN, or related node conditions.

    If the cluster has many drained nodes, the command also provides a fast way to identify whether several systems share the same failure.

    Inspect the Node with scontrol

    The next command should normally be:

    scontrol show node node02

    A simplified output might look like:

    NodeName=node02 Arch=x86_64 CoresPerSocket=16
       CPUAlloc=0 CPUEfctv=32 CPUTot=32 CPULoad=0.04
       RealMemory=128000 AllocMem=0 FreeMem=121340
       State=IDLE+DRAIN
       Partitions=compute
       BootTime=2026-08-01T07:14:32
       SlurmdStartTime=2026-08-01T07:16:05
       LastBusyTime=2026-08-09T08:38:21
       Reason=Low socket*core*thread count [slurm@2026-08-09T08:42:11]

    The most important fields during the initial investigation are:

    State=
    Reason=

    State tells you the scheduler’s current view of the node, while Reason provides the explanation recorded when the state changed.

    You should also examine CPU counts, memory, configured features, GRES resources, boot time, and SlurmdStartTime. These fields can expose differences between what Slurm expects and what the operating system is actually reporting.

    DRAIN Versus DOWN

    DRAIN and DOWN are related but should not be treated as interchangeable.

    A drained node is deliberately prevented from receiving new workloads while allowing existing jobs to finish when applicable. A node placed directly into DOWN, however, is considered unavailable, and administrative actions involving a down node can affect jobs currently associated with it. Slurm’s troubleshooting guidance specifically notes that draining can be used when administrators want existing jobs to terminate naturally before taking the system down.

    This distinction matters during maintenance.

    If a compute node requires work but current jobs are healthy, an administrator may intentionally run:

    scontrol update NodeName=node02 State=DRAIN Reason="scheduled maintenance"

    If jobs are still running, the node becomes DRAINING.

    Once they finish, it becomes DRAINED.

    So not every drained node represents an unexpected failure.

    Configuration Mismatches

    One common reason for a node to become unavailable is a mismatch between the hardware resources reported by slurmd and those configured for the node in slurm.conf.

    Check the expected configuration:

    scontrol show config

    and:

    scontrol show node node02

    On the compute node, you can also use:

    slurmd -C

    slurmd -C prints hardware information in a format that can help when building or validating a NodeName definition.

    For example, you might discover that Slurm expects:

    CPUs=64 RealMemory=250000

    while the node currently reports fewer usable CPUs or memory.

    Possible causes include BIOS changes, disabled CPU cores, hardware replacement, VM configuration changes, or an incorrect slurm.conf.

    Important: Do not simply resume the node until you understand why the reported resources differ.

    Check slurmd on the Compute Node

    If the configuration looks correct, verify the Slurm node daemon:

    systemctl status slurmd

    Then check recent messages:

    journalctl -u slurmd

    For the current boot:

    journalctl -u slurmd -b

    Depending on the cluster configuration, slurmd may also write to a dedicated log file.

    For example:

    grep -iE "error|drain|fail" /var/log/slurm/slurmd.log

    Note: The exact path depends on how Slurm logging is configured.

    Look for messages related to registration failures, memory or CPU mismatches, GRES configuration, cgroups, filesystem problems, communication failures, Prolog or Epilog execution, and authentication issues.

    Valuable Tip: The timestamp shown in the node’s Reason field is particularly valuable here. Use it to focus your log investigation around the moment when the node entered the drained state.

    Prolog and Epilog Failures

    Slurm can automatically drain a node when job lifecycle scripts fail.

    Sites often configure Prolog scripts to prepare a node before a job starts and Epilog scripts to perform cleanup after a job finishes.

    If a configured Prolog returns a non-zero exit code, Slurm can place the node into DRAIN and requeue the affected job. A failing Epilog can also cause the node to be drained.

    If sinfo -R reports something similar to:

    Prolog failure

    or:

    Epilog failure

    find the scripts configured on the cluster:

    scontrol show config | grep -iE "Prolog|Epilog"

    Then test the underlying problem instead of immediately resuming the node.

    Common issues include:

    missing mount points
    permission errors
    unavailable network storage
    failed cleanup operations
    missing commands
    incorrect environment assumptions

    Important: A resume without fixing the script may simply cause the node to drain again when the next job arrives.

    Node Health Checks

    Many HPC environments perform additional health checks outside normal Slurm scheduling.

    Slurm supports a HealthCheckProgram that can execute periodically on compute nodes. The script itself can detect a problem and explicitly drain the node using scontrol. The Slurm configuration documentation even uses a full temporary filesystem as an example of a condition that could result in a node being drained.

    Check whether one is configured:

    scontrol show config | grep -i HealthCheck

    If a health-check tool or custom script is involved, inspect its logs and configuration.

    Typical checks may include:

    filesystem availability
    disk utilization
    GPU health
    network interfaces
    memory errors
    temperature
    required mounts
    local scratch space

    This is important because Slurm itself may only display the reason supplied by the health-check script. The detailed diagnosis may exist elsewhere.

    Check Filesystems and Local Storage

    Storage problems are especially common on compute nodes.

    Start with:

    df -h

    Then check inode utilization:

    df -i

    A filesystem can have free gigabytes while still being unable to create new files because all available inodes have been consumed.

    Also verify expected mounts:

    findmnt

    If the cluster uses NFS, Lustre, BeeGFS, or another distributed filesystem, confirm that required filesystems are accessible from the affected node.

    For example:

    mount | grep lustre

    A missing home directory, application filesystem, or scratch mount can be enough for a site health-check script to drain the server.

    Investigate Hardware and Kernel Problems

    If Slurm itself appears healthy, investigate the operating system.

    Useful commands include:

    dmesg -T | tail -100

    and:

    journalctl -p err -b

    Look for memory errors, disk I/O failures, network interface problems, filesystem errors, PCIe faults, GPU errors, or kernel events occurring around the drain timestamp.

    On GPU nodes, also verify the accelerator stack.

    For NVIDIA systems, for example:

    nvidia-smI

    A GPU node can appear perfectly healthy from a CPU perspective while one accelerator has disappeared from the operating system or failed to initialize. If Slurm’s GRES configuration expects that GPU, the mismatch can prevent the node from returning to normal service.

    Manually Drained Nodes

    Sometimes the reason is much simpler.

    An administrator may have intentionally executed:

    scontrol update NodeName=node02 State=DRAIN Reason="memory replacement"

    Slurm allows administrators to attach a custom reason when changing the node state.

    Running:

    scontrol show node node02

    may reveal:

    Reason=memory replacement [admin@2026-08-09T10:12:08]

    The username and timestamp immediately tell you who initiated the change and when. Before resuming such a node, confirm that the maintenance activity has actually been completed.

    Returning the Node to Service

    Once the underlying problem has been fixed, the node can normally be returned to scheduling with:

    scontrol update NodeName=node02 State=RESUME

    Setting the node to RESUME clears its drain state and associated reason and allows it to return toward normal scheduling availability.

    Verify the result:

    sinfo -N -n node02

    and:

    scontrol show node node02

    Ideally, the node should eventually show a schedulable state such as:

    State=IDLE

    Important: Do not treat RESUME as the fix itself. It only tells Slurm that the node may be considered for service again. If the underlying problem remains, the node may immediately or eventually return to DRAIN.

    A Practical Troubleshooting Sequence

    For most incidents, the investigation can follow this order:

    sinfo -R

    Identify the reason.

    Then:

    scontrol show node <node>

    Inspect the complete node state and recorded message.

    On the compute node:

    systemctl status slurmd
    journalctl -u slurmd -b
    df -h
    df -i
    findmnt
    dmesg -T | tail -100

    If the reason mentions a Prolog, Epilog, health check, GRES device, or configuration mismatch, follow that path before changing the node state.

    Once the actual problem has been corrected, resume the node:

    scontrol update NodeName=<node> State=RESUME

    and verify it again with:

    sinfo -N -n <node>

    To Wrap This Up

    A drained node is therefore less mysterious than it first appears. The DRAINED state is Slurm’s way of keeping questionable resources away from new workloads while preserving information about what happened.

    Starting with sinfo -R, reading the node’s Reason, and matching that timestamp against Slurm and operating-system logs usually provides a clear path from the scheduler symptom to the real problem.

    If you are new on the HPC world, no worries about that. We have written a basic article explaining what HPC is. Click here to access the article. Additionally, if you want to build your own HPC cluster, click here to access an article about that!

    Enjoy it 🙂

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleWhy Is My Slurm Job Pending? How to Decode Every Common Reason
    Danilo

    Infrastructure Engineer with experience in Virtualization, Linux, Windows Server and learning automation using Python. DPC Virtual Tips was created to share practical tutorials, lab experiences and troubleshooting guides focused on enterprise infrastructure technologies.

    Related Posts

    Why Is My Slurm Job Pending? How to Decode Every Common Reason

    August 9, 2026

    Lustre Filesystem Commands: A Practical Admin Guide

    August 5, 2026

    Essential Slurm Administration Commands Every HPC Administrator Should Know

    July 15, 2026
    Leave A Reply Cancel Reply

    Search
    Categories
    • HPC (10)
    • Operating Systems (82)
    • PowerFlex (22)
    • Virtualization (129)
    Read More
    HPC

    Slurm Node Is DRAINED: How to Find the Exact Reason

    By DaniloAugust 10, 20260
    HPC

    Why Is My Slurm Job Pending? How to Decode Every Common Reason

    By DaniloAugust 9, 20260
    Operating Systems

    Linux Process Resource Usage: How to Find Heavy Processes

    By DaniloAugust 6, 20260
    HPC

    Lustre Filesystem Commands: A Practical Admin Guide

    By DaniloAugust 5, 20260
    Operating Systems

    Linux ss, lsof, and fuser Commands: A Practical Guide

    By DaniloAugust 4, 20260
    Latest Posts

    Slurm Node Is DRAINED: How to Find the Exact Reason

    August 10, 2026

    Why Is My Slurm Job Pending? How to Decode Every Common Reason

    August 9, 2026

    Linux Process Resource Usage: How to Find Heavy Processes

    August 6, 2026
    Images from Gallery
    hpc main commands
    linux commands
    install rock linux
    lustre fs
    shell scripting
    vSAN Trace Files
    Categories
    • HPC
    • Operating Systems
    • PowerFlex
    • Virtualization
    • Home
    • About Us
    • Contact
    • Cookie Policy
    • Comment Policy
    • Privacy Policy
    • Terms of Use
    • Disclaimer
    Copyright © 2026, DPC Virtual Tips. All rights reserved.

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure your best experience on our website. If you continue using our website, we'll assume you agree to our cookie policy