Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

構成の制約と目標

poold は、管理者の指示に基づいて再構成を行います。これらの指示は、一連の制約および目標として指定します。poold はこれらの指定に基づき、可能性のあるさまざまな構成を、既存の構成に対する相対値として決定します。次に poold は、現在の構成の資源割り当てを変更して、候補となる新しい構成を生成します。

構成の制約

制約は、構成に加えることのできる変更を一部除外することで、作成可能な構成の範囲に影響を与えます。libpool 構成で次の制約を指定できます。

プールプロパティーの詳細については、libpool(3LIB) のマニュアルページと 「プールのプロパティー」を参照してください。

pset.min プロパティーと pset.max プロパティーの制約

これら 2 つのプロパティーは、プロセッサセットに割り当てることのできるプロセッサの最小数と最大数を制限します。これらのプロパティーの詳細については、表 12–1 を参照してください。

同じ Solaris インスタンスの資源パーティションどうしであれば、これらの制約の範囲内で、あるパーティションから別のパーティションに資源を割り当てることができます。資源セットに関連付けられているプールに結合することで、資源にアクセスできるようになります。この結合はログイン時に実行されるか、または、PRIV_SYS_RES_CONFIG 特権を持っている管理者が手動で行います。

cpu.pinned プロパティーの制約

cpu-pinned プロパティーは、DRP で特定の CPU を現在のプロセッサセットから移動してはならないことを示します。この libpool プロパティーを設定すると、プロセッサセット内で実行されている特定のアプリケーションでのキャッシュ使用率を最大限に高めることができます。

このプロパティーの詳細については、表 12–1 を参照してください。

pool.importance プロパティーの制約

pool.importance プロパティーは、管理者が定義した、プールの相対的な重要度を示します。

構成の目標

目標は制約と同様の方法で指定されます。目標の全一覧については、表 12–1 を参照してください。

目標には 2 つのカテゴリがあります。

作業負荷に依存する目標

作業負荷に依存する目標とは、システムで実行される作業負荷の性質によって変化する目標です。たとえば、utilization 目標などがあります。資源セットの使用率の数値は、そのセットでアクティブになっている作業負荷の性質によって変化します。

作業負荷に依存しない目標

作業負荷に依存しない目標とは、システムで実行される作業負荷の性質によって変化しない目標です。たとえば、CPU の locality 目標などがあります。資源セットの近傍性の評価値は、そのセットでアクティブになっている作業負荷の性質によって変化することはありません。

次の 3 種類の目標を定義できます。

名前 

有効な要素 

演算子 

値 

wt-load

system

なし 

なし 

locality

pset

なし 

loose | tight | none

utilization

pset

< > ~

0100%

目標は、libpool 構成内のプロパティー文字列に格納されます。プロパティー名は、次のとおりです。

目標の構文は次のとおりです。

どの目標にも、オプションで重要性を表す接頭辞を付けることができます。重要性の値は目標に乗算され、この目標が目標関数の評価に与える影響を高めます。指定できる範囲は、0 から INT64_MAX (9223372036854775807) までです。指定されていない場合、重要性のデフォルト値は 1 です。

一部の要素タイプでは、複数の種類の目標がサポートされています。pset などはその一例です。このような要素には、複数の種類の目標を指定できます。また、1 つの pset 要素に複数の使用率目標を指定することもできます。

使用例については、「構成の目標を定義する方法」を参照してください。

wt-load 目標

wt-load 目標では、資源の使用率に合わせて資源を割り当てるような構成が有利に導かれます。この目標が有効になっていると、より多くの資源を使用する資源セットには、より多くの資源が与えられることになります。wt-load は「重み付けされた負荷 (weighted load)」を意味します。

最小値と最大値のプロパティーを使って満足のいく制約を設定したあとで、これらの制約の範囲内でデーモンが自由に資源を操作できるようにする場合に、この目標を使用してください。

locality 目標

locality 目標は、近傍性グループ (lgroup) データによって測定される近傍性が、選択された構成に対して与える影響を変化させます。近傍性は応答時間と定義することもできます。lgroup は、CPU 資源とメモリー資源を表します。lgroup は、Solaris システムで資源どうしの距離を調べるために使用されます。測定単位は時間です。近傍性グループによる抽象化の詳細については、『プログラミングインタフェース』「近傍性グループの概要」を参照してください。

この目標には、次の 3 つの値のいずれかを指定できます。

tight

この値を設定すると、資源の近傍性を最大にするような構成が有利に導かれます。

loose

この値を設定すると、資源の近傍性を最小にするような構成が有利に導かれます。

none

この値を設定すると、どのような構成が有利になるかは、資源の近傍性に依存しません。これは locality 目標のデフォルト値です。

一般に、locality 目標は tight に設定することをお勧めします。ただし、メモリー帯域幅を最大にする場合や、資源セットに対する DR 操作の影響を最小にする場合は、この目標を loose に設定するか、デフォルト値の none にしておいてください。

utilization 目標

utilization 目標では、指定された使用率目標を満たしていないパーティションに資源を割り当てるような構成が有利に導かれます。

この目標は、演算子と値で指定されます。演算子は次のとおりです。

<

「小なり」演算子は、指定された値が最大のターゲット値であることを示します。

>

「大なり」演算子は、指定された値が最小のターゲット値であることを示します。

~

「ほぼ等しい」演算子は、指定された値がターゲット値であり、いくらかの変動が許容されることを示します。

pset には、演算子の種類ごとに使用率目標を 1 つ設定できます。

< 演算子と > 演算子の両方を使用すると、範囲を指定できます。これらの値は、重複しないように検証されます。

構成目標の例

次の例では、pset に対する次のような目標が poold によって評価されます。


例 12–1 poold の目標の例

pset.poold.objectives "utilization > 30; utilization < 80; locality tight"


その他の使用例については、「構成の目標を定義する方法」を参照してください。

poold のプロパティー

プロパティーには 4 つのカテゴリがあります。

表 12–1 定義済みのプロパティー名

プロパティー名 

種類 

カテゴリ 

説明 

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 

目標パラメータ 

ユーザーが割り当てた重要性