Slurm: the queue is the product, not the launcher
Slurm: A Highly Scalable Workload Manager
At a glance
- What is it?
- Slurm is the batch scheduler and resource manager that SchedMD ships as a C codebase under the GPL, built around a three-part split of allocation, job launch and queue arbitration. The repository itself gives you almost no install command; it points you at a separate quickstart page.
- Who is it for?
- Adopt Slurm when your cluster runs multi-node batch work and someone will own a partition, an accounting plugin and a slurm.conf. Do not adopt it for a single machine, or as a container orchestrator replacement, because the queue it gives you is the cost.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 18, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Three functions, and the queue is the one you configure
Read the README's own framing and you find the design in three sentences. Slurm allocates exclusive and/or non-exclusive access to compute nodes to users for a set duration. It provides a framework for starting, executing and monitoring work on the nodes it allocated. Finally, it arbitrates conflicting requests for resources by managing a queue of pending work.
The third function is the one that decides your day. A launcher can be small. A scheduler that must decide which of four hundred queued jobs gets the two idle nodes on the next free partition is where configuration lives and where operators spend their time. The README says Slurm strives to be simple, scalable, portable, fault-tolerant and interconnect agnostic, five adjectives that read like a wish list rather than a spec, but the queue arbitration requirement is the load bearing one.
Exclusive versus non-exclusive access is the other split worth noticing before you commit. Exclusive means a job holds the nodes for its wall-clock duration whether or not the program inside them is busy. Non-exclusive means several jobs share. Which one you default to changes your utilisation numbers and your user complaints in opposite directions.
src/slurmctld is where the queue actually lives
The distribution hands you a directory map instead of an architecture diagram. `src/` holds the source, further broken into self explanatory subdirectories such as src/api and src/slurmctld. The naming tells you the shape of the system: there is a controller daemon separate from anything user facing, and there is an API layer that sits between the client commands and that controller. Every `sbatch`, `srun` and `salloc` call a client library, and the client library talks to the controller rather than to the nodes.
That split is why a cluster with one login node and a thousand workers still has a single point that knows about every pending job. It is also why the controller is the component that fails. The README offers no guidance on controller high availability, and it says nothing about what happens to running jobs when slurmctld restarts. If your workload includes anything with a deadline, that silence is a question to answer before deployment.
The `slurm/` directory holds installed headers such as slurm.h and slurm_errno.h, so anything you write against the API compiles against the same version the daemon was built from.
The issue tracker is not on GitHub
The README opens its developer notes by sending you somewhere else: the official issue tracker for Slurm is at https://support.schedmd.com/. Bug reports, patches routed through the tracker and anything that resembles triage do not happen in the public repository where the code lives.
Code contributions are still welcome in the repository, and CONTRIBUTING.md is the document that says how. But the split matters for planning. If your team works by filing GitHub issues and reading public responses, Slurm will not behave that way, and the support portal is a vendor contact rather than a public backlog.
Three releases carry the same timestamp on 2026-09-02: slurm-26-05-4-1, slurm-25-11-8-1 and slurm-25-05-9-1. Three branches patched on the same day is the signature of a vendor that maintains parallel release lines on a schedule. It also means you get to choose a maintenance window rather than being pushed onto one.
The repository gives you no install command at all
Look for a build recipe in this repository and you will not find one. Under the heading for compiling and installing the distribution, the README says to see the instructions at https://slurm.schedmd.com/quickstart_admin.html, and points further at https://slurm.schedmd.com/slurm.html for extensive documentation. INSTALL sits in the top-level file listing, and configure, configure.ac and Makefile.am are all present, so the autotools machinery is here, but the README declines to walk through it.
Practically, that means your first hour with this project is spent in someone else's documentation rather than in the source tree. The difference in approach between those two pages and the repo is worth naming: the repository is where development happens, and the quickstart is where operations happens.
The repository layout does tell you what a build produces. `etc/` holds a sample config file plus scripts useful for running Slurm. `auxdir/` holds the autotools scripts. `testsuite/` carries an extensive collection of tests written for Check, Expect and Pytest, which is the toolset to budget for if you plan to run the suite against your own patches.
Linux is the only platform the README claims
One sentence settles the platform question: Slurm currently has been tested only under Linux. No macOS path, no Windows notes, no mention of a container image. If your team develops on a Mac and expects to run the same launcher locally, the answer is that you need a Linux machine or a Linux virtual machine, and the documentation does not claim otherwise.
The slurm.spec file and the debian/ directory in the top-level listing indicate that both RPM and Debian packaging are handled in the repository. What those packages pull in, which interconnect libraries are present, and what has to be built from source, is not stated in the README, so treat any packaging claim beyond their existence as something to confirm against the quickstart page.
The legal side is short. Slurm is provided as is and with no warranty, and it is distributed under the GNU General Public License. The repository points at COPYING, DISCLAIMER and LICENSE.OpenSSL for details, which is the first sign that OpenSSL carries its own licence file inside the tree.
contribs/ is explicitly outside Slurm proper
One directory in the listing comes with an unusual warning. `contribs/` holds tools that sit outside of Slurm proper, and the README says that to have this build you need to do a make contrib/install-contrib.
That target name is the entire integration story for those tools. Anything you find under contribs is not built by default, is not part of the documented product surface, and is not covered by the same expectations as src/ and doc/. It is a known characteristic of this repository that third party and experimental code shares the tree without sharing the build.
There is a parallel example of the same pattern one level up. `doc/` holds latex, html and ascii papers, READMEs and guides, and the manual pages for Slurm commands and configuration files sit there too. The distinction between the reference manual in doc/ and the operational guidance on the vendor site is the same distinction as contribs versus core: one is versioned with the code, the other is versioned with the release.
Against Kubernetes, Slurm owns the batch queue instead of the pod
The comparison people actually ask is with Kubernetes, and the difference in approach is sharp enough to state without benchmark numbers. Kubernetes schedules containers: you submit a pod, the control plane places it, and the unit of allocation is a set of containers on a node. Slurm schedules jobs: you submit a job, the controller places it, and the unit of allocation is a set of compute nodes held for a duration.
That difference shows up in the failure model. A container that exits releases its resources immediately. A Slurm job that hangs holds its nodes until cancelled, which is exactly the behaviour a cluster operator wants for a queue of multi-hour simulations and exactly the behaviour a web service operator does not want. A batch scheduler makes waiting in line a first class state. A container orchestrator does not.
The other difference is where the work runs. Kubernetes assumes a container image and a node abstraction. Slurm launches programs directly on nodes through its own allocation and launch path, with the interconnect and topology handled by plugins rather than by an image boundary. Which one fits depends on whether your work is a batch queue or a service.
Editorial conclusion
Adopt Slurm when your cluster runs multi-node batch work and someone will own a partition, an accounting plugin and a slurm.conf. Do not adopt it for a single machine, or as a container orchestrator replacement, because the queue it gives you is the cost. Before anything else, read the quickstart page and confirm your interconnect and filesystem assumptions survive contact with the topology plugins.
Frequently asked questions
What is Slurm used for?
Slurm is an open-source cluster resource management and job scheduling system. It allocates compute nodes to users for a set duration, provides a framework for starting, executing and monitoring parallel work on those nodes, and manages a queue of pending work so competing requests are arbitrated.
What is Slurm vs Kubernetes?
Kubernetes places containers as the scheduling unit, while Slurm places batch jobs and holds allocated compute nodes for the job's duration. Slurm treats waiting in a pending queue as a first class state, which suits multi-hour batch work rather than long running services.
How do I install Slurm?
The README gives no install command itself. It directs you to the quickstart admin guide at https://slurm.schedmd.com/quickstart_admin.html for compiling and installing the distribution, and to https://slurm.schedmd.com/slurm.html for the wider documentation.
How do I use Slurm on Linux?
Slurm has been tested only under Linux. The repository ships the autotools files configure and configure.ac, an INSTALL document, a sample configuration file under etc/, and a test suite written for Check, Expect and Pytest under testsuite/.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/schedmd-slurm)