English
Summary
Conclusions
A compute cluster consists of login, control, and compute nodes connected by a network, with a shared filesystem and the same users on all nodes. The lab cluster is built from four Hyper-V VMs running Ubuntu Server 26.04: static Netplan addresses, /etc/hosts, chrony time synchronization, SSH key-based login and the parallel commands pdsh/clush, and the /home directory over NFS. Slurm 25.11 consists of slurmctld on the control node, slurmd on the compute nodes, and the optional slurmdbd for accounting; messages are protected by MUNGE with a shared key. The cluster is described by a slurm.conf that is identical on all nodes, node resources are taken from slurmd -C, and cgroup confines jobs to the allocated cores and memory. A user submits sbatch scripts with #SBATCH directives, launches steps with srun (MPI with --mpi=pmix), builds job arrays and chains of dependent jobs, and checks the results with squeue, scontrol, and sacct. Backfill scheduling starts short jobs in gaps without delaying reservations, so a realistic --time pays off. Compute nodes are tuned: the performance governor, THP, swappiness, memlock and nofile limits, MTU, disabling unnecessary services — and every change is verified by measurement.
Self-check questions
- What roles do cluster nodes have? Why use a separate compute network?
- Which VMs make up the lab cluster? Why can’t a cluster be built in WSL2?
- Why must users have the same UID and GID on all nodes? How is this ensured?
- Why is time synchronization needed in a Slurm cluster? How is it configured?
- How do you set up SSH key-based login? What do
pdsh,dshbak, andclushdo? - How do you export and mount an NFS directory? What do
rw,sync, androot_squashmean? - What are
slurmctld,slurmd,slurmstepd, andslurmdbdfor? - How does MUNGE work, and what requirements does it place on nodes?
- What sections does
slurm.confhave? How do you get theNodeNameline for a node? - What are
cgroup.confand theConstrainCoresandConstrainRAMSpaceparameters for? - How do
sbatch,srun, andsallocdiffer? What is a job step? - What states does a job go through? What do
TIMEOUT,OUT_OF_MEMORY, andNODE_FAILmean? - How do you run an MPI program through Slurm? What happens without PMIx?
- How do you specify the layout of a hybrid MPI + OpenMP job?
- How do job arrays and the
afterokandafteranydependencies work? - Explain backfill scheduling. Why should you specify a realistic
--time? - What factors make up a job’s priority? What are a partition and a QoS?
- What OS settings are applied on compute nodes, and why?
- How do you take a node out for maintenance and bring it back? What does
down*mean?
Useful links
- Slurm documentation: https://slurm.schedmd.com/documentation.html
- Slurm 25.11 documentation: https://slurm.schedmd.com/archive/slurm-25.11-latest/
- Installing and configuring Slurm: https://slurm.schedmd.com/archive/slurm-25.11-latest/quickstart_admin.html
slurm.confparameters: https://slurm.schedmd.com/archive/slurm-25.11-latest/slurm.conf.htmlsbatchoptions: https://slurm.schedmd.com/archive/slurm-25.11-latest/sbatch.html- MPI and Slurm: https://slurm.schedmd.com/archive/slurm-25.11-latest/mpi_guide.html
- Ubuntu Server documentation: https://documentation.ubuntu.com/server/
- Hyper-V on Windows: https://learn.microsoft.com/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
- MUNGE: https://dun.github.io/munge/