How To Order Job Execution

Negotiation identifies a queued set of jobs from a particular user that may be executed. If the user has more jobs queued, waiting to be executed, than there are machines available and offered, it may be convenient to specify the order in which these jobs are to be chosen for execution. This may be accomplished by setting a job priority. A higher job priority job goes before a lower priority job. A job priority can be any integer, and larger values are of higher priority. So, 0 is a higher job priority than -3, and 6 is a higher job priority than 5.

Jobs may be categorized under six different levels of prioritization. For the simple case where each job can be given a distinct priority, and no categories are required, an already queued job's priority may be set with the condor_prio command; see the example in the manual section 2.6.4, or the condor_prio manual page for details. This single category changes the value of job ClassAd attribute JobPrio .

The six category levels are defined by the job ClassAd attributes:

    PreJobPrio1
    PreJobPrio2
    JobPrio
    PostJobPrio1
    PostJobPrio2
    QDate

The set of highest priority jobs from the user are those that define PreJobPrio1 . This set of jobs are compared only with other jobs that define this attribute. These jobs are run first, and in the ordering given by the value of PreJobPrio1 . For those jobs that have the same value of PreJobPrio1 , the value for PreJobPrio2 is used. And, the comparison continues through the other four levels where there are matching values.

After any and all jobs that define PreJobPrio1 are prioritized, PreJobPrio2 is considered on any remaining jobs queued for this user. Those jobs defining PreJobPrio2 are ordered, with the comparison continuing through the remaining levels where there are matching values of attributes.

This comparison algorithm continues at each category level, until QDate does ordering by the time at which the job entered the queue. The job in the queue the longest has highest priority.

One or more of these attributes, other than QDate may be set in the a job's submit description file by adding a line that defines the ClassAd attribute. For example, consider the set of A jobs submitted by user chris. These A jobs are to be given the highest priority of all of chris' jobs. Assume the submit description file for job A1 includes

  +PreJobPrio1 = 5
  +JobPrio = 20

The submit description file for job A2 includes

  +PreJobPrio1 = 5
  +JobPrio = 30

Also consider the set of B jobs, also submitted by user chris. These B jobs are prioritized lower than the A jobs. The submit description file for job B1 includes

  +PreJobPrio1 = 2

The submit description file for job B2 includes

  +PreJobPrio1 = 2

The B jobs will be ordered by QDate , so assume that B1 was submitted before B2.

The ordering given to these four jobs will be A2 (highest priority), A1, B1, B2 (lowest priority).