Depth-Oblivious Fair-share Factor

Contents

Introduction

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
読者はpriority / multifactorプラグインに精通していることを前提としており、深さを無視する要素の詳細のみがここに記載されています。

Depth-Oblivous Fair-Share Formula

The main formula for calculating the fair-share factor of an account is:
アカウントのフェアシェア係数を計算するための主な式は次のとおりです。

	F = 2^(-R)

where:

F
is the fair-share factor
フェアシェアファクターです
R
is the effective usage ratio of the account
アカウントの有効使用率です

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:
実際、第1レベルのアカウントの場合、実効使用率Rは、次のように定義された使用率rに等しくなります。

	r = U/S

where:

S
is the normalized shares
正規化されたシェアです
U
is the normalized usage factoring in half-life decay
半減期の減衰を考慮した正規化された使用量です

which is the same as the orginal formula.

The Effective Usage Ratio Under an Account Hierarchy

The generalized formula for R is a bit more complex.
Rの一般化された式は、もう少し複雑です。
It involves a local usage ratio rl:
これには、ローカル使用率rlが含まれます。

	rl = r / (Uall_siblings/Sall_siblings)

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.
たとえば、アカウントのすべての子が合計で合計2倍のシェア(親アカウントのシェアに等しい)を使用したが、子の1人が自分のシェアの3分の2しか使用していないと仮定すると、ローカル使用率その子の3分の1になります。

The general formula for R is then defined by:
Rの一般式は、次のように定義されます。

	R = Rparent * rl^k

where:

k
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.
0から1の間で変化し、アカウントの有効使用率がその祖先の使用率によってどの程度決定されるかを決定します。

To understand the formula for k, it is useful to first make a few observations about the formula for R.
kの式を理解するには、最初にRの式についていくつかの観察を行うと便利です。
On the one hand, if k equals 1, the above formula gives R = Rparent * rl.
一方では、kが1に等しい場合、上記の式はR = Rparent * rlを与えます。
For a second-level account, by plugging in the formula for rl, this leads to R = r * Uparent/Uall_siblings.
第2レベルのアカウントの場合、rlの式をプラグインすると、R = r * Uparent / Uall_siblingsになります。
Assuming jobs are submitted at leaf accounts, Uparent = Uall_siblings which gives R = r.
ジョブがリーフアカウントで送信されると仮定すると、Uparent = Uall_siblingsであり、R = rになります。
This means that if k equals 1, the fair-share factor of an account is only based on its own usage ratio.
これは、kが1に等しい場合、アカウントのフェアシェア係数はそれ自体の使用率のみに基づくことを意味します。
On the other hand, if k equals 0, R = Rparent which means the fair-share factor of an account is only based on the usage ratio of its ancestors.
一方、kが0に等しい場合、R = Rparentは、アカウントのフェアシェア係数がその祖先の使用率のみに基づいていることを意味します。

The formula for k is:

	k = (1/(1+(5*ln(Rparent))^2)) if ln(Rparent)*ln(rl) <= 0
	k = 1 if ln(Rparent)*ln(rl) >= 0

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 Rparent tends towards 1.
したがって、Rparentが1に向かう傾向がある場合、kは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 Rparent diverges from 1.
したがって、Rparentが1から発散すると、kは0に近づく傾向があります。
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.
ただし、アカウントの使用量の不均衡が同じ方向で先祖よりも大きい場合(たとえば、先祖は2倍のシェアを消費し、子は3倍のシェアを消費します)、フェアシェア係数を次の方向に戻します。親の1つは役に立ちません。
As a result, k is kept to 1 in that case.
その結果、その場合、kは1に保たれます。


Figure 1. Plot of k as a function of Rparent

Configuration

The following slurm.conf (SLURM_CONFIG_FILE) parameters are used to enable the depth-oblivious flavor of the fair-share factor.
次のslurm.conf(SLURM_CONFIG_FILE)パラメーターは、フェアシェアファクターの深さを知らないフレーバーを有効にするために使用されます。
See slurm.conf(5) man page for more details.
詳細については、slurm.conf(5)のマニュアルページを参照してください。

PriorityFlags
Set to "DEPTH_OBLIVIOUS".
「DEPTH_OBLIVIOUS」に設定します。
PriorityType
Set this value to "priority/multifactor".
この値を「priority / multifactor」に設定します。
The default value for this variable is "priority/basic" which enables simple FIFO scheduling.
この変数のデフォルト値は「priority / basic」で、単純なFIFOスケジューリングが可能です。

Last modified 30 October 2013