From 5336662ca16866fe1dd5ca850bc73da729e9d20f Mon Sep 17 00:00:00 2001 From: Jhonatan Amado V Date: Mon, 2 Feb 2026 12:44:58 -0500 Subject: [PATCH] slurm admin/user documentation --- assets/slurmusers.png | Bin 0 -> 37931 bytes assets/slurmworkflow2.png | Bin 0 -> 90353 bytes batch-compute.md | 381 ++++++++++++++++++++++++++++++-------- 3 files changed, 307 insertions(+), 74 deletions(-) create mode 100644 assets/slurmusers.png create mode 100644 assets/slurmworkflow2.png diff --git a/assets/slurmusers.png b/assets/slurmusers.png new file mode 100644 index 0000000000000000000000000000000000000000..c8886d0b7e39e6f8fadc94d4b0b79781e2f9f2d2 GIT binary patch literal 37931 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

7M2JPUl>MmTd2I$jt1%`10{Kd(v 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:` +- Example form: `FACILITY_A:repo1` -Each Repo can have one of three stances in relation to a specific -cluster: +This is the key: **SLURM accounts are not arbitrary**—they are intended to correspond 1:1 with **Coact Repos**, namespaced by **Facility**. -1. Reservation: for repos with real time requirements or with - uniform usage over time (for that cluster). A subset of super-users - from each facility will be allowed to create reservations. Users - will submit jobs for this stance using the repo name and reservation - name. For example: - `--partition milano --account lcls:xpp1234 --reservation lcls:xpp1234-230101-230105` +--- -2. Allocation: for repos within their allocation quota (for - that cluster). This is the default stance and users will submit jobs - for this stance using the repo name. For example: - `--partition milano --account lcls:xpp1234` +## How your job is “tied” to Coact -3. Preemptable: for repos above their quota or with no quota (for - that cluster). Jobs in this category may be preempted by higher - priority jobs. This is the opportunistic cycles stance, aka - scavenger cycles, and jobs are submitted under the repo name - and quality of service preemptable. For example: - `--partition milano --account lcls:xpp1234 --qos preemptable` +When you submit a job, SLURM needs to know which **account** it should charge and schedule against. At S3DF that means: -As a matter of convention: +1. You choose (explicitly or implicitly) a **SLURM account**: `:` +2. That account corresponds to a **Coact Repo** +3. That Repo belongs to a **Facility** +4. SLURM scheduling and limits are then applied using that **Association** (your user + that account) -- Default Slurm account = `` -- Repo Slurm account = `:` -- Slurm reservation = `:--` +Practically, this means your job is evaluated within a hierarchy: +- **Facility-level context** (ownership/priority intent, dedicated nodes, facility-wide limits) +- then **Repo-level allocations** (what the CZAR has granted that Repo) +- then **user-level limits** (if configured for the association) -The mapping of repos to dedicated resource is dynamic. This is -required, for example, to assign different nodes to a repo so that a -rolling upgrade does not cause an outage for stance 1, or to change -the amount of resources dedicated to real-time and fast-feedback -activities within a cluster to match the actual requirements of a -running experiment. +--- -![repostance](assets/s3df-slurm-repostance.png) +## Why the Facility hierarchy matters (priority + immediacy) -### Batch Clusters +Some Facilities have acquired or purchased **dedicated compute nodes** to serve their users. The SLURM configuration is built to preserve the value of that investment: -See the table below to determine the specifications for each cluster (slurm partition). +- **Facility users should be able to run on Facility-owned hardware with immediacy** +- Other work should not be able to swamp that capacity simply by submitting large volumes of jobs + +So while S3DF is a shared environment, SLURM is set up so that **accounting and policy reflect ownership and allocation** via Coact. + +--- + +## What “Association limits” are doing for you (and everyone else) + +To support the goals above, S3DF uses **SLURM Association limits** (and related policy controls) to constrain how work enters and consumes the system. + +These limits exist to prevent situations like: + +- A non-owning group flooding the scheduler with jobs that delay others +- A single Repo consuming disproportionate CPU/mem/GPU over long periods +- Shared partitions being effectively monopolized by a small set of accounts + +In other words, **limits are not punitive**—they’re a mechanism that helps: + +- protect **Facility immediacy** on dedicated hardware +- preserve reasonable throughput and responsiveness on shared capacity +- make Coact allocations meaningful and enforceable in SLURM + +The association limits affect jobs scheduling in the following ways: +- If an account reaches any of the `grp*`, no new jobs will start until running jobs complete or faild and release the grp association. +- All the `grp` associations are **enforced as equal**. There is not an hierarchy applied to enforce limits (i.e first apply `grpcpulimit` and then apply `grpnodelimit`) +- If an account exceed `grpsubmit`, SLURM will reject new submission immediately +- `gpr*` limits are applied before QOS or priority. + +--- + +## What you should take away as a user + +- Your SLURM job “belongs” to an **account**, and at S3DF that account represents **a Coact Repo under a Facility**. +- The canonical account format is: **`:`**. +- **Facility CZARs** control how much compute capacity is allocated to each Repo, and SLURM enforces/expresses that via its accounting+policy system. +- Facility ownership (especially dedicated nodes) is central to how scheduling fairness and immediacy are implemented. +--- +## Key concepts +### What is a Job? +A job is the basic unit of work a coact user submit to the SLURM infrastructure. Represent a request to use resources from S3DF cluster accounting through COACT in the `facility:repo` with some requirements (cpu,mem,gpu,partition,time,cpu/task). +This request can be performed in two options +- Batch script called by `sbatch script.sh` that create a request to use resources from the cluster using `python, bash, mpi, openmp ` among others +- Interactive shell called by `srun` that create a request to use resources requested. + +### What is a cluster? +A cluster is a group of heterogeneous servers connected by a network managed by a single SLURM control system and reflects the amount of resources that all the Facilities and experiments contributed physically and are registered in COACT. + +All servers/nodes (independent of the architecture) are registered in the cluster configuration in order that users are allowed to use the amount of resources requested by the job. + +### What is an ACCOUNTS: +Created by the CZAR of each facility through COACT, allows the CZAR to control who can run jobs and how many resources the users associated with particular accounts `facility:repo` can run in S3DF. + +S3DF use the following **parent/child association** SLURM schema + +- |->facility:_regular_@partition + |---->facility:repo_name@partition + |--------> [users] + |->facility:_defualt_@partition + |----> [users] + +- `facility:repo_name@partition` allowing `qos=normal` and `qos=preemptable` jobs. `qos=normal` is the **default** `qos` unless this value is overwrite by the CZAR + +- The `qos=preemptable` jobs that runs under `facility:repo_name@partition` account have more priority than preemptable jobs running under the `facility:_default_@partition` parent account and less priority than the `qos=normal` jobs. The usage of all type of jobs is accounted for in COACT. The bump in the priority is given by the `job_submitl.lua` in the SLURM.conf [TBD]. + +The `repo_name` level account contains the association on how many max resources this account is entitled to use. (Total number of concurrent cpus, Total amount of mem and number of concurrent nodes, total number of concurrent gpus) `grpcpu,grpmem,grpnode,grpgpu` and these numbers are enforced and updated by the CZARs through COACT. + +- `facility:_default_@partition` allows only `qos=preemptable` and by definition `qos=preemptable` is the **default** qos. This usage is **not** accounted for in COACT and has a max limitation of concurrent number of jobs and number of jobs arrays imposed by the `slurm.conf` and/or number of jobs imposed by COACT imposed by the CZARs of the facility + +### What is QOS: + +Determines the **Quality Of Service** in the S3DF cluster. Each `qos` has associated a priority. The current values are: + +| QOS | Description | Priority | +| ------ | ----------- | -------- | +| **expedite** | Very high priority | `100000` | +| **offline** | High priority | `50000` | +| **normal** | Standard jobs | `10000` | +| **preemptable** | Can be cancelled by any of the previous QOS| `1` | + +#### PREEMPTABLE AND REGULAR JOBS QOS + +In order to allow users of facilities to submit jobs that are either (1) beyond the total acquired resources available to the Repo and/or Facility whilst still allowing other facility users immediate access to their paid resources, we allow jobs to be run that can be flagged as ‘preemptable’. + +Such jobs will be terminated by the SLURM controller in order to release resources for non-preemptable jobs. + +- Jobs may be cancelled at any time if higher priority jobs need resources +- Useful for small, low-priority or opportunistic workloads +- Preferred by the backfill scheduler in order to improve the cluster usage. + +This type of jobs will fill the gaps of free resources on time windows less than the default (10 days). + +It's advisable, even if the jobs is non-preemptable, to give the aprox time that the jobs will take to end, if not a default of 10days will be used + +### What is an ASSOCIATION LIMIT? + +In order to prevent users (and by nature accounts) in SLURM from hogging all resources of a cluster, we must impose quotas on the amount of resource that each account can utilize. + +All the accounts have limits such as: +- Number of simultaneous jobs running by all the users that belongs to a particular repo. This limits can be identified if the job is in pending state with `reason=grpmaxjob` +- Aggregated total nodes,cores,mem running by all the users that belongs to a particular repo. This limits can be identified if the jobs is pending state with `reason=grpcpulimit,grpmemlimit,grpnodelimit,grpgpulimit +` +- Total number of submitted jobs given by the association* (facility:_default_) or by the max amount in the `slurm.conf`. Jobs will be pending with `reason=grpsubmitjobs` + +### CLUSTER PARTITION AND BASIC CLUSTER INFORMATION +S3DF implements SLURM `partition` as a pool of identical compute nodes. To be able to use those pool with non-preemptable jobs, discuss with your CZAR. + +High-memory milans nodes are entitled to be used by `qos=preemptable` jobs and by the facilities that contributes to those nodes. + +> If your facility does not own any high-memory nodes, then any attempt to submit `qos=normal` jobs to high-memory nodes will fail. + +At S3DF: +- All partitions are treated equally in terms of scheduling. There is not preference in priority or other +- There are no partition-specific restrictions for preemptable jobs. +- Users must submit the job spec including the partition, although the `partition=rome` is the **default**. +- GPU only partitions are (turing, ampere, ada). Job priority for cpu-only jobs submitted to this partitions are penalized in priority [TBD]. +- All partitions support preemptable jobs. There is no “preemptable-only” or “non-preemptable-only” partition. +- GPU partitions expose GPUs via GRES. + +#### Partitions + +See the table below to determine the specifications for each slurm partition. | Partition name | CPU model | Useable cores per node | Useable memory per node | GPU model | GPUs per node | Local scratch | Number of nodes | | --- | --- | --- | --- | --- | --- | --- | --- | @@ -84,33 +185,165 @@ See the table below to determine the specifications for each cluster (slurm part | ampere | AMD Rome 7542 | 112 (hyperthreaded) | 952 GB | Tesla A100 (40GB) | 4 | 14 TB | 42 | | turing | Intel Xeon Gold 5118 | 40 (hyperthreaded) | 160 GB | NVIDIA GeForce 2080Ti | 10 | 300 GB | 27 | | ada | AMD Genoa 9454 | 72 (hyperthreaded) | 702 GB | NVIDIA L40S | 10 | 21 TB | 19 | +| hopper | AMD 9575F | 112 (hyperthreaded) | 1344 GB | NVIDIA h200 | 4 | 21 TB | 3 | +| torino | AMD EPYC9555 | 120 | 720 GB | - | - | 6 TB | 52 | -### Resource Restrictions +#### SLURM FEATURES AND CONSTRAINTS +Batch nodes at S3DF have specific features (or labels) assigned which define certain characteristics of the nodes. Users can specify which of those features are required by their jobs using the slurm `constraint` options in their job submission. Only nodes with that match these defined contained/features will run the job. -Each slurm Account will have limitations set according to it's associated Coact Repo's [compute Allocation](coact.md#compute-allocation). Please contact your Facility Czar for information. +To know what avaiable features/constraints each node has, use +`scontrol show node` and check the `ActiveFeatures` output. -The [Coact](coact.md) system will keep track of the compute time spent by each Repo on -each Cluster. Once a Repo reaches its computing quota on a cluster (as defined by its [Allocation](coact.md#compute-allocation)), -further job submissions to that cluster will be paused. +Multiple constraints may be specified during job submission. Please refer to the official documentation for more information. +## SCHEDULING PRIORITY +Scheduling priority is determined by fair-share that relies on the usage of the facility and the usage on the resources accounted for (cpu,mem,gpu,jobtime). -### Slurm Features and Constraints +The priority is computed by the [priority multifactor](https://slurm.schedmd.com/priority_multifactor.html#general) formula and the `QOS` is the variable that count the most. -Batch nodes at S3DF have specific features (or labels) assigned which define certain characteristics of the nodes. Users can specify which of those features are required by their jobs using the slurm `constraint` options in their job submission. Only nodes with that match these defined contained/features will run the job. +## SCHEDULING BEHAVIOUR -Multiple constraints may be specified during job submission. Please refer to the [official documentation](https://slurm.schedmd.com/sbatch.html) for more information. +The scheduling behaviour is in function of multiple variables as fair-share, QOS and priority. +The `qos=normal` job will start as soon as resources are available, even if the `qos=preemptable` job was submitted first. -#### High-Memory Milano Nodes +However, if a `qos=normal` job can not start (ie association limits, large WAL time window) but `qos=preemptable` jobs can fit, the **backfill scheduler** may choose those jobs to run temporarily. -Batch nodes that belong in the same partition have homogeneous software and hardware. However, for the `partition=milano`, S3DF supports some subtle hardware differences. High-memory Milano nodes allow preemptable jobs by from any user by default, even if the user does not explicitly specify the constraint identifying those nodes during job submission. This policy maximizes CPU usage and prevents the creation of small silos in the S3DF cluster. +The **backfill scheduler** is designed to schedule low-priority jobs during time windows where higher-priority `qos=normal` jobs cannot yet start, provided the backfilled jobs can complete within their submitted walltime and **will not** delay those higher-priority `qos=normal` jobs, in order to maximize cluster utilization. -To run jobs specifically on high-memory nodes, you must submit the jobs using the corresponding constraint of `MEM_SZE:1920GB`. Only facilities whom have procured such nodes may run `qos=normal` jobs on these nodes: +### Preemption rules +Preemtiion at S3DF are controlled by: ``` -# sbatch --constraint="MEM_SZE:1920GB" ... +PreempType=preempt/qos +PreemptMode=cancel ``` +This means: +- Normal can preempt preemptable +- Expedite can preempt preemptable +- Offline can preempt preemptable +- Expedite can not preempt normal +- Expedite can not preempt offline +- Offline can not preempt Normal + +A preemptable jobs is canceled when: +- A higher priority QOS job can not start +- But cancelieng a preemptabje job (or multiple jobs) frees enough resources. +- The **backfill scheduler** has no valid placement that avoid preemption, jobs scheduled by the backfill scheduler are subject to be preempted in the same way as the jobs scheduled by the main scheduler +- Once the job is preempted, the jobs will show as state `PREEMPTED` or `CANCELED` by scheduler + +### BACKFILL SCHEDULER AND PREEMPTABLE JOBS +As mentioned before, the backfill scheduler will try to: +- Star short, small jobs that can run before larger jobs need resources (larger jobs = large time jobs and/or jobs needing several amount of resources) +- Improve node and cluster utilization + +Preemptable jobs are most of the time scheduled by the backfill scheduler because: + +- Preemptable jobs can be canceled any time +- Backfill scheduler has preference for low priority jobs +- Let users exploit idle gaps without affecting `qos=normal` jobs +- *Small `qos=preemptable` jobs (jobs with small time window and jobs using low resources) often start much faster than normal jobs. + + A summarized flowchart related on how the main scheduler, the backfill scheduler interact with the queue and some of the usual job states can be represented as follows + + +![repostance](assets/slurmworkflow2.png) + + +## JOB ARRAYS +A jobs arrays is a single SLURM submission that launched multiple almost-identical jobs (tasks) indeed by an integer. +Can be accomplished by `#sbatch –array=0-99` that creates 100 task, each with a SLURM task id = 0,1,2..99. + +Each task runs the same script but can behave different by reading: +- Files indexed by the task id +- Parameters sweep arrays + +Job arrays is a fantastic tool for large-scale parallel workload like: + +- Processing many input files +- Running interactive simulations +- Jobs with parameter sweeps +- Reduce the number of sbatch calls +- Reduce the scheduling overhead and load on the SLURMctld +- Reduce time to launch many jobs, +- If the cluster is 100% busy and/or the account hits a `grp*` limit, the taskid pending **will be scheduled in the same released resources** that the previous taskid run. + + +## Job submission example +The following script are intended to show the minimal specs and definitions that users should consider to add during a `sbatch` call + ``` +############################ +# 1) REQUIRED +############################ +#SBATCH --partition=test # MANDATORY: which partition/queue to run in +#SBATCH --account=s3dfadmin:default # MANDATORY: which account to charge. COACT format + + + +############################ +# 2) STRONGLY SUGGESTED +############################ +#SBATCH --qos=preemptable # affects priority/limits/preemption rules. Default of the account is assigned if not provided. +#SBATCH --time=02:00:00 # max runtime (HH:MM:SS). Job is killed if it exceeds this. Helps scheduler to not assign the default value (10 days) (240:00:00) and STRONGLY helps with the scheduling process finding idle resources in the future where the job could be scheduled to run up to this time + +############################ +# 3) OUTPUT OF THE JOB +############################ +#SBATCH --output=/sdf/home/u/user_name/.../slurm_%j.out +#SBATCH --error=/sdf/home/u/user_name/.../slurm_%j.err + +########################### +# 4) RESOURCES +########################### + +#MEMORY#: Choose only ONE style: +#SBATCH --mem=32G # Memory for the compelte job allocation +#or +#SBATCH --mem-per-cpu=4G # Memory allocated per cpus. slurm.conf enforce a default value 4G if not provided + +#CPU#: Total CPU allocated = ntask * cpus per tasks +#ntask has a different effect if the code is pure openMP, pureMPI or hybrid openmp-mpi. +#cpus-per-task has a different effect if the jobs runs on nodes that are HT enabled (HyperThread) +#--ntask= #represents how many independent process slurms starts (MPI ranks or separate process instances) +#--cpu-per-task= #how many logical CPUs slurm allocates to each slurm process +#SINGLE CORE EXAMPLE# +#SBATCH --nodes=1 +#SBATCH --ntask=1 +#SBATCH --cpu-per-task=1 + +#32 CORE EXAMPLE OPENMP# +#SBATCH --nodes=1 +#SBATCH --ntask=1 +#SBATCH --cpu-per-task=32 +#SBATCH --hint=multithread #Use extra threads with in-core multi-threading which can benefit communication intensive applications. Will work only with nodes enabled with HT +#SBATCH --hint=nomultithread #restricts tasks to one thread per core. Will work only with nodes enabled with HT + +#32 CORE EXAMPLE MPI# +#SBATCH --nodes=1 +#SBATCH --ntasks=32 +#SBATCH --cpus-per-task=1 +#SBATCH --hint=multithread #Use extra threads with in-core multi-threading which can benefit communication intensive applications. Will work only with nodes enabled with HT +#SBATCH --hint=nomultithread #restricts tasks to one thread per core. Will work only with nodes enabled with HT + +#32 CORE HYBRID OPENMP-MPI +#SBATCH --nodes=1 +#SBATCH --ntasks=4 +#SBATCH --cpus-per-task=8 +#SBATCH --hint=multithread #Use extra threads with in-core multi-threading which can benefit communication intensive applications. Will work only with nodes enabled with HT +#SBATCH --hint=nomultithread #restricts tasks to one thread per core. Will work only with nodes enabled with HT + + +# GPUs: +# --gpus= total GPUs for the job allocation or use +#SBATCH --gpus=1 -or include the same option in an `srun` script. - -?> If your facility does not own any high-memory nodes, then any attempt to submit `qos=normal` jobs to high-memory nodes will fail. +####################################### +# 5) Optional / constraints +####################################### +# #SBATCH --constraint=a100 # example: request specific node feature. Check all the possible features via ActiveFeatures output from scontrol show node +# #SBATCH --nodes=1 # if not provided slurm will allocate the minimum number of nodes that can satisfy the requested resources and specs [ntasks × cpus-per-task (+ GPUs, memory, constraints)] while enforcing ALL constraints. If no node is available job will be submitted but the state will be pending and reason:ReqNodeNotAvail + + ``` +The logic behind the submission process and the node decision could be summarized as follows: + +![repostance](assets/slurmusers.png) \ No newline at end of file