Hello All,
In my test environment defult walltime is not mentioned anywhere in Queue /Job/server level. As a result Smaller jobs keep on fitting in between larger jobs and they are being blocked indefinitely by a steady stream of smaller, low-priority jobs until the weekend when PBS complex really becomes Idle.
Requirement : Lower Priority smaller jobs should only Go to Run Q after the scheduler has ensured enough resources has been reserved for top 3 pending Jobs in Priority Q as per job sort formula evaluation. No Job Preemption should happen
If I modify the settings as below and set following server parameters and enforce wall time in Jobs will it address above requirement ?
strict_ordering: True ALL
preemptive_sched: False ALL
job_sort_key: “job_priority HIGH” all
job_sort_formula = ‘ ncpus * walltime + eligible_time’
backfill_depth = 3 for Q name TestQ1.
==> Qmgr:set queue TestQ1 backfill_depth = 3
My understanding is as below. Can anyone confirm if that is correct?
PBS sets aside resources for the top 3 jobs in strict priority order before examining other jobs. That is, PBS looks at the currently running jobs to see when they will finish (using the wall-time estimates). From those finish times, PBS decides when enough resources (such as CPUs, memory, ,dyn resources etc…) will become available to run the top job.
PBS then creates a virtual reservation for those resources at that time. Now, when PBS looks at other jobs to see if they can start immediately, it also checks whether starting the job would collide with one of these reservations. Only if there are no collisions will PBS start the lower priority jobs.