Slurm Issues¶
Issues related to the Slurm job scheduler, including controller failures, node state problems, job submission errors, and GPU detection.
slurmctld not starting¶
Symptom
The Slurm controller daemon fails to start. Running systemctl status
slurmctld shows the service as failed or inactive.
Cause
- The
slurm.conffile has syntax errors or references non-existent nodes. - The
mungeauthentication service is not running. - File permissions on
/var/spool/slurmctld/are incorrect. - The Slurm database daemon (
slurmdbd) is unreachable andAccountingStorageEnforceis set.
Resolution
- Check the slurmctld log for specific errors:
tail -100 /var/log/slurm/slurmctld.log
- Verify munge is running:
systemctl status munge
If munge is not running, start it:
systemctl start munge
- Validate the Slurm configuration:
slurmd -C # Show computed configuration
slurmctld -Dvvv # Run in foreground with verbose logging
- Fix spool directory permissions:
chown -R slurm:slurm /var/spool/slurmctld/
chmod 755 /var/spool/slurmctld/
- If slurmdbd is the issue, see the slurmdbd connection issues section below.
Nodes Entering DRAINED State¶
Symptom
Slurm nodes enter DRAINED state unexpectedly. Error messages include:
State=IDLE+DRAIN Reason=Kill task failed
or:
State=DOWN+DRAIN Reason=Not responding
Cause
- The epilog script (
/etc/slurm/epilog.d/logout_user.sh) is not executable.
Resolution
- Fix the epilog script permissions and reconfigure Slurm:
chmod 0755 /etc/slurm/epilog.d/logout_user.sh
scontrol reconfigure
Nodes stuck in DOWN state¶
Symptom
sinfo shows one or more nodes in down or down* state:
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
normal* up infinite 1 down* compute-03
Cause
- The
slurmdservice on the compute node is not running. - Network connectivity between the control node and the compute node is broken.
- The node was manually set to DOWN and not resumed.
- Hardware issues (memory errors, disk failures) triggered an automatic drain.
Resolution
- Check why the node is down:
scontrol show node compute-03 | grep -i reason
- Verify
slurmdis running on the compute node:
ssh compute-03 systemctl status slurmd
If not running:
ssh compute-03 systemctl start slurmd
- Test network connectivity:
ping compute-03
ssh compute-03 hostname
- Resume the node after fixing the underlying issue:
scontrol update NodeName=compute-03 State=RESUME
- Verify the node returns to
idle:
sinfo -n compute-03
Job submission failures¶
Symptom
Submitting a job with sbatch or srun fails with errors such as:
sbatch: error: Batch job submission failed: Invalid account or account/partition combination specified
srun: error: Unable to allocate resources: No partition specified or system default partition
Cause
- The user's account is not configured in Slurm accounting.
- No default partition is defined in
slurm.conf. - The requested resources exceed what is available in the cluster.
Resolution
-
Check available partitions:
Run on: Slurm controller nodesinfo -
Verify a default partition exists in
slurm.conf:File: /etc/slurm/slurm.confPartitionName=normal Nodes=compute-[01-10] Default=YES MaxTime=INFINITE State=UP -
If resources are the issue, check available resources:
Run on: Slurm controller nodesinfo -N -l squeue # Check for jobs consuming resources
slurmdbd connection issues¶
Symptom
slurmctld logs show errors connecting to the Slurm database daemon:
error: slurmdbd: Sending PersistInit msg: CONNECTION REFUSED
error: slurmdbd: DBD_ID_REGISTER failed
Cause
- The
slurmdbdservice is not running. - The MariaDB database backend is down.
- Network or firewall issues between the controller and the database node.
- Incorrect database credentials in
slurmdbd.conf.
Resolution
- Check
slurmdbdstatus:
systemctl status slurmdbd
- Check the database backend:
systemctl status mariadb
- Verify
slurmdbd.confsettings:
grep -i storage /etc/slurm/slurmdbd.conf
- Test database connectivity:
mysql -u slurm -p -h localhost slurm_acct_db -e "SELECT 1;"
- Check the
slurmdbdlog:
tail -100 /var/log/slurm/slurmdbd.log
- If credentials changed, update
slurmdbd.confand restart:
systemctl restart slurmdbd
systemctl restart slurmctld
NVIDIA GPU, CUDA, and DCGM Issues¶
nvidia-smi not found or driver not communicating¶
Symptom
nvidia-smi: command not found or nvidia-smi exits with a non-zero
return code.
Cause
- NVIDIA driver installation failed during provisioning.
- GPU hardware is absent on this node.
Resolution
- Verify GPU hardware is present on the node:
lspci | grep -i nvidia
- If confirmed present, re-install the driver:
dnf install -y cuda-drivers
- Review the driver installation log for error details:
cat /var/log/nvidia_install.log
CUDA toolkit not available on node¶
Symptom
nvcc: command not found or /usr/local/cuda is empty.
Cause
- Toolkit installation did not complete on the designated installer node due to a repository or NFS error.
- NFS mount for the CUDA toolkit was not established at provisioning time.
Resolution
- Verify the NFS mount at
/usr/local/cudais present:
mount | grep cuda
- If absent, re-mount manually. If the toolkit is not installed on the NFS share, review the installation log on the installer node:
cat /var/log/cuda_toolkit_install.log
CUDA toolkit NFS mount failed¶
Symptom
/usr/local/cuda is empty or not mounted after provisioning.
Cause
- NFS server was unreachable at provisioning time.
- The NFS export is not configured with
no_root_squash.
Resolution
-
Verify NFS server reachability from the node.
-
Verify the NFS export includes
no_root_squash. -
Re-mount manually:
mount -t nfs <NFS_SERVER>:<path>/hpc_tools/cuda /usr/local/cuda
- Verify the
fstabentry is present for persistence.
nvidia-dcgm service inactive or failed¶
Symptom
systemctl status nvidia-dcgm shows inactive or failed state.
Cause
- DCGM package installation failed due to an unavailable repository or a CUDA version mismatch.
- The NVIDIA driver was not functional at the time DCGM attempted to start.
Resolution
- Verify driver is functional:
nvidia-smi
- Identify the installed CUDA version:
nvidia-smi | grep "CUDA Version"
-
Re-install the matching DCGM package and restart the service.
-
Review the DCGM setup log for errors:
cat /var/log/dcgm_setup.log
DCGM not installed¶
Symptom
nvidia-dcgm service is not present on the Slurm node, and
/var/log/dcgm_setup.log is missing.
Cause
dcgm.metrics_enabledis set tofalseundertelemetry_sourcesintelemetry_config.yml, so Omnia intentionally skips DCGM installation during Slurm node cloud-init.
Resolution
-
Set
dcgm.metrics_enabled: trueundertelemetry_sourcesininput/telemetry_config.yml. -
Re-run provisioning for affected Slurm nodes.
-
Validate:
systemctl status nvidia-dcgm
dcgmi discovery -l
DCGM package version mismatch¶
Symptom
DCGM package installation fails with No match for argument or
No packages found.
Cause
- The CUDA major version on the node does not have a matching
datacenter-gpu-manager-4-cuda<N>package available in the configured local repository.
Resolution
- Verify the CUDA version:
nvidia-smi | grep "CUDA Version"
-
Confirm the corresponding DCGM package is present in the local Pulp repository.
-
Update
local_repo_config.ymlto include the correct DCGM package version and re-runlocal_repo.yml.
nvidia-peermem not loading¶
Symptom
lsmod does not show nvidia_peermem. Workloads requiring GPUDirect
RDMA fail to initialize.
Cause
- Kernel headers were not available at provisioning time, causing the DKMS build to fail.
- Base NVIDIA kernel modules were not loaded prior to
nvidia-peermemload attempt.
Resolution
- Verify kernel headers:
ls /lib/modules/$(uname -r)/build
- Install if missing:
dnf install -y kernel-devel-$(uname -r)
- Load the module:
modprobe nvidia-peermem
- Review the installation log:
cat /var/log/nvidia_peermem_install.log
Note
If RDMA is not required for any workload on this node, this warning is non-blocking.
Munge authentication failure¶
Symptom
Slurm commands fail with authentication errors such as:
srun: error: Munge encode failed: Failed to access"/var/run/munge/munge.socket.2"
slurmd: error: Munge authentication failed
Cause
- The
mungeservice is not running on one or more nodes. - The Munge key is not identical across all nodes in the cluster.
Resolution
- Verify Munge is running on all nodes:
ansible slurm_cluster -m shell -a "systemctl status munge"
- Verify the Munge key is identical across all nodes:
ansible slurm_cluster -m shell -a "md5sum /etc/munge/munge.key"
All nodes should report the same MD5 hash.
- If keys differ, redistribute the key from the controller node and restart Munge on all affected nodes:
systemctl restart munge
MariaDB connection error¶
Symptom
slurmdbd fails to start or slurmctld logs show database connection
errors. The sacctmgr command returns errors.
Cause
- The MariaDB service is not running on the Slurm controller node.
- Database credentials in
slurmdbd.confdo not match the MariaDB configuration. - The Slurm database was not initialized.
Resolution
- Check MariaDB is running on the control node:
systemctl status mariadb
- Test database connectivity:
mysql -u slurm -p -e "SHOW DATABASES;"
- If MariaDB is stopped, start it and restart Slurm services:
systemctl start mariadb
systemctl restart slurmdbd
systemctl restart slurmctld
slurmctld fails to start after config rollback¶
Symptom
After rolling back a Slurm configuration backup, slurmctld fails to
start.
Cause
- The backup may reference nodes that no longer exist in the cluster.
Resolution
- Run cleanup and redeploy with
provision.yml:
ansible-playbook /opt/omnia/utils/slurm_config_util.yml --tags slurm_cleanup
ansible-playbook provision.yml
New nodes show DOWN after adding¶
Symptom
Newly added compute nodes appear as down in sinfo after running
provision.yml and PXE booting.
Cause
- The
slurmdservice failed to start on the new node. - Cloud-init did not complete successfully.
Resolution
- Verify
slurmdis running on the new node:
systemctl status slurmd
journalctl -u slurmd --no-pager -n 20
- Check cloud-init completed successfully:
cat /var/log/cloud-init-output.log | tail -20
- Resume the node from the controller:
scontrol update nodename=<node> state=resume reason="added"
Node still appears in sinfo after removal¶
Symptom
After removing a node, it still appears in sinfo output.
Cause
- The
provision.ymlplaybook did not complete successfully. - The Slurm controller has not been reconfigured.
Resolution
- Verify that
provision.ymlcompleted successfully and check the Slurm controller logs:
journalctl -u slurmctld --no-pager -n 20
- If jobs were running on the removed node, they may show as
FAILEDorNODE_FAILin accounting:
sacct --starttime=today --state=FAILED,NODE_FAIL
Resubmit affected jobs as needed.
CUDA Toolkit and DCGM Setup Failure: Manual Recovery¶
Symptom
Automated GPU setup fails during provisioning.
Cause
- Repository unavailability, NFS connectivity issues, or node initialization errors.
Resolution
Perform all recovery steps as root on the affected node. Verify
that the shared NFS path is reachable and repositories are accessible
before proceeding.
Step 1: Verify Prerequisites
showmount -e <NFS_SERVER_IP>
lspci | grep -i nvidia
dnf repolist | grep -i cuda
df -h /usr/local
Step 2: Recover NVIDIA Driver
If nvidia-smi is missing or returning errors:
dnf install -y cuda-drivers
nvidia-smi
Step 3: Recover CUDA Toolkit
The recovery procedure differs depending on the node topology.
Scenario A -- Login or compiler node present in the cluster:
The login/compiler node is the designated installer. It installs the
toolkit to the shared NFS location at /hpc_tools/cuda. Compute nodes
mount this path at /usr/local/cuda.
On the login or compiler node:
ls /hpc_tools/cuda/bin/nvcc 2>/dev/null && echo "Toolkit present" || echo "Toolkit NOT present"
If not present, trigger the installation manually:
CUDA_INSTALL_MANUAL=true /usr/local/bin/install_cuda_toolkit.sh
On a compute node (after toolkit is confirmed on NFS):
mount | grep cuda
If absent, re-mount manually:
mount -t nfs <NFS_SERVER>:<hpc_tools_path>/hpc_tools/cuda /usr/local/cuda
Scenario B -- No login or compiler node in the cluster:
Compute nodes install the toolkit themselves to /hpc_tools/cuda.
ls /hpc_tools/cuda/bin/nvcc 2>/dev/null && echo "Toolkit present" || echo "Toolkit NOT present"
If not present:
CUDA_INSTALL_MANUAL=true /usr/local/bin/install_cuda_toolkit.sh
Note
Run this only after confirming no active toolkit installation is
already in progress. Review /var/log/cuda_toolkit_install.log
to check current installation status.
Step 4: Recover DCGM
If the nvidia-dcgm service is inactive or failed:
nvidia-smi | grep "CUDA Version"
dnf install -y datacenter-gpu-manager-4-cuda<N>
systemctl enable nvidia-dcgm
systemctl start nvidia-dcgm
Validate:
systemctl status nvidia-dcgm
dcgmi discovery -l
Step 5: Recover nvidia-peermem (RDMA environments only)
ls /lib/modules/$(uname -r)/build
dnf install -y kernel-devel-$(uname -r)
modprobe nvidia-peermem
Validate:
lsmod | grep -E 'nv_peer_mem|nvidia_peermem'
Log file reference:
/var/log/nvidia_install.log-- NVIDIA driver installation output/var/log/cuda_toolkit_install.log-- CUDA toolkit installation output and timing/var/log/dcgm_setup.log-- DCGM package install, service startup, GPU discovery/var/log/nvidia_peermem_install.log-- nvidia-peermem DKMS build and load output
Benchmark assets missing on Slurm nodes¶
Symptom
- Benchmark tool directories are missing or incomplete under
/hpc_tools. - Expected benchmark artifacts are not visible on login/compiler/compute nodes.
Cause
- Shared NFS path (
/hpc_tools) is not mounted or not accessible. pull_benchmarks.shorbenchmark_tools.listis missing under/hpc_tools/scripts.- Pulp mirror endpoint is unreachable from the node.
- Required benchmark content is not available in local repository/Pulp.
- Tool directory already exists and contains files (script skips re-download by design).
- Architecture mismatch (for example,
msr-safeonaarch64, which is skipped by design).
Resolution
- Verify NFS and scripts path:
ls -ld /hpc_tools
ls -l /hpc_tools/scripts
Expected files: /hpc_tools/scripts/pull_benchmarks.sh and
/hpc_tools/scripts/benchmark_tools.list.
- Run the runtime staging script and review output:
/hpc_tools/scripts/pull_benchmarks.sh
- Review the runtime log:
tail -n 200 /var/log/pull_benchmarks.log
- Validate staged benchmark directories:
ls -l /hpc_tools/osu-micro-benchmarks /hpc_tools/imb /hpc_tools/likwid /hpc_tools/papi /hpc_tools/geopm /hpc_tools/sionlib
- If a tool was skipped as already present, remove that tool
directory only if refresh is required, then re-run
/hpc_tools/scripts/pull_benchmarks.sh.
Note
msr-safe is expected only on x86_64.
sacct erroring out or returning empty results¶
Symptom
The sacct command returns no output or empty results when querying
job accounting information.
Cause
slurmdbdservice is not running.- MariaDB service is not running (
slurmdbddepends on MariaDB). slurmdbdcannot communicate with the database.- Port 6819 (
slurmdbdport) is not listening.
Resolution
- Check if
slurmdbdservice is running:
systemctl status slurmdbd
- Check if MariaDB service is running:
systemctl status mariadb
- Check the
slurmdbdlogs:
tail -50 /var/log/slurm/slurmdbd.log
- Check the
slurmdbdport:
ss -tlnp | grep 6819
- Restart the services accordingly:
systemctl restart slurmdbd
systemctl restart mariadb
Slurm RPM build failures¶
Symptom
rpmbuild fails when building Slurm RPMs from source.
Cause
- Missing development dependencies on the build host.
- Missing kernel headers on aarch64 build hosts.
- CUDA toolkit not installed before building with GPU support.
Resolution
- Install missing development packages:
dnf install -y <missing-package>-devel
- For aarch64 builds, install kernel headers:
dnf install -y kernel-devel kernel-headers
- Verify CUDA is installed before running
rpmbuildwith GPU support:
ls /usr/local/cuda/lib64/stubs/libnvidia-ml.so
Info
- Setup Slurm -- Slurm cluster setup guide.
- Slurm With Gpu -- GPU configuration for Slurm.
- Add Remove Nodes -- Adding or removing Slurm nodes.