Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

There are basically two requirements that we are trying to fulfill here - 

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.

...

  • Visibility: Public
  • Change Control: Stable
  • Details:
    • Users can request for non-consumable chunk level resources with conditional operator like "<, >, <=, >=, !=.
      • Example: qsub -lselect=1:ncpus=4:color!=green job.scr
    • In case the non-consumable resource here is a string then, PBS scheduler will do the resource comparison using string comparison function. In other words, PBS does not really know about the resource and how it has been set up, So it uses alphanumeric string comparison functions to actually compare the resource values while honoring conditional operators.
      Admins need to be very careful in specifying values to these resources so that they can get meaning comparison using conditional operators.
      For example: specifying string value to a version resource like - "ver_12" might turn out to be greater than "ver_045". But, if all such resources have three numerical digits at the end then ver_012" will turn out to be lesser than "ver_045" which is probably what user wants to see.
    • Users can request for non-consumable resources with conditional operators in reservations as well.

...