From 6831d982399a67956f4a90137d35f559c9dc8be5 Mon Sep 17 00:00:00 2001 From: Thanwer Date: Sun, 14 Sep 2025 11:53:17 +0200 Subject: [PATCH] Add post about Slurm --- content/posts/slurm.md | 151 +++++++++++++++++++++++++++++++++++ static/images/slurm-web.webp | Bin 0 -> 39898 bytes 2 files changed, 151 insertions(+) create mode 100644 content/posts/slurm.md create mode 100644 static/images/slurm-web.webp diff --git a/content/posts/slurm.md b/content/posts/slurm.md new file mode 100644 index 0000000..15eb996 --- /dev/null +++ b/content/posts/slurm.md @@ -0,0 +1,151 @@ ++++ +date = '2025-09-14T10:19:39+02:00' +title = 'Slurm' +description = "Thanwer's Blog Post about the Slurm tool" +tags = [ + "GNU/Linux", + "Tools", +] +canonical = "/posts/slurm" ++++ + +So recently I was tasked to set. up a Slurm cluster for bioinformatics workloads, and I thought it would be a good idea to share some notes about the installation and configuration process. + +So in short, before we start, what is Slurm? + +> Slurm is an open-source, fault-tolerant, and highly scalable cluster management and job scheduling system for large and small Linux clusters. It is used by many of the world's supercomputers and computer clusters. + +Before we have Slurm, the bioinformaticians used to access the servers directly via SSH, open a screen/tmux session, and run their jobs directly on the servers. This approach has several drawbacks: + +- Resource management: Without a job scheduler, it is difficult to manage and allocate resources efficiently. Suppose you have a server with 128Gb of RAM, and your job requires 32Gb of RAM to run, so you think "I can run 4 jobs in parallel", but if another user is running a job that requires 64Gb of RAM, your job will fail due to insufficient resources. + +- Job prioritization: Without a job scheduler, it is difficult to prioritize jobs based on their importance or urgency. This can lead to situations where less important jobs are running while more important jobs are waiting in the queue. + +- Queue management: Without a job scheduler, the users have to manually monitor and send new jobs when the previous one finishes. Now imagine that your job takes 16 hours to run, will you SSH into the server at 2AM to send a new job? Probably not, so your jobs will be delayed, and the server will just sit idle while you sleep. This is inefficient. + +With that in mind, it is very clear that we need a job scheduler, and Slurm is a great choice for that. + +## Slurm operation + +### The main workflow + +The main workflow of Slurm is quite simple: + +1. The user creates a special bash script with the job parameters and the commands to run. Here is an example of such a script: + + ```bash + #!/usr/bin/env bash + #SBATCH --job-name=my_job_name # Job name + #SBATCH --output=output.txt # Standard output file + #SBATCH --error=error.txt # Standard error file + #SBATCH --partition=partition_name # Partition or queue name + #SBATCH --nodes=1 # Number of nodes + #SBATCH --ntasks-per-node=1 # Number of tasks per node + #SBATCH --cpus-per-task=1 # Number of CPU cores per task + #SBATCH --time=1:00:00 # Maximum runtime (D-HH:MM:SS) + #SBATCH --mail-type=END # Send email at job completion + #SBATCH --mail-user=your@email.com # Email address for notifications + + # Your commands go here + module load python/3.8 + python my_script.py + ``` + +2. The user submits a job to the Slurm controller using the `sbatch` command +3. The Slurm controller adds the job to the queue and assigns it a job ID +4. The Slurm controller schedules the job to run on a compute node when resources are available +5. The compute node executes the job and sends the output back to the user + +The user can monitor the job status using the `squeue` command. +The administrator can manage the jobs using the `scancel` command to cancel a job, or the `scontrol` command to modify a job. + +### Basic commands + +Check the cluster status: + +```bash +sinfo +PARTITION AVAIL TIMELIMIT NODES STATE NODELIST +debug up 30:00 2 idle node[01-02] +batch up 2-00:00:00 4 alloc node[03-06] +``` + +List running and pending jobs: + +```bash +squeue +JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) +1001 batch test.sh alice R 0:15 2 node[03-04] +1002 debug script bob PD 0:00 1 (Priority) +``` + +Run a interactive job session: + +```bash +srun --partition=debug --nodes=1 --ntasks=1 --time=00:30:00 --pty bash +``` + +Cancel a job: + +```bash +scancel +``` + +## Slurm components + +The main components of Slurm are: + +- **slurmctld**: The Slurm controller daemon, which is responsible for managing the cluster and scheduling jobs. It runs on the controller node. +- **slurmd**: The Slurm daemon, which is responsible for executing jobs on the compute nodes. It runs on each compute node. +- **slurmdbd**: The Slurm database daemon, which is responsible for storing job and user information in a database. It is optional and can run on a separate node. + +## Installation + +The installation process is quite straightforward, and you can find the [official documentation here](https://slurm.schedmd.com/quickstart_admin.html). + +In my case, I used a Debian 13 VM as a all-in-one controller and multiple physical Debian 13 servers as compute nodes. In a more robust setup, you would probably want to have a separate database server, multiple controllers for redundancy, but for this example, since the cluster is relatively small, we will use the simplest configuration. + +Since the configuration is the same for all nodes, this is a perfect scenario to be automated by [Ansible](https://www.ansible.com/), I will not cover the Ansible part here, but I will show you the main gotchas that I encountered and would save a lot of time. + +## Tips and tricks + +### Find real user documentation + +Since Slurm is very popular in the academic world, there are many universities that have their own documentation, it is a very good starting point to find real user documentation, here are some examples that were very helpful to me: + +[Advanced Research Computing at Hopkins](https://docs.arch.jhu.edu/en/latest/) + +[Freie Universität Berlin](https://wiki.physik.fu-berlin.de/it/services:cluster:slurm) + +[HPC Wiki](https://hpc-wiki.info/hpc/HPC_Wiki) + +### Configless mode + +Since Slurm 20.02, it supports a configless mode, which means that you don't need to create a `/etc/slurm/slurm.conf` file on each node, instead, you can use the `slurmctld` to distribute the configuration to all nodes. + +This is a great feature, and it simplifies the installation process a lot. [The official documentation is here](https://slurm.schedmd.com/configless_slurm.html). + +It just depends on a very simple DNS SRV record, so make sure you have that set up correctly. Take this example, and adapt it to your setup: + +```bind +_slurmctld._tcp 3600 IN SRV 10 0 6817 slurmctl-backup +_slurmctld._tcp 3600 IN SRV 0 0 6817 slurmctl-primary +``` + +### Slurm-web + +Slurm-web is a web interface for Slurm, which allows you (and your users!) to monitor and manage the cluster from a web browser. You can find the [official documentation here](https://slurm-web.com/). + +![Slurm-web dashboard](/images/slurm-web.webp) + +### slurm-mail + +Slurm-Mail is a drop in replacement for Slurm's e-mails to give users much more information about their jobs compared to the standard Slurm e-mails. You can find it [on Github](https://github.com/neilmunday/slurm-mail). + +### Power saving + +Now this is a feature that I was not aware of, but Slurm has a built-in power saving feature, which allows you to automatically power on/off compute nodes based on demand. + +It relies on scripts that you need to provide, one for powering on a node, and another for powering off a node. You can find the documentation [here](https://slurm.schedmd.com/power_save.html). + +In my case I adapted [the scripts from here](https://github.com/OleHolmNielsen/Slurm_tools/tree/master/power_save) to use IPMI to power on/off the nodes. diff --git a/static/images/slurm-web.webp b/static/images/slurm-web.webp new file mode 100644 index 0000000000000000000000000000000000000000..c936e2b5e15fcfb4dd5098228053fad417e2b000 GIT binary patch literal 39898 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 ih{=77q`O&5D}9w;v)2I>q4