Versions Compared

Key

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

...

  • Interface 1: Extend PBS to support a list of scheduler objects

    • Visibility: Public
    • Change Control: Stable
    • Details:
      • PBS supports a list of scheduler objects to be created using qmgr. It is similar to how we create nodes in server.
      • qmgr command can be used to create a scheduler object . It must be invoked by a PBS admin/manager.
      • To create a scheduler object and make it run, the following are the mandatory attributes that needs to be set by the user
        • Name of the scheduler is mandatory to be given while creating a scheduler object. 
          • qmgr -c "c sched multi_sched_1"
            • This will create/set the following attributes for the sched object
              • port - If not defined by the user, It will start from 15050 and try to run the scheduler on the next available port number.
              • host (read-only for now, Has the same value as PBS server host)
              • partition = "None" (default)
              • sched_priv = $PBS_HOME/multi_sched_1_priv (default)
              • sched_log = $PBS_HOME/multi_sched_1_log (default)
              • scheduling = False (default)
              • scheduler_iteration = 600 (default)
              • sched_user = <pbs_server user> (default)
              • comment 

    • Comment can be set to the following if scheduler undergoes restarting 2-3 times due to potential crashes in an hour for example.
      Comment => “NEEDS_ATTENTION”
    • This can also be used to tell when a particular scheduler is ready to function again by setting the comment as follows. Admin can use server periodic hook to do it.
      Comment => “READY_TO_USE
        • Set the priv directory for the scheduler.
          • The directory must be owned by the sched_user specified while creating scheduler object. It should have permissions set as "750". By default a sched object has 
            it's priv directory set as $PBS_HOME/<sched-name>_priv
          • qmgr -c "s sched multi_sched_1 sched_priv=/var/spool/pbs/sched_priv_1"
          • If the priv directory is not accessible and admin tries to set "scheduling" attribute to true then error code is set to "15211" and following error if thrown to the user
            "scheduler <scheduler name> can not access it's log or priv directory"
        • Set the log directory for the scheduler. 
          • The directory must be owned by the sched_user specified while creating scheduler object. It should have permissions as "755". By default a sched object has 
            it's logs directory set as $PBS_HOME/<sched_name>_logs
          • qmgr -c "s sched multi_sched_1 sched_log=/var/spool/pbs/sched_logs"
          • If the log directory is not accessible and admin tries to set "scheduling" attribute to true then error code is set to "15211" and following error if thrown to the user
            "scheduler <scheduler name> can not access it's log or priv directory"
        • To set scheduling on one of the newly created scheduler object one must make use of scheduler name. 
          • By default a multi-sched object has scheduling set as False.
            qmgr -c " s sched <scheduler name> scheduling = 1"
      • By default PBS server will configure a default scheduler which will run out of the box.
        • The name of this default scheduler will be "sched"
        • The sched_priv directory of this default scheduler will be set to the $PBS_HOME/sched_priv
        • Default scheduler will log in $PBS_HOME/sched_logs directory.
        • Default scheduler will be provided with default set of policies as mentioned in Interface 3.


  • Interface 2: Changes to PBS scheduler
    • Visibility: Public
    • Change Control: Stable
    • Details:
      • Scheduler now has additional attributes which can be set in order to run it.
        • sched_priv - to point to the directory where scheduler keeps the fairshare usage, resource_group, holidays file and sched_config
        • sched_logs - to point to the directory where scheduler logs.
        • partitions - list of all the partitions for which this scheduler is going to schedule jobs.
        • host - hostname on which scheduler is running. For default scheduler it is set to pbs server hostname.
        • port - port number on which scheduler is listening.
        • job_accumulation_time - amount of time server will wait after the submission of a job before starting a new cycle.
        • state - This attribute shows the status of the scheduler. It is a parameter that is set only by pbs server.
      • One can set a partition or a comma separated list of partitions to scheduler object. Once set, given scheduler object will only schedule jobs from the queues attached to specified partition"
        • qmgr -c "s sched multi_sched_1 partitions='part1,part2'"
      • If no partition are specified with a given scheduler object then that scheduler will not schedule any jobs.
      • By default, All new queues created will be attached to the default scheduler, until they have been assigned to a specific partition.
      • A partition once attached to a scheduler can not be attached to another scheduler. If tried, then it will throw following error:
        • qmgr -c "s sched multi_sched_1 partitions+='part2'"
          Partition part2 is already associated with scheduler <scheduler name>.
      • Scheduler object "state" attribute will show one of these 3 values  - DOWN, IDLE, SCHEDULING
        • If a scheduler object is created but scheduler is not running for some reason state will be shown as "DOWN"
        • If a scheduler is up and running but waiting for a cycle to be triggered the state will be shown as "IDLE"
        • If a scheduler is up and running and also running a scheduling cycle then the state will be shown as "SCHEDULING"

...