Skip to content
Snippets Groups Projects
Commit fd38c5ad authored by DIAKHATE Francois's avatar DIAKHATE Francois Committed by Morris Jette
Browse files

Add web page for Depth-Oblivious Fair Share

parent 0da4d951
No related branches found
No related tags found
No related merge requests found
...@@ -63,6 +63,7 @@ generated_html = \ ...@@ -63,6 +63,7 @@ generated_html = \
preemption_plugins.html \ preemption_plugins.html \
priority_multifactor.html \ priority_multifactor.html \
priority_multifactor2.html \ priority_multifactor2.html \
priority_multifactor3.html \
priority_plugins.html \ priority_plugins.html \
proctrack_plugins.html \ proctrack_plugins.html \
programmer_guide.html \ programmer_guide.html \
...@@ -107,6 +108,7 @@ html_DATA = \ ...@@ -107,6 +108,7 @@ html_DATA = \
hdf5_job_outline.png \ hdf5_job_outline.png \
ibm_pe_fig1.png \ ibm_pe_fig1.png \
ibm_pe_fig2.png \ ibm_pe_fig2.png \
k_function.gif \
linuxstyles.css \ linuxstyles.css \
lll.gif \ lll.gif \
mc_support.gif \ mc_support.gif \
......
...@@ -474,6 +474,7 @@ generated_html = \ ...@@ -474,6 +474,7 @@ generated_html = \
preemption_plugins.html \ preemption_plugins.html \
priority_multifactor.html \ priority_multifactor.html \
priority_multifactor2.html \ priority_multifactor2.html \
priority_multifactor3.html \
priority_plugins.html \ priority_plugins.html \
proctrack_plugins.html \ proctrack_plugins.html \
programmer_guide.html \ programmer_guide.html \
...@@ -518,6 +519,7 @@ html_DATA = \ ...@@ -518,6 +519,7 @@ html_DATA = \
hdf5_job_outline.png \ hdf5_job_outline.png \
ibm_pe_fig1.png \ ibm_pe_fig1.png \
ibm_pe_fig2.png \ ibm_pe_fig2.png \
k_function.gif \
linuxstyles.css \ linuxstyles.css \
lll.gif \ lll.gif \
mc_support.gif \ mc_support.gif \
......
...@@ -42,6 +42,12 @@ Documenation for other versions of Slurm is distributed with the code</b></p> ...@@ -42,6 +42,12 @@ Documenation for other versions of Slurm is distributed with the code</b></p>
<li><a href="power_save.html">Power Saving Guide</a></li> <li><a href="power_save.html">Power Saving Guide</a></li>
<li><a href="prolog_epilog.html">Prolog and Epilog Guide</a></li> <li><a href="prolog_epilog.html">Prolog and Epilog Guide</a></li>
<li><a href="troubleshoot.html">Troubleshooting Guide</a></li> <li><a href="troubleshoot.html">Troubleshooting Guide</a></li>
<li>Workload Prioritization</li>
<ul>
<li><a href="priority_multifactor.html">Multifactor Job Priority</a></li>
<li><a href="priority_multifactor2.html">Ticket-Based Multifactor Job Priority</a></li>
<li><a href="priority_multifactor3.html">Depth-Oblivious Fair-share Factor</a></li>
</ul>
<li>SLURM Scheduling</li> <li>SLURM Scheduling</li>
<ul> <ul>
<li><a href="cons_res.html">Consumable Resources Guide</a></li> <li><a href="cons_res.html">Consumable Resources Guide</a></li>
...@@ -50,8 +56,6 @@ Documenation for other versions of Slurm is distributed with the code</b></p> ...@@ -50,8 +56,6 @@ Documenation for other versions of Slurm is distributed with the code</b></p>
<li><a href="gang_scheduling.html">Gang Scheduling</a></li> <li><a href="gang_scheduling.html">Gang Scheduling</a></li>
<li><a href="gres.html">Generic Resource (GRES) Scheduling</a></li> <li><a href="gres.html">Generic Resource (GRES) Scheduling</a></li>
<li><a href="high_throughput.html">High Throughput Computing Guide</a></li> <li><a href="high_throughput.html">High Throughput Computing Guide</a></li>
<li><a href="priority_multifactor.html">Multifactor Job Priority</a></li>
<li><a href="priority_multifactor2.html">Ticket-Based Multifactor Job Priority</a></li>
<li><a href="preempt.html">Preemption</a></li> <li><a href="preempt.html">Preemption</a></li>
<li><a href="qos.html">Quality of Service (QOS)</a></li> <li><a href="qos.html">Quality of Service (QOS)</a></li>
<li><a href="resource_limits.html">Resource Limits</a></li> <li><a href="resource_limits.html">Resource Limits</a></li>
...@@ -117,6 +121,6 @@ Documenation for other versions of Slurm is distributed with the code</b></p> ...@@ -117,6 +121,6 @@ Documenation for other versions of Slurm is distributed with the code</b></p>
</li> </li>
</ul> </ul>
<p style="text-align:center;">Last modified 8 July 2013</p> <p style="text-align:center;">Last modified 1 November 2013</p>
<!--#include virtual="footer.txt"--> <!--#include virtual="footer.txt"-->
doc/html/k_function.gif

21.4 KiB

<!--#include virtual="header.txt"-->
<h1>Depth-Oblivious Fair-share Factor</h1>
<h2>Contents</h2>
<ul>
<li><a href=#intro>Introduction</a></li>
<li><a href=#fairshare>Depth-Oblivous Fair-Share Formula</a></li>
<li><a href=#ratio>The Effective Usage Ratio Under an Account Hierarchy</a></li>
<li><a href=#config>Configuration</a></li>
</ul>
<!-------------------------------------------------------------------------->
<a name=intro>
<h2>Introduction</h2></a>
<p>The depth-oblivious fair-share factor is a variant of the default
fair-share factor which increases usable priority ranges and improves
fairness between accounts in deep and/or irregular hierarchies. The
reader is assumed to be familiar with the priority/multifactor plugin
and only the specifics of the depth-oblivious factor are documented
here</p>
<!-------------------------------------------------------------------------->
<a name=fairshare>
<h2>Depth-Oblivous Fair-Share Formula</h2></a>
<P> The main formula for calculating the fair-share factor of an account is:</P>
<PRE>
F = 2^(-R)
</PRE>
<P>where:</P>
<DL compact>
<DT> F
<DD> is the fair-share factor
<DT> R
<DD> is the effective usage ratio of the account
</DL>
<P> This formula resembles the original fair-share formula, and
produces the same result for an account at the first level of the tree
(under root). Indeed, for first-level accounts, the effective usage
ratio R is equal to the usage ratio r defined as: </P>
<PRE>
r = U/S
</PRE>
<P>where:</P>
<DL compact>
<DT> S
<DD> is the normalized shares
<DT> U
<DD> is the normalized usage factoring in half-life decay
</DL>
<P> which is the same as the orginal formula. </P>
<a name=ratio>
<h2>The Effective Usage Ratio Under an Account Hierarchy</h2></a>
<P> The generalized formula for R is a bit more complex. It involves a
local usage ratio r<sub>l</sub>:</P>
<PRE>
r<sub>l</sub> = r / (U<sub>all_siblings</sub>/S<sub>all_siblings</sub>)
</PRE>
<P> which is the ratio between the usage ratio of an account, and the
total usage ratio of all the siblings at his level including
itself. For example, assuming that all the children of an account have
used in total two times their combined shares (which equal the shares
of the parent account), but that one of the child has used only two
thirds of his shares, the local usage ratio of that child will be of
one third. </P>
<P> The general formula for R is then defined by: </P>
<PRE>
R = R<sub>parent</sub> * r<sub>l</sub>^k
</PRE>
<P>where:</P>
<DL compact>
<DT> k
<DD> varies between 0 and 1 and determines how much the effective usage
ratio of an account is determined by the usage ratio of its ancestors.
</DL>
<P> To understand the formula for k, it is useful to first make a few
observations about the formula for R. On the one hand, if k equals 1,
the above formula gives R = R<sub>parent</sub> * r<sub>l</sub>. For a
second-level account, by plugging in the formula for r<sub>l</sub>,
this leads to R = r *
U<sub>parent</sub>/U<sub>all_siblings</sub>. Assuming jobs are
submitted at leaf accounts, U<sub>parent</sub> =
U<sub>all_siblings</sub> which gives R = r. This means that if k
equals 1, the fair-share factor of an account is only based on its own
usage ratio. On the other hand, if k equals 0, R = R<sub>parent</sub>
which means the fair-share factor of an account is only based on the
usage ratio of its ancestors. </P>
<P> The formula for k is: <P>
<PRE>
k = (1/(1+(5*ln(R<sub>parent</sub>))^2)) if ln(R<sub>parent</sub>)*ln(r<sub>l</sub>) <= 0
k = 1 if ln(R<sub>parent</sub>)*ln(r<sub>l</sub>) >= 0
</PRE>
<P> This formula is chosen to ensure that, if the usage of the
ancestors of an account is on target, the fair-share factor of the
account mainly depends on its own usage. Therefore k tends towards 1
when R<sub>parent</sub> tends towards 1. On the contrary, the more the
ancestors of an account have underused/overused their shares, the more
the fair-share factor of the account should get a bonus/malus by
moving towards the fair-share factor of its parent. Therefore, k tends
towards 0 when R<sub>parent</sub> diverges from 1. However, if the
account usage imbalance is greater than its ancestors' in the same
direction, (for exemple, the ancestors have consumed two times their
shares, and the child has consumed 3 times its shares), moving the
fair-share factor back towards the one of the parent is not
helpful. As a result, k is kept to 1 in that case.</P>
<div class="figure">
<img src=k_function.gif width=565><BR>
Figure 1. Plot of k as a function of R<sub>parent</sub>
</div>
<!-------------------------------------------------------------------------->
<a name=config>
<h2>Configuration</h2></a>
<p> The following slurm.conf (SLURM_CONFIG_FILE) parameters are used
to enable the depth-oblivious flavor of the fair-share factor. See
slurm.conf(5) man page for more details.</p>
<dl>
<dt>PriorityFlags
<dd>Set to "DEPTH_OBLIVIOUS".
<dt>PriorityType
<dd>Set this value to "priority/multifactor".
The default value for this variable is "priority/basic"
which enables simple FIFO scheduling.
</dl>
<!-------------------------------------------------------------------------->
<p style="text-align:center;">Last modified 30 October 2013</p>
<!--#include virtual="footer.txt"-->
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment