Commit 3ce013ee authored by John Cawley's avatar John Cawley

Update job-priority.md

parent ea3ab740
Pipeline #3103 failed with stages
in 23 seconds
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## Job Execution Priority ## Job Execution Priority
Scheduler gives each job an execution priority and then uses this job execution priority to select which job(s) to run. The scheduler gives each job an execution priority and then uses this job execution priority to select which job(s) to run.
Job execution priority on Anselm is determined by these job properties (in order of importance): Job execution priority on Anselm is determined by these job properties (in order of importance):
...@@ -12,15 +12,15 @@ Job execution priority on Anselm is determined by these job properties (in order ...@@ -12,15 +12,15 @@ Job execution priority on Anselm is determined by these job properties (in order
### Queue Priority ### Queue Priority
Queue priority is priority of queue where job is queued before execution. Queue priority is the priority of the queue in which the job is waiting prior to execution.
Queue priority has the biggest impact on job execution priority. Execution priority of jobs in higher priority queues is always greater than execution priority of jobs in lower priority queues. Other properties of job used for determining job execution priority (fair-share priority, eligible time) cannot compete with queue priority. Queue priority has the biggest impact on job execution priority. The execution priority of jobs in higher priority queues is always greater than the execution priority of jobs in lower priority queues. Other properties of jobs used for determining the job execution priority (fair-share priority, eligible time) cannot compete with queue priority.
Queue priorities can be seen at <https://extranet.it4i.cz/anselm/queues> Queue priorities can be seen at <https://extranet.it4i.cz/anselm/queues>
### Fair-Share Priority ### Fair-Share Priority
Fair-share priority is priority calculated on recent usage of resources. Fair-share priority is calculated per project, all members of project share same fair-share priority. Projects with higher recent usage have lower fair-share priority than projects with lower or none recent usage. Fair-share priority is priority calculated on the basis of recent usage of resources. Fair-share priority is calculated per project, all members of a project sharing the same fair-share priority. Projects with higher recent usage have a lower fair-share priority than projects with lower or no recent usage.
Fair-share priority is used for ranking jobs with equal queue priority. Fair-share priority is used for ranking jobs with equal queue priority.
...@@ -29,24 +29,24 @@ Fair-share priority is calculated as ...@@ -29,24 +29,24 @@ Fair-share priority is calculated as
---8<--- "fairshare_formula.md" ---8<--- "fairshare_formula.md"
where MAX_FAIRSHARE has value 1E6, where MAX_FAIRSHARE has value 1E6,
usage<sub>Project</sub> is cumulated usage by all members of selected project, usage<sub>Project</sub> is accumulated usage by all members of a selected project,
usage<sub>Total</sub> is total usage by all users, by all projects. usage<sub>Total</sub> is total usage by all users, across all projects.
Usage counts allocated core-hours (`ncpus x walltime`). Usage is decayed, or cut in half periodically, at the interval 168 hours (one week). Usage counts allocated core-hours (`ncpus x walltime`). Usage decays, halving at intervals of 168 hours (one week).
Jobs queued in queue qexp are not calculated to project's usage. Jobs queued in the queue qexp are not used to calculate the project's usage.
!!! note !!! note
Calculated usage and fair-share priority can be seen at <https://extranet.it4i.cz/anselm/projects>. Calculated usage and fair-share priority can be seen at <https://extranet.it4i.cz/anselm/projects>.
Calculated fair-share priority can be also seen as Resource_List.fairshare attribute of a job. Calculated fair-share priority can be also be seen in the Resource_List.fairshare attribute of a job.
### Eligible Time ### Eligible Time
Eligible time is amount (in seconds) of eligible time job accrued while waiting to run. Jobs with higher eligible time gains higher priority. Eligible time is the amount (in seconds) of eligible time a job accrues while waiting to run. Jobs with higher eligible time gain higher priority.
Eligible time has the least impact on execution priority. Eligible time is used for sorting jobs with equal queue priority and fair-share priority. It is very, very difficult for eligible time to compete with fair-share priority. Eligible time has the least impact on execution priority. Eligible time is used for sorting jobs with equal queue priority and fair-share priority. It is very, very difficult for eligible time to compete with fair-share priority.
Eligible time can be seen as eligible_time attribute of job. Eligible time can be seen in the eligible_time attribute of job.
### Formula ### Formula
...@@ -56,17 +56,17 @@ Job execution priority (job sort formula) is calculated as: ...@@ -56,17 +56,17 @@ Job execution priority (job sort formula) is calculated as:
### Job Backfilling ### Job Backfilling
Anselm cluster uses job backfilling. The Anselm cluster uses job backfilling.
Backfilling means fitting smaller jobs around the higher-priority jobs that the scheduler is going to run next, in such a way that the higher-priority jobs are not delayed. Backfilling allows us to keep resources from becoming idle when the top job (job with the highest execution priority) cannot run. Backfilling means fitting smaller jobs around the higher-priority jobs that the scheduler is going to run next, in such a way that the higher-priority jobs are not delayed. Backfilling allows us to keep resources from becoming idle when the top job (the job with the highest execution priority) cannot run.
The scheduler makes a list of jobs to run in order of execution priority. Scheduler looks for smaller jobs that can fit into the usage gaps around the highest-priority jobs in the list. The scheduler looks in the prioritized list of jobs and chooses the highest-priority smaller jobs that fit. Filler jobs are run only if they will not delay the start time of top jobs. The scheduler makes a list of jobs to run in order of execution priority. The scheduler looks for smaller jobs that can fit into the usage gaps around the highest-priority jobs in the list. The scheduler looks in the prioritized list of jobs and chooses the highest-priority smaller jobs that fit. Filler jobs are run only if they will not delay the start time of top jobs.
It means, that jobs with lower execution priority can be run before jobs with higher execution priority. This means that jobs with lower execution priority can be run before jobs with higher execution priority.
!!! note !!! note
It is **very beneficial to specify the walltime** when submitting jobs. It is **very beneficial to specify the walltime** when submitting jobs.
Specifying more accurate walltime enables better scheduling, better execution times and better resource usage. Jobs with suitable (small) walltime could be backfilled - and overtake job(s) with higher priority. Specifying more accurate walltime enables better scheduling, better execution times, and better resource usage. Jobs with suitable (small) walltime can be backfilled - and overtake job(s) with a higher priority.
---8<--- "mathjax.md" ---8<--- "mathjax.md"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment