Skip to content
Snippets Groups Projects
job-priority.md 3.52 KiB
Newer Older
David Hrbáč's avatar
David Hrbáč committed
# Job Scheduling
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
## Job Execution Priority
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Scheduler gives each job an execution priority and then uses this job execution priority to select which job(s) to run.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
Job execution priority on Anselm is determined by these job properties (in order of importance):
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
1. queue priority
1. fair-share priority
1. eligible time
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
### Queue Priority
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Queue priority is priority of queue where job is queued before execution.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
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.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Queue priorities can be seen at <https://extranet.it4i.cz/anselm/queues>
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
### Fair-Share Priority
Lukáš Krupčík's avatar
Lukáš Krupčík committed

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.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Fair-share priority is used for ranking jobs with equal queue priority.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Fair-share priority is calculated as
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
---8<--- "fairshare_formula.md"
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Pavel Jirásek's avatar
Pavel Jirásek committed
where MAX_FAIRSHARE has value 1E6,
David Hrbáč's avatar
David Hrbáč committed
usage<sub>Project</sub> is cumulated usage by all members of selected project,
usage<sub>Total</sub> is total usage by all users, by all projects.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
Usage counts allocated core-hours (`ncpus x walltime`). Usage is decayed, or cut in half periodically, at the interval 168 hours (one week).
Pavel Jirásek's avatar
Pavel Jirásek committed
Jobs queued in queue qexp are not calculated to project's usage.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
!!! note
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    Calculated usage and fair-share priority can be seen at <https://extranet.it4i.cz/anselm/projects>.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Calculated fair-share priority can be also seen as Resource_List.fairshare attribute of a job.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
### Eligible Time
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
Eligible time is amount (in seconds) of eligible time job accrued while waiting to run. Jobs with higher eligible time gains higher priority.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

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.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
Eligible time can be seen as eligible_time attribute of job.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

### Formula

Job execution priority (job sort formula) is calculated as:

David Hrbáč's avatar
David Hrbáč committed
---8<--- "job_sort_formula.md"
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
### Job Backfilling
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Anselm cluster uses job backfilling.

Lukáš Krupčík's avatar
Lukáš Krupčík committed
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.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
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.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
It means, that jobs with lower execution priority can be run before jobs with higher execution priority.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

David Hrbáč's avatar
David Hrbáč committed
!!! note
Lukáš Krupčík's avatar
Lukáš Krupčík committed
    It is **very beneficial to specify the walltime** when submitting jobs.
Lukáš Krupčík's avatar
Lukáš Krupčík committed

Lukáš Krupčík's avatar
Lukáš Krupčík committed
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.
David Hrbáč's avatar
David Hrbáč committed

---8<--- "mathjax.md"