There are six factors in the Multi-factor Job Priority plugin that influence job priority:
Age | The length of time a job has been waiting in the queue, eligible to be scheduled. |
---|---|
Fair-share | The difference between the portion of the computing resource that has been promised and the amount of resources that has been consumed. |
Job size | The number of nodes or CPUs a job is allocate. |
Partition | A factor associated with each node partition. |
QOS | A factor associated with each Quality Of Service. |
TRES | Each TRES Type has it's own factor for a job which represents the number of requested/allocated TRES Type in a given partition. |
Additionally, a weight can be assigned to each of the above factors.
The job's priority at any given time will be a weighted sum of all the factors and It can be expressed as:
Job_priority = (PriorityWeightAge) * (age_factor) + (PriorityWeightFairshare) * (fair-share_factor) + (PriorityWeightJobSize) * (job_size_factor) + (PriorityWeightPartition) * (partition_factor) + (PriorityWeightQOS) * (QOS_factor) + SUM(TRES_weight_cpu * TRES_factor_cpu, TRES_weight_<type> * TRES_factor_<type>, ...)
Where:
- The different factors have a value between 0.0 and 1.0.
- The wetights are unsigned 32 bit integers.
- The job's priority is an integer that ranges between 0 and 4294967295.
The sprio command shows the value of the six factors that comprise each job's scheduling priority.
The sprio -w option displays the weights (PriorityWeightAge, PriorityWeightFairshare, etc.) for each factor as it is currently configured.