Implement Strict Ordering
Use strict ordering to tell PBS that it must not skip a job when choosing which job to run based on execution priority.
Strict Ordering
Overview of strict ordering.
When strict ordering is used, the scheduler runs jobs in exactly the order of their priority. Strict ordering does not affect how job priority is calculated, but it does change which execution priority classes a scheduler uses.
To configure strict ordering, enable the Strict Ordering parameter. It is a primetime option, meaning that you can configure it separately for primetime and non-primetime, or you can specify it for all of the time.
Combining Strict Ordering and Backfilling
Strict ordering alone may cause some resources to stand idle while the top job waits for resources to become available. If you want to prevent this, you can use backfilling with strict ordering. Using backfilling, if the top job cannot run, filler jobs can be squeezed in around the job that cannot run.
Strict Ordering Caveats
It is inadvisable to use strict ordering and backfilling with Fairshare. The results may be non-intuitive. Fairshare will cause relative job priorities to change with each scheduling cycle. It is possible that a job from the same entity or group as the desired large job will be chosen as the filler job. The usage from these filler jobs will lower the priority of the top job.
For example, if a user has a large job that is the top job, and that job cannot run, smaller jobs owned by that user will chew up the user's usage, and prevent the large job from being likely to ever run. Also, if the small jobs are owned by a user in one area of the Fairshare tree, no large jobs owned by anyone else in that section of the Fairshare tree are likely to be able to run.
Using dynamic resources with strict ordering and backfilling may result in unpredictable scheduling. For more information see Backfilling Recommendations and Caveats in the PBS ProfessionalAdministrator's Guide.
Using preemption with strict ordering and backfilling may change which job is the top job.
With both round robin and strict ordering, a job continually rejected by a runjob hook may prevent other jobs from being run. A well-written hook would put the job on hold or requeue the job at some later time to allow other jobs in the same queue to be run.
Use Strict Ordering
Specify that jobs must be run in the order determined by whatever sorting parameters are being used. This means that a job cannot be skipped due to resources required not being available.