| <!--#include virtual="header.txt"--> |
| |
| <h1>Quality of Service (QOS)</h1> |
| |
| <P>One can specify a Quality of Service (QOS) for each job submitted |
| to SLURM. The quality of service associated with a job will affect |
| the job in three ways: |
| |
| <ul> |
| <li> <a href=#priority>Job Scheduling Priority</a> |
| <li> <a href=#preemption>Job Preemption</a> |
| <li> <a href=#limits>Job Limits</a> |
| </ul> |
| |
| <P> The QOS's are defined in the SLURM database using the <i>sacctmgr</i> |
| utility. |
| |
| <P> Jobs request a QOS using the "--qos=" option to the |
| <i>sbatch</i>, <i>salloc</i>, and <i>srun</i> commands.</P> |
| |
| <!--------------------------------------------------------------------------> |
| <a name=priority> |
| <h2>Job Scheduling Priority</h2></a> |
| |
| <P> Job scheduling priority is made up of a number of factors as |
| described in the <a |
| href="priority_multifactor.html">priority/multifactor</a> plugin. One |
| of the factors is the QOS priority. Each QOS is defined in the SLURM |
| database and includes an associated priority. Jobs that request and |
| are permitted a QOS will incorporate the priority associated with that |
| QOS in the job's <a |
| href="priority_multifactor.html#general">multi-factor priority |
| calculation.</a> |
| |
| <P> To enable the QOS priority component of the multi-factor priority |
| calculation, the "PriorityWeightQOS" configuration parameter must be |
| defined in the slurm.conf file and assigned an integer value greater |
| than zero. |
| |
| <P> A job's QOS only affects is scheduling priority when the |
| multi-factor plugin is loaded.</P> |
| |
| <!--------------------------------------------------------------------------> |
| <a name=preemption> |
| <h2>Job Preemption</h2></a> |
| |
| <P> SLURM offers two ways for a queued job to preempt a running job, |
| free-up the running job's resources and allocate them to the queued |
| job. See the <a href="preempt.html"> Preemption description</a> for |
| details. |
| |
| <P> The preemption method is determined by the "PreemptType" |
| configuration parameter defined in slurm.conf. When the "PreemptType" |
| is set to "preempt/qos", a queued job's QOS will be used to determine |
| whether it can preempt a running job. |
| |
| <P> The QOS can be assigned (using <i>sacctmgr</i>) a list of other |
| QOS's that it can preempt. When there is a queued job with a QOS that |
| is allowed to preempt a running job of another QOS, the SLURM |
| scheduler will preempt the running job.</P> |
| |
| <!--------------------------------------------------------------------------> |
| <a name=limits> |
| <h2>Job Limits</h2></a> |
| |
| <P> Each QOS is assigned a set of limits which will be applied to the |
| job. The limits mirror the limits imposed by the |
| user/account/cluster/partition association defined in the SLURM |
| database and described in the <a href="resource_limits.html"> Resource |
| Limits section</a>. When limits for a QOS have been defined, they |
| will take precedence over the association's limits. |
| |
| <P> Here are the limits that will be imposed on jobs running under a |
| QOS</P> |
| |
| <UL> |
| <LI><b>GrpCPUMins</b> Maximum number of CPU*minutes all jobs with this QOS can run. |
| <LI><b>MaxCPUMinsPerJob</b> Maximum number of CPU*minutes any job with this QOS can run. |
| <LI><b>GrpCpus</b> Maximum number of CPU's all jobs with this QOS can be allocated. |
| <LI><b>MaxCpusPerJob</b> Maximum number of CPU's any job with this QOS can be allocated. |
| <LI><b>GrpJobs</b> Maximum number of jobs that can run with this QOS. |
| <LI><b>MaxJobsPerUser</b> Maximum number of jobs a user can run with this QOS. |
| <LI><b>GrpNodes</b> Maximum number of nodes that can be allocated to all jobs with this QOS. |
| <LI><b>MaxNodesPerJob</b> Maximum number of nodes that can be allocated to any job with this QOS. |
| <LI><b>GrpSubmitJobs</b> Maximum number of jobs with this QOS that can be in the system (no matter what state). |
| <LI><b>MaxSubmitJobsPerUser</b> Maximum number of jobs with this QOS that can be in the system. |
| <LI><b>GrpWall</b> Wall clock limit for all jobs running with this QOS. |
| <LI><b>MaxWallDurationPerJob</b> Wall clock limit for any jobs running with this QOS. |
| </UL> |
| |
| <h2>Configuration</h2> |
| |
| <P> To summarize the above, the QOS's and their associated limits are |
| defined in the SLURM database using the <i>sacctmgr</i> utility. The |
| QOS will only influence job scheduling priority when the multi-factor |
| priority plugin is loaded and a non-zero "PriorityWeightQOS" has been |
| defined in the slurm.conf file. The QOS will only determine job |
| preemption when the "PreemptType" is defined as "preempt/qos" in the |
| slurm.conf file. Limits defined for a QOS (and described above) will |
| override the limits of the user/account/cluster/partition |
| association.</P> |
| |
| <p style="text-align: center;">Last modified 9 October 2009</p> |
| |
| </ul></body></html> |