This is a design proposal for PBS to start supporting use of conditional and logical operators in the resources requested by jobs.

Gist of proposed changes:

One requirement is for the user/admin to be able to specify their preference of node selection criteria. This requirement can be met if we have support for conditional operators while specifying resources. Conditional operators with consumable resources however would create a lot of ambiguity because then PBS will not know how many resources to allocate to the job (example ncpus>4 might result into anything from 5 to infinity). Due to this limitation with consumable resources, PBS will only support conditional operators with non-consumable resources.


Second requirement is for the user/admin to be able to provide multiple resource specifications and make PBS use one as soon as it knows that it can start the job with that resource specification. User here has the flexibility of specifying their preferred choice of  resource specification by specifying it as the first in the list of resource specifications. PBS scheduler will look at each of the resource specifications in the order they have been specified and may choose to run the job with a specification as soon as it knows that it can. This fall in line with PBS scheduler's way of finding a node solution based on the "first fit" algorithm.

In case scheduler finds out that it can not run such a job because of resource unavailability and tries to calendar the job so that resources can be reserved for this job in future, it will use only the first resource specification to calendar the job.

If running job which was initially submitted with multiple resource specifications gets requeued for any reason (like qrerun or node_fail_requeue or preemption by requeue), the job will get reevaluated to run by looking at each of the multiple resource specifications it was initially submitted with.


link to forum discussion

Interface 1: Extend PBS to allow users to submit jobs requesting multiple select specifications using logical OR ("||") operator.


Interface 2: Extend PBS to allow users to submit jobs requesting non-consumable resources with conditional operators.


Interface 3: New log/error messages added to PBS


Interface 4: New resource call "job_wide"


Interface 5: New Job attribute called "sched_job_wide"


Interface 6: New job attribute "max_resc_req"


Interface 7: New job attribute "min_resc_req"


Interface 8: Limitation in running jobs with "qrun -H" option.