Skip to main content

Slurm Package

The Slurm package in this repository provides an enhanced version of the Slurm Workload Manager with additional build variants, production-ready patches, and optimized dependency management.

Overview

Slurm (Simple Linux Utility for Resource Management) is an open-source, fault-tolerant, and highly scalable cluster management and job scheduling system for Linux clusters.

This custom package extends the standard Spack Slurm package with:

  • Additional build variants for modern features
  • Production-tested patches
  • Optimized RPATH configuration for relocatability
  • Enhanced dependency management
  • Pre-built binaries in the public buildcache

Available Versions

VersionRelease DateStatus
25-11-0-12025-11Latest
24-11-6-12024-11Stable
23-11-11-12023-11Stable

Older versions may be deprecated due to security vulnerabilities (CVE-2022-29500, CVE-2022-29501, CVE-2022-29502, CVE-2021-31215).

Build Variants

The Slurm package supports numerous build variants to customize your installation:

Core Features

VariantDefaultDescription
sysconfdirPREFIX/etcSystem configuration directory (e.g., /etc/slurm)
readlinetrueEnable readline support for interactive commands

Scheduler & Plugins

VariantDefaultDescription
pmixfalseEnable PMIx support for MPI integration
luafalseEnable Lua scripting support for job submit plugins
kafkafalseEnable Kafka profiling plugin for job accounting
mcsfalseEnable MCS support for Kubernetes integration

Monitoring & Hardware

VariantDefaultDescription
hwlocfalseEnable hwloc for hardware topology detection
nvmlfalseEnable NVIDIA GPU support via NVML
rsmifalseEnable AMD GPU support via ROCm SMI
ipmifalseEnable IPMI support for hardware monitoring via FreeIPMI
cgroupfalseEnable cgroup plugin for resource isolation

Database & APIs

VariantDefaultDescription
mariadbfalseUse MariaDB instead of MySQL for accounting database
hdf5falseEnable HDF5 support for profiling data
restdfalseEnable slurmrestd REST API server

Security & Authentication

VariantDefaultDescription
pamfalseEnable PAM support for authentication
certsfalseEnable certificate generation (Slurm >= 24.11)

UI

VariantDefaultDescription
gtkfalseEnable GTK+ support for GUI tools

Installation Examples

Basic Installation

Install the latest Slurm with default options:

spack install slurm@25-11-0-1

Production Configuration

Install with common production features:

spack install slurm@25-11-0-1 \\
+pmix \\ # MPI integration
+hwloc \\ # Hardware topology
+restd \\ # REST API
+pam \\ # PAM authentication
+cgroup \\ # Resource isolation
sysconfdir=/etc/slurm

GPU Cluster

For NVIDIA GPU clusters:

spack install slurm@25-11-0-1 +nvml +hwloc +pmix

For AMD GPU clusters:

spack install slurm@25-11-0-1 +rsmi +hwloc +pmix

Kubernetes Integration

For Kubernetes-integrated clusters:

spack install slurm@25-11-0-1 +mcs +restd +hwloc

Advanced Monitoring

With IPMI hardware monitoring and Kafka profiling:

spack install slurm@25-11-0-1 \\
+ipmi \\ # Hardware monitoring via IPMI
+kafka \\ # Job profiling to Kafka
+hwloc \\ # Hardware topology
+hdf5 # HDF5 profiling data

Development/Testing

Minimal installation for development:

spack install slurm@25-11-0-1 +readline +hwloc

Dependencies

Required Dependencies

Always included:

  • curl (with LDAP support) - Required for InfluxDB plugin
  • MySQL - Database for job accounting
  • OpenSSL - Cryptography and secure communications
  • Munge - Authentication service
  • JSON-C - JSON parsing
  • LZ4 - Compression
  • ncurses - Terminal handling
  • glib - Core libraries
  • libssh2 - SSH protocol support
  • libjwt - JWT authentication tokens
  • zlib - Compression

Optional Dependencies

Enabled by variants:

  • PMIx (+pmix) - Process management interface
  • hwloc (+hwloc) - Hardware locality/topology
  • Lua (+lua) - Scripting support
  • librdkafka (+kafka) - Kafka client library
  • FreeIPMI (+ipmi) - IPMI hardware monitoring
  • CUDA (+nvml) - NVIDIA GPU support
  • ROCm SMI (+rsmi) - AMD GPU support
  • D-Bus (+cgroup) - Cgroup plugin
  • Linux PAM (+pam) - Authentication
  • HDF5 (+hdf5) - Hierarchical data format
  • http-parser (+restd) - HTTP parsing for REST API
  • libyaml (+restd) - YAML parsing for REST API
  • GTK+ (+gtk) - GUI toolkit

Configuration Files

After installation, Slurm requires configuration files in the sysconfdir directory:

  • slurm.conf - Main configuration file
  • slurmdbd.conf - Database daemon configuration
  • cgroup.conf - Cgroup plugin configuration (if +cgroup)
  • topology.conf - Network topology (optional)
  • gres.conf - Generic resource configuration (for GPUs, etc.)

Example slurm.conf location:

# Default (if sysconfdir=PREFIX/etc)
$(spack location -i slurm)/etc/slurm.conf

# Custom (if sysconfdir=/etc/slurm)
/etc/slurm/slurm.conf

Relocatability

This package is built with proper RPATH configuration, making it relocatable. You can:

  • Install to a temporary location and move it later
  • Create tarballs for deployment on other systems
  • Use with container images

The package includes RPATH entries for:

  • $ORIGIN/../lib/slurm - Internal Slurm libraries
  • Dependency library paths

Build from Source vs. Buildcache

Fast installation from pre-built binaries:

spack install --cache-only slurm@25-11-0-1

From Source

Build with custom variants (takes several hours):

spack install slurm@25-11-0-1 +pmix +hwloc +restd +ipmi

Package Source

License

Slurm is licensed under GPL-2.0-or-later.

Known Issues

CVE Deprecations

Versions prior to the following are deprecated due to security vulnerabilities:

  • < 20.11.9 or < 21.08.8: CVE-2022-29500, CVE-2022-29501, CVE-2022-29502
  • < 20.02.7 or < 20.11.7: CVE-2021-31215

Always use the latest patch release for your version series.

Compiler Compatibility

GCC 10+ requires the -fcommon flag for Slurm versions <= 20.02.1. This is automatically handled by the package.

See Also