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.

...

  • 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.

...

  • Visibility: Public
  • Change Control: Stable
  • Details:
    • A new resource called "job_wide" is added. This resource will be used to specify all job wide resources (resources that can not be part of a select specification) like walltime/min_walltime/max_walltime/place etc.
    • It is a string type resource and a user/operator/manager will be able to read or write this resource.
    • It is not mandatory to have this resource specified with "multiple select specifications". If not specified, PBS will consider job wide resources specified outside of select to be valid for all select specifications.
    • PBS will match the job_wide resource specification with select specification and use it for running the job.
      example: qsub -lselect="2:ncpus=3:mem=2gb||2:ncpus=4:mem=1gb"  -l job_wide="walltime=00:12:00720||walltime=00:08:00480" job.scr
      For this job walltime of 12 minutes is considered for the first select specification (2:ncpus=3:mem=2gb) and walltime of 8 minutes is considered for second select specification (2:ncpus=4:mem=1gb).
    • If a user wants to specify more than one job_wide resource then they can use '+' as the delimiter between the two resources
      example: qsub -l select="2:ncpus=3:mem=2gb||2:ncpus=4:mem=1gb"  -l job_wide="walltime=720+place=scatter||walltime=480+place=pack" job.scr
    • This resource can only be used with jobs that have multiple select specification specified with them. If it is used without multiple select specification then job submission will be rejected with the following errorto specify multiple "ORed" job_wide resources only when there are multiple select specifications present in the job. If this condition is not met following error is thrown on console:
      "
      qsub: multiple job_wide resource can only be used when multiple select specifications are specified"
    • The number of "ORed" select specification must match the number of "ORed" job_wide resources. If either of them does not match then the job submission is rejected with the following error:
      "qsub: job_wide resources and select specifications do not match"
    • If a chunk level resource is specified in the job_wide resource then that job submission will be rejected with following error:
      "qsub: Resource invalid in "job_wide" specification: <resource name>"

...