poold は、管理者の指示に基づいて再構成を行います。これらの指示は、一連の制約および目標として指定します。poold はこれらの指定に基づき、可能性のあるさまざまな構成を、既存の構成に対する相対値として決定します。次に poold は、現在の構成の資源割り当てを変更して、候補となる新しい構成を生成します。
制約は、構成に加えることのできる変更を一部除外することで、作成可能な構成の範囲に影響を与えます。libpool 構成で次の制約を指定できます。
CPU 割り当ての最小値と最大値
セットから移動できない固定構成要素
プールプロパティーの詳細については、libpool(3LIB) のマニュアルページと 「プールのプロパティー」を参照してください。
これら 2 つのプロパティーは、プロセッサセットに割り当てることのできるプロセッサの最小数と最大数を制限します。これらのプロパティーの詳細については、表 12–1 を参照してください。
同じ Solaris インスタンスの資源パーティションどうしであれば、これらの制約の範囲内で、あるパーティションから別のパーティションに資源を割り当てることができます。資源セットに関連付けられているプールに結合することで、資源にアクセスできるようになります。この結合はログイン時に実行されるか、または、PRIV_SYS_RES_CONFIG 特権を持っている管理者が手動で行います。
cpu-pinned プロパティーは、DRP で特定の CPU を現在のプロセッサセットから移動してはならないことを示します。この libpool プロパティーを設定すると、プロセッサセット内で実行されている特定のアプリケーションでのキャッシュ使用率を最大限に高めることができます。
このプロパティーの詳細については、表 12–1 を参照してください。
pool.importance プロパティーは、管理者が定義した、プールの相対的な重要度を示します。
目標は制約と同様の方法で指定されます。目標の全一覧については、表 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"
その他の使用例については、「構成の目標を定義する方法」を参照してください。
プロパティーには 4 つのカテゴリがあります。
構成
制約
目標
目標パラメータ
プロパティー名 |
種類 |
カテゴリ |
説明 |
---|---|---|---|
system.poold.log-level |
string |
構成 |
ロギングレベル |
system.poold.log-location |
string |
構成 |
ログの場所 |
system.poold.monitor-interval |
uint64 |
構成 |
監視のサンプリング間隔 |
system.poold.history-file |
string |
構成 |
決定履歴の場所 |
pset.max |
uint64 |
制約 |
このプロセッサセットに割り当てられる CPU の最大数 |
pset.min |
uint64 |
制約 |
このプロセッサセットに割り当てられる CPU の最小数 |
cpu.pinned |
bool |
制約 |
CPU がこのプロセッサセットに固定されているかどうか |
system.poold.objectives |
string |
目標 |
poold の目標式の構文に従った書式付き文字列 |
pset.poold.objectives |
string |
目標 |
poold の目標式の構文に従った書式付き文字列 |
pool.importance |
int64 |
目標パラメータ |
ユーザーが割り当てた重要性 |