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.

 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:
    • When a multiselect job is queued it's "schedselect" attribute shows the select specification user gave when he/she submitted the job.
    • When scheduler decides to run the job using one of the selected select specification then it updated the server about it and server internally updated the schedselect with the selected specification.
      • Scheduler will do so for array sub-jobs as well. So there are chances that subjobs of an array parent may show different "schedselect" than each other.
    • This means that select specification given by user must be stored somewhere to make sure that when the job get's requeued or rerun it has all the select specification in place.
    • A new attribute "requestedspec" is added to the job which will make server store the requested select specification to be stored in job attributes.
    • This attribute is only set when server notices that multiple select specifications are given by user. For jobs with single select specification this attribute is not set.
    • This attribute is of type "string" and only PBS manager has read privileges to it.
    • Example: for a job like this - qsub -l select="1:ncpus=23:mem=2gb||2:ncpus=3:mem=100mb" job.scr
      qstat output for "schedselect" will show up like this - 

      qstat -f 22 | grep -e state -e schedselect -e requested
      job_state = Q
      schedselect = 1:ncpus=23:mem=2gb||2:ncpus=3:mem=100mb
      substate = 10 
      requestedspec = 1:ncpus=23:mem=2gb||2:ncpus=3:mem=100mb

       


      qstat -f 24 | grep -e state -e schedselect -e requested
      job_state = R
      schedselect = 2:ncpus=3:mem=100mb
      substate = 42
      requestedspec = 1:ncpus=23:mem=2gb||2:ncpus=3:mem=100mb

       


Interface 5: New job attribute "ATTR_l_max"

  • Visibility: Public
  • Change Control: Stable
  • Details:
    • When a job with multiple select specification is specified then server goes through each one of these select specification and pick up maximum amount requested for each resource.
    • This list of resource request is then used to compare with max_queued or resources_max limits to make sure that none of these select specification can exceed limits set on queue or server in any circumstances.
    • "ATTR_l_max" is displayed as "max_resc_req" when a job with multi select specifications is queried.
    • It is of type "resource" and only operator and manager has read privileges to it.
    • Example: for a job like this - qsub -l select="1:ncpus=23:mem=2gb||2:ncpus=4:mem=100mb" job.scr
      qstat output for max_resc_req will show up - 

      qstat -f 22 | grep max_resc_req
      max_resc_req.mem = 2gb
      max_resc_req.ncpus = 23
      max_resc_req.nodect = 1 


Interface 6: New job attribute "ATTR_l_min"

...