Slurm Job Priority¶
Slurm manages job execution for optimal efficiency, prioritizing organization and resource use to minimize waiting times for users. Jobs enter a queue before being assigned processing time by Slurm's intelligent scheduling system, guided by predefined rules.
Note
Jobs are selected for evaluation by the scheduler in the following order:
- Jobs capable of preemption
- Jobs with advanced reservations
- Partition PriorityTier
- Job priority
- Job submit time
- Job ID
Generally, your job will be chosen if it:
- Has a higher priority than other jobs.
- Another job ends preemptively, and your job is small enough to be backfilled.
Investigating the Priority of Jobs¶
Checking your job's current priority is straightforward.
When you submit a job, take note of its job ID. If you are unsure of what your jobs ID is
you can check it with the squeue command.
Then, query the priority using sprio --jobs <jobid>:
marie@login$ sprio --jobs=123456
          JOBID PARTITION   PRIORITY       SITE        AGE  FAIRSHARE    JOBSIZE        QOS
         123456 barnard         1145          0        501        644          1          0
Alternatively, display all your jobs with the --user flag:
marie@login$ sprio --user="$(whoami)"
          JOBID PARTITION     USER   PRIORITY       SITE        AGE  FAIRSHARE    JOBSIZE        QOS
         123456 barnard      marie       1145          0        501        644          1          0
         123457 barnard      marie        694          0         50        644          1          0
         123458 barnard      marie        652          0          7        644          1          0
         123459 barnard      marie        651          0          7        644          1          0
Priority Calculation¶
Now that you understand how to view your job's priority, you might be interested in maximizing it. To achieve this, consider the following factors and their corresponding weights:
| Factor | Value | Weight | Description | 
|---|---|---|---|
| Age | 0 - 1 | 1000 | Starts out at 0and maxes out to1after14 days | 
| Fair-Share | 0 - 1 | 100000 | A value contrasting a user's allocated resource share to their actual resource consumption. | 
| Job size | 0 - 1 | 1000 | The number of nodes or CPUs a job has allocated. | 
Your job's priority is determined by multiplying each factor's value by its weight and summing the results.
Checking Weights and User-Specific Factors¶
The priority weights may change in the future, e.g., to optimize the scheduling for a better
resource utilization. You can check the current weights yourself using the sprio command:
marie@login$  sprio --weights
          JOBID PARTITION   PRIORITY       SITE        AGE  FAIRSHARE    JOBSIZE        QOS
        Weights                               1       1000     100000       1000    1000000
Some properties, like PriorityMaxAge, can only be viewed in the Slurm configuration:
marie@login$ scontrol show config | grep -E "Priority(M|W)"
PriorityMaxAge          = 14-00:00:00
PriorityWeightAge       = 1000
PriorityWeightAssoc     = 0
PriorityWeightFairShare = 100000
PriorityWeightJobSize   = 1000
PriorityWeightPartition = 0
PriorityWeightQOS       = 1000000
PriorityWeightTRES      = (null)