blob: 7d942aa80273628e13df5bc16db64692b4b6a932 [file] [log] [blame] [edit]
<!--#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>