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

動的資源割り当てのしくみ

この節では、資源を動的に割り当てるために poold で使用される手順と要因について説明します。

使用可能な資源について

poold プロセスの有効範囲内で使用できるすべての資源が、使用可能な資源と見なされます。1 つの Solaris インスタンスが最大の制御範囲になります。

ゾーンが有効になっているシステムの場合、実行中の poold インスタンスの有効範囲は、大域ゾーンに制限されます。

使用可能な資源の特定

資源プールには、アプリケーションで消費できるすべてのシステム資源が含まれます。

実行中の Solaris インスタンスごとに、1 つのパーティションには、CPU など 1 種類の資源を割り当てる必要があります。1 種類の資源を 1 つまたはそれ以上のパーティションに割り当ててもかまいません。各パーティションには、一意の資源セットが含まれます。

たとえば、4 つの CPU と 2 つのプロセッサセットを持つマシンは、次のように設定されます。

pset 0: 0 1

pset 1: 2 3

ここで、コロンのあとの 0、1、2、3 という数字は、CPU の ID を表しています。これら 2 つのプロセッサセットで、4 つの CPU すべてが使用されていることに注目してください。

このマシンで次のような設定は不可能です。

pset 0: 0 1

pset 1: 1 2 3

CPU 1 を同時に割り当てることができる pset は 1 つだけなので、このような設定はできません。

資源が属しているパーティション以外のパーティションからは、その資源にアクセスすることはできません。

使用可能な資源を発見するために、poold はアクティブなプール構成を調べてパーティションを見つけます。制御対象となっている資源の種類ごとに、すべてのパーティションに含まれているすべての資源が集計され、使用可能な資源の合計量が求められます。

poold では、この資源量を基にして処理が行われます。ただし、この基本量に制約が適用され、poold で割り当てを行う必要がある際の柔軟性が制限されることもあります。使用可能な制約については、「構成の制約」を参照してください。

資源不足の特定

poold の制御範囲とは、効率のよい区分と管理を主に poold が担当している、使用可能な資源セットのことです。ただし、この制御範囲にある資源を操作できる機構がほかにもあり、それが構成に影響を与えることもあります。poold がアクティブになっている間に特定のパーティションが制御範囲外になった場合、poold は使用可能な資源を適切に操作することによってその制御を取り戻そうとします。poold デーモンは、有効範囲内に追加の資源を見つけられない場合、資源不足に関する情報をログに記録します。

資源使用率の判定

poold は通常、その制御範囲にある資源の使用率を監視することに時間の大部分を費やします。この監視は、作業負荷に依存する目標が満たされているかどうかを確認するために実行されます。

たとえば、プロセッサセットの場合、セット内のすべてのプロセッサについてすべての測定が実行されます。資源使用率は、サンプリング間隔に対して、資源が使用された時間の割合を示します。資源使用率はパーセンテージで表され、0 - 100 の値です。

制御違反の特定

「構成の制約と目標」で説明した指示は、システムが目標を満たさないことを検出するために使用されます。 これらの目標は、作業負荷に直接関連しています。

ユーザーが設定した目標を満たしていないパーティションは、制御違反です。制御違反には、同期と非同期の 2 種類があります。

非同期の目標違反は、次のようなイベントによって引き起こされます。

作業負荷に関連しない目標が目標関数の評価に与える影響は、評価のたびに一定であると見なされます。作業負荷に関連しない目標が再評価されるのは、いずれかの非同期違反によって再評価処理が引き起こされたときだけです。

適切な改善操作の決定

資源コントローラは、資源を消費するプロセスで資源が不足していると判定した場合、まずその資源を増やして性能を改善しようとします。

制御範囲について構成で指定された目標を満たすように、別の構成が検討され評価されます。

この処理では、資源の移動結果を監視し、各資源パーティションの応答性を評価しながら、徐々に細かい調整が行われます。決定履歴を参照して、それまでに行なった再構成のうちで改善効果を示さなかったものが削除されます。履歴データの関連度をより詳しく評価するために、プロセスの名前や数量といったほかの情報も使用されます。

修正操作を実行できない場合、デーモンは状況をログに記録します。詳細は、poold のログ情報」を参照してください。