Sun N1 Grid Engine 6.1 ユーザーズガイド

ジョブのスケジューリング方法

Grid Engine ソフトウェアのポリシー管理では、管理目標を最適な形で達成するために、クラスタ内の共有リソースの使用を自動的に制御します。優先順位の高いジョブは優先的に振り分けられ、リソースにより多くアクセスできます。クラスタ管理では、ハイレベルの使用ポリシーを定義できます。次のポリシーが使用可能です。

Grid Engine ソフトウェアは、共有ベースのポリシー、機能ポリシー、または両方を日常的にに使用するように設定できます。これらのポリシーはどんな割合で組み合わせることもできます。1 つのポリシーの重みを 0 にして 2 番目のポリシーだけを使用することも、両方のポリシーに同じ重みを与えることもできます。

ルーチンポリシーに加えて、ジョブに開始期限を付けて発行することもできます。QMON による高度なジョブの発行」の期限発行パラメータの説明を参照してください。期限ジョブは、ルーチンスケジューリングに干渉します。管理者は、共有ベーススケジューリングと機能スケジューリングを一時的に無効にすることもできます。無効は、個別ジョブ、あるユーザーに関連するすべてのジョブ、部門、またはプロジェクトに対して適用できます。

ジョブの優先順位

すべてのジョブ間で調整を行う 4 つのポリシー以外に、Grid Engine ソフトウェアではユーザーが自分のジョブ間の優先順位を設定できる場合もあります。複数のジョブを発行したユーザーは、たとえば、ジョブ 3 が一番重要で、ジョブ 1 と 2 の重要度は同じだが、ジョブ 3 よりは重要ではないなどと指定することができます。

ジョブの優先順位は、QMON Submit Job パラメータ Priority または qsub -p オプションを使用して設定します。1024 (最低) から 1023 (最高) の優先順位範囲を指定できます。優先順位によって、同時に 1 人のユーザーの複数のジョブがシステム内に存在する場合に、どのようにしてそのユーザーのジョブから選択を行うかがスケジューラに伝えられます。特定のジョブに割り当てられる相対的な重要度は、ユーザーのジョブに対して指定された最高と最低の優先順位、および特定のジョブの優先順位によって異なります。

チケットポリシー

機能ポリシー、共有ベースのポリシーおよび優先ポリシーはすべて、チケットを使用して実行されます。各チケットポリシーには、マルチマシン Grid Engine システムに入力されるジョブに割り当てられるチケットの割り当て元であるチケットプールがあります。 有効な各ルーチンチケットポリシーは、複数のチケットをすべての新しいジョブに割り当てます。チケットポリシーは、スケジューリング間隔で実行中のジョブにチケットを再割り当てすることもできます。各チケットポリシーがチケットを割り当てるために使用する条件を、この節で説明します。

チケットは、3 つのポリシーに重み付けを行います。たとえば、機能ポリシーにチケットが割り当てられていない場合、機能ポリシーは使用されません。同じ数のチケットが機能チケットプールと共有ベースのチケットプールに割り当てられている場合は、両方のポリシーがジョブの重要度の決定において等しい重さを持ちます。

Grid Engine 管理者が、システム構成時にチケットをルーチンチケットポリシーに割り当てます。管理者とオペレータは、いつでもチケットの割り当てを変更できます。無効を示すために追加チケットを一時的にシステムに投入することもできます。チケットポリシーは、チケットの割り当てによって組み合わせられます。チケットが複数のチケットポリシーに割り当てられている場合、ジョブは有効な各チケットポリシーから一部のチケットを受け取ります。

Grid Engine システムは、有効な各チケットポリシーでのジョブの重要度を示すために、システムに入力されるジョブにチケットを与えます。実行中の各ジョブは、チケットを優先ポリシーなどから受け取り、ジョブがリソースの適当な共有以上を受け取っている場合などには、チケットを失います。また各スケジューリング間隔で同じ数のチケットを持ち続けます。ジョブが持っているチケットの数は、Grid Engine システムが各スケジューリング間隔でジョブに与えようとするリソース共有を表します。

ジョブが持っているチケットの数は、 QMON または qstat -ext で表示できます。QMON を使用したジョブの監視と制御」を参照してください。qstat コマンドは、たとえば qsub -p などによって、優先順位を表示することもできます。詳細は、 qstat(1) のマニュアルページを参照してください。

キューの選択

ジョブをすぐに開始できない場合、Grid Engine システムは不定のキューを要求するジョブを振り分けません。このようなジョブは、 ジョブのスケジューリングを適宜試行する sge_qmaster でスプールとしてマークされます。このようなジョブは使用可能になった次の適切なキューに振り分けられます。

スプーリングジョブとは反対に、名前を指定して特定のキューに発行されたジョブは、ジョブを開始できるかスプールする必要があるかに関わらず、そのキューに直接送られます。したがって、名前を指定されたジョブ要求に対してのみ、Grid Engine システムのキューを情報工学で言われるバッチキューとみなすことができます。特定の要求なしで発行されたジョブは、キューに入るために、sge_qmaster のスプーリングメカニズムを使用するので、より抽象的で柔軟なキュー概念が採用されます。

ジョブのスケジューリングを行い、複数の空きキューがリソース要求を満たす場合、ジョブは通常一番負荷が少ないホストに属する適切なキューに振り分けられます。スケジューラ 構成エントリ queue_sort_methodseq_no に設定すると、クラスタ管理でこの負荷に依存したスキームを固定順のアルゴリズムに変更できます。キュー構成エントリ seq_no は、キュー間の優先順位を定義し、一番高い優先順位をシーケンス番号が一番小さいキューに割り当てます。