Definitions · HPC

What is SLURM?

SLURM is the cluster scheduler behind most HPC sites. What it controls, why it became the standard, and how its jobs reach the market.

A data-centre aisle: racks of servers receding into the distance.
Racks down a data-centre aisle.

SLURM is an open source job scheduler for Linux clusters: it divides a fleet of machines into partitions, decides which job runs on which node and when, and enforces the allocation rules the site has set. The name is short for Simple Linux Utility for Resource Management.

SLURM sits between a user with an allocation and the hardware. Jobs arrive with requirements - a partition, a node count, an accelerator count, a walltime limit - and the scheduler places them, queues them behind policy, or rejects them. On a well-run site nothing executes on a node outside its accounting, which is why the scheduler doubles as the record of what happened.

What SLURM controls

The scheduler's responsibility covers the whole job lifecycle:

  • Partitions and nodes - which queues exist, what hardware sits in them, and who may submit to each.
  • Job state - pending, running, completed, failed and cancelled, including dependencies between jobs.
  • Policy - fairshare, quality-of-service levels, reservations and priority weights.
  • Isolation - CPU, memory and accelerator allocation per job, typically enforced with cgroups.
  • Accounting - who ran what, for how long, against which allocation.

That last item is why research facilities and national laboratories standardise on it: the component enforcing the rules and the component producing the billback report are the same component.

Why it became the default

SLURM won by being open, portable across hardware generations, and specific enough for batch work: users submit with familiar commands, a controller daemon assigns work, and daemons on the nodes execute it. Alternatives exist - PBS variants, LSF, MOAB - and remain in place at sites that have invested in them, often behind portals such as Open OnDemand that present the queue through a browser.

Accelerators entered the model as allocatable resources rather than as a separate world, so a job can request GPUs alongside cores and memory and land on nodes that have them. Sites configure authentication to suit their own identity infrastructure, with munge the customary choice on clusters and token-based authentication used where a service talks to the controller.

A job's life through the queue

Users work with SLURM through submission commands: a batch script is handed over with the resources it needs, an interactive allocation is taken when a shell is wanted, and a step command launches work on the nodes already assigned. From there a job is pending until policy and capacity permit it, running while its steps execute, and finally completed or failed with output and exit status recorded where the submission asked for them.

Two features make a queue usable at site scale. Arrays let one script stand for a family of related jobs, so a parameter sweep is scheduled as a group instead of as hundreds of separate submissions. Dependencies let one job wait on another, turning a pipeline of stages into a chain the scheduler holds together. Neither changes what an outside buyer sees: a job either receives its resources and runs, or it waits its turn.

SLURM jobs versus cloud leases

Supercomputing does not buy like cloud. Work arrives as jobs with resource requirements, walltime limits and partition targets, scheduled against allocation policies that encode years of institutional decisions. A long-running service lease, priced by the hour with an open-ended duration, is the wrong shape for that - and forcing batch work into it loses the accounting, the queueing fairness and the backfill that make a cluster efficient. For the wider category see HPC.

The mismatch runs both ways. A cluster operator asked to sell capacity does not want a tenant's container orchestrating over the top of the queue and bypassing policy, and a tenant does not want to hand a workload to a scheduler whose queue they cannot see. Both concerns point at the same design: expose the job, not the node.

Batch capacity as an order on the market

The HPC on VirtEngine guide describes the bridge: the x/hpc module models a batch job on-chain with resource, walltime and partition requirements, and the provider daemon polls those jobs and dispatches them through a native SLURM adapter configured with the site's own authentication and partition names. Concurrency limits and timeouts are set by the operator, and job state is recovered crash-safely if a component restarts mid-run.

What does not change is who owns scheduling. The cluster's controller still decides what runs where, so the marketplace becomes another source of authorized work rather than a second scheduler fighting it for the nodes. Usage from those jobs flows into the same signed reporting and settlement path as any other lease, and facilities able to sell spare cycles find them listed under HPC clusters rather than quoted per customer.

In practice

A site running SLURM for its own researchers exposes the same partitions to on-chain jobs through the adapter, with the controller still deciding what runs when.

HPC jobs on the market →

Questions

Asked about what is slurm

What does SLURM stand for and what does it do?

Simple Linux Utility for Resource Management. It is an open source scheduler that assigns batch jobs to the nodes of a Linux cluster according to partitions, policy and the resources each job requests.

Is SLURM the same as a batch queue?

A queue is one part of it. SLURM also manages the nodes themselves, enforces isolation and priority, tracks dependencies between jobs, and produces the accounting records a site bills allocations against.

Do SLURM sites have to change anything to sell capacity?

No re-platforming is required. The provider daemon's adapter speaks to the existing controller with the site's own authentication and partition configuration, so the scheduler keeps running the cluster exactly as it does for internal users.

How are SLURM jobs paid for on VirtEngine?

An on-chain job is matched to a lease backed by escrow, the cluster executes it through the adapter, and usage from the job is reported in signed batches. Those records pass through the dispute window and settle from escrow like any other workload.

More questions → FAQ