Sun N1 Grid Engine 6.1 管理ガイド

リソース割り当ての概要

ユーザーが使用可能なすべてのリソースを消費しないようにするため、N1 Grid Engine 6.1 ソフトウェアは、グローバル、キュー、またはホスト層で設定可能なコンプレックス属性をサポートしています。この階層型のリソース管理手法は強力ではありますが、ギャップが生じます。多数のさまざまなカスタムリソース、ユーザーグループ、およびプロジェクトで構成される大規模な導入では特に重要な意味を持ちます。リソース割り当て機能は、ボトルネックリソースが不足したときに、あるプロジェクトまたは部署がそのリソースを譲るように制御して、こうした企業環境を管理できるようにすることで、このギャップを埋めます。

リソース割り当て機能によって、数種類のリソース、数種類のリソース消費者、クラスタ内のすべてのジョブ、また消費者の組み合わせに対して制限を適用することができます。この意味では、リソースは N1 Grid Engine 構成で認識されている、定義済みコンプレックス属性のすべてです。コンプレックス属性の詳細は、complex(5) のマニュアルページを参照してください。リソースには、slots archmem_totalnum_procswap_total、組み込みリソース、あるいは compiler_license のようなカスタム定義のリソースを指定できます。リソース消費者は、ユーザー、キュー、ホスト、プロジェクト、および並列環境単位になります。

リソース割り当て機能は、消費者が任意の時点で使用可能なリソースを制限する手段を提供します。この制限は、ユーザー、部署、およびプロジェクトに優先順位を付ける間接的な手段になります。ユーザーがリソースを取得する優先順位を直接定義するには、「緊急度ポリシーの構成」および 「共有ベースポリシーの構成」で説明しているリソースの緊急度および共有ベースポリシーを利用します。

N1 Grid Engine 6.1 ソフトウェアを使用してリソースを制限するには、qquota および qconf コマンド、または QMON グラフィカルインタフェースを使用します。詳細は、qquota(1) および qconf(1) のマニュアルページを参照してください。

リソース割り当てセットについて

リソース割り当てセットを使用して、任意のジョブ要求に対して最大リソース消費量を指定することができます。リソース割り当てセットを定義すると、スケジューラはそのセットを利用し、割り当て量の超過がないことに注意しながら、次に実行可能なジョブを選択することができます。リソース割り当て量を設定することの最大の意味は、リソース割り当て量を超えないジョブだけがスケジューリングされて、実行されることです。

リソース割り当てセットでは、特定のジョブ要求に対する最大リソース割り当て量を定義します。構成された規則セットのすべてが、常に適用されます。複数のリソース割り当てセットが定義されている場合は、もっとも制限が厳しいセットが適用されます。リソース割り当てセットはどれも、1 つ以上のリソース割り当て規則で構成されます。これらの規則が順に評価され、特定の要求に合致する最初の規則が使用されます。つまり、リソース割り当てセットの中の 1 つのリソース割り当て規則が特定の要求に対する実効規則になります。

リソース割り当てセットは、次の情報で構成されます。


例 6–1 リソース割り当てセット例

次のリソース割り当てセット例は、user1user2 に対して、ホストグループ lx_hosts の各ホストの未使用仮想空間の最大割り当て量を 2 ギガバイトに制限します。

     {
        name         max_virtual_free_on_lx_hosts
        description  "resource quota for virtual_free restriction"
        enabled      true
        limit        users {user1,user2} hosts {@lx_host} to virtual_free=2g
     }

静的リソース割り当てと動的リソース割り当て

リソース割り当て規則では、必ず、使用可能なリソースの最大値を定義します。だいたいの場合、これらは静的であり、一致するすべてのフィルタスコープに対して同じです。いくつかの異なる規則を、異なるスコープに適用することもできますが、それらの規則はほぼ同じです。この場合は、規則を複製する代わりに、動的制限を定義できます。

動的制限では、代数式を使用して規則制限値を導出します。代数式でコンプレックス属性を参照し、その値を使用して制限値を計算することができます。


例 6–2 動的制限例

次は、動的制限の使用例です。ユーザーは、すべての Linux ホストで 1 CPU 当たり 5 つのスロットの使用が許可されます。


limit hosts {@linux_hosts} to slots=$num_proc*5

num_proc の値は、ホスト上のプロセッサ数です。制限は式 $num_proc*5 で求められ、ホストによって異なることがあります。上記の例を展開すると、たとえば次のような制限が考えられます。

num_proc の代わりに、負荷値あるいは消費可能リソースのいずれかとしてホストが認識するほかのコンプレックス属性をすべて使用することができます。