目標は制約と同様の方法で指定されます。目標の全一覧については、表 12–1 を参照してください。
目標には 2 つのカテゴリがあります。
作業負荷に依存する目標とは、システムで実行される作業負荷の性質によって変化する目標です。たとえば、utilization 目標などがあります。資源セットの使用率の数値は、そのセットでアクティブになっている作業負荷の性質によって変化します。
作業負荷に依存しない目標とは、システムで実行される作業負荷の性質によって変化しない目標です。たとえば、CPU の locality 目標などがあります。資源セットの近傍性の評価値は、そのセットでアクティブになっている作業負荷の性質によって変化することはありません。
次の 3 種類の目標を定義できます。
名前 |
有効な要素 |
演算子 |
値 |
---|---|---|---|
wt-load |
system |
なし |
なし |
locality |
pset |
なし |
loose | tight | none |
utilization |
pset |
< > ~ |
0–100% |
目標は、libpool 構成内のプロパティー文字列に格納されます。プロパティー名は、次のとおりです。
system.poold.objectives
pset.poold.objectives
目標の構文は次のとおりです。
objectives = objective [; objective]*
objective = [n:] keyword [op] [value]
どの目標にも、オプションで重要性を表す接頭辞を付けることができます。重要性の値は目標に乗算され、この目標が目標関数の評価に与える影響を高めます。指定できる範囲は、0 から INT64_MAX (9223372036854775807) までです。指定されていない場合、重要性のデフォルト値は 1 です。
一部の要素タイプでは、複数の種類の目標がサポートされています。pset などはその一例です。このような要素には、複数の種類の目標を指定できます。また、1 つの pset 要素に複数の使用率目標を指定することもできます。
使用例については、「構成の目標を定義する方法」を参照してください。
wt-load 目標では、資源の使用率に合わせて資源を割り当てるような構成が有利に導かれます。この目標が有効になっていると、より多くの資源を使用する資源セットには、より多くの資源が与えられることになります。wt-load は「重み付けされた負荷 (weighted load)」を意味します。
最小値と最大値のプロパティーを使って満足のいく制約を設定したあとで、これらの制約の範囲内でデーモンが自由に資源を操作できるようにする場合に、この目標を使用してください。
locality 目標は、近傍性グループ (lgroup) データによって測定される近傍性が、選択された構成に対して与える影響を変化させます。近傍性は応答時間と定義することもできます。lgroup は、CPU 資源とメモリー資源を表します。lgroup は、Solaris システムで資源どうしの距離を調べるために使用されます。測定単位は時間です。近傍性グループによる抽象化の詳細については、『プログラミングインタフェース』の「近傍性グループの概要」を参照してください。
この目標には、次の 3 つの値のいずれかを指定できます。
この値を設定すると、資源の近傍性を最大にするような構成が有利に導かれます。
この値を設定すると、資源の近傍性を最小にするような構成が有利に導かれます。
この値を設定すると、どのような構成が有利になるかは、資源の近傍性に依存しません。これは locality 目標のデフォルト値です。
一般に、locality 目標は tight に設定することをお勧めします。ただし、メモリー帯域幅を最大にする場合や、資源セットに対する DR 操作の影響を最小にする場合は、この目標を loose に設定するか、デフォルト値の none にしておいてください。
utilization 目標では、指定された使用率目標を満たしていないパーティションに資源を割り当てるような構成が有利に導かれます。
この目標は、演算子と値で指定されます。演算子は次のとおりです。
「小なり」演算子は、指定された値が最大のターゲット値であることを示します。
「大なり」演算子は、指定された値が最小のターゲット値であることを示します。
「ほぼ等しい」演算子は、指定された値がターゲット値であり、いくらかの変動が許容されることを示します。
pset には、演算子の種類ごとに使用率目標を 1 つ設定できます。
~ 演算子を設定した場合、< 演算子や > 演算子は設定できません。
< 演算子や > 演算子を設定した場合、~ 演算子は設定できません。< 演算子の設定と > 演算子の設定が互いに矛盾してはならないことに注意してください。
< 演算子と > 演算子の両方を使用すると、範囲を指定できます。これらの値は、重複しないように検証されます。
次の例では、pset に対する次のような目標が poold によって評価されます。
utilization を 30% から 80% の範囲に保つ必要がある。
プロセッサセットの locality を最大にする必要がある。
各目標の重要性はデフォルト値の 1 とする。
pset.poold.objectives "utilization > 30; utilization < 80; locality tight"
その他の使用例については、「構成の目標を定義する方法」を参照してください。