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. It involves a local usage ratio rl:
Rの一般化された式はもう少し複雑です。ローカル使用率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. On the one hand, if k equals 1, the above formula gives R = Rparent * rl. For a second-level account, by plugging in the formula for rl, this leads to R = r * Uparent/Uall_siblings. Assuming jobs are submitted at leaf accounts, Uparent = Uall_siblings 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 = Rparent which means the fair-share factor of an account is only based on the usage ratio of its ancestors.
kの式を理解するには、最初にRの式についていくつかの観察を行うと便利です。一方、kが1の場合、上記の式はR = Rparent * rlになります。第2レベルのアカウントの場合、rlの数式をプラグインすると、R = r * Uparent / Uall_siblingsになります。ジョブがリーフアカウントで送信されると仮定すると、Uparent = Uall_siblingsでR = rになります。これは、kが1の場合、アカウントのフェアシェア係数はそれ自体の使用率にのみ基づいていることを意味します。一方、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. 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. 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.
この式は、アカウントの祖先の使用が目標に達している場合、アカウントのフェアシェア係数が主にその使用に依存するように選択されています。したがって、Rparentが1に近づくと、kは1に近づきます。逆に、アカウントの先祖がシェアを使いすぎたり、使いすぎたりするほど、アカウントのフェアシェアファクターはフェアに近づくことでボーナス/マイナスを受け取るはずです。 -その親のシェア係数。したがって、Rparentが1から逸脱すると、kは0に向かう傾向があります。ただし、アカウントの使用の不均衡がその先祖の同方向よりも大きい場合(たとえば、先祖はシェアを2倍消費し、子は3倍消費しました)そのシェア)、フェアシェア係数を親の1つに戻すことは役に立ちません。その結果、その場合、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. See slurm.conf(5) man page for more details.
次のslurm.conf(SLURM_CONFIG_FILE)パラメーターは、フェアシェアファクターの深さを気にしないフレーバーを有効にするために使用されます。詳細については、slurm.conf(5)のマニュアルページを参照してください。

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

Last modified 30 October 2013