Scheduling priorities
Each job submitted to the scheduler receives a priority. Generally, the highest priority jobs are considered for scheduling first.
A jobs priority consists of several factors:
- QOS : We do not use QoS based scheduling. Both hpc (submitted to a project) and normal (not submitted to a project) jobs receive the same priorities.
- Job size : Larger jobs get a higher priority. This helps larger jobs to get scheduled as they are more difficult to find resources for.
- Partition : Some partitions (devel, devel-gpu, parallel) give jobs in that partition an increased priority.
- Age : Job priority increases the longer a job is queued, reaching it's maximum value after 2 weeks.
- Fair Share : A fair share priority is assigned to each job, depending on the user and projects previous usage. This reduces job priority as you use more resources, this reduction decays back to 0 with a half life of 14 days. Usage is calculated when a job completes as:
cpu_hours_used + 0.25 x Memory (GB) + 128 * gpu_hours_used
You can view your current fair share factors with:
sshare -U
This will show the current fair share factor of jobs you submit against the projects you are a member of.
Backfill
In addition to pure priority based scheduling, the scheduler will backfill smaller jobs into gaps around larger jobs. For this reason, job priority is often of limited relavence to short (<12 hour) jobs which only request small amounts of cores and memory as they will usually be backfilled around other jobs.