There are six factors in the Multi-factor Job Priority plugin that influence job priority:

AgeThe length of time a job has been waiting in the queue, eligible to be scheduled.
Fair-shareThe difference between the portion of the computing resource that has been promised and the amount of resources that has been consumed.
Job sizeThe number of nodes or CPUs a job is allocate.
PartitionA factor associated with each node partition.
QOSA factor associated with each Quality Of Service.
TRESEach 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.