2.3.5 実行ノードの選択
最適な実行ノードを選択してサブジョブを投入して,グリッド実行ジョブの実行時間を短縮できます。サブジョブを複数の実行ノードで実行できるように定義することで,次に示す機能を使用できます。この機能は,データ配置情報のフォーマット識別子に0101または0201を指定した場合に適用されます。
機能 |
説明 |
|
---|---|---|
実行ノード選択機能 |
自動リトライ機能 |
障害が発生している実行ノード以外の実行ノードを選択して,サブジョブを投入します。 |
最適ノード選択機能 |
ほかのグリッド実行ジョブの実行状況や,サブジョブの多重度などを基に,実行ノードの空き状況を判断して空きのある実行ノードを選択して,サブジョブを投入します。 |
(1) 自動リトライ機能
サブジョブの実行時に実行ノードに対して通信エラーなどを検知した場合に,ほかの実行ノードに振り分けてサブジョブを実行する機能です。自動リトライ機能を使用する場合の実行ノードの選択方法を次の図に示します。
(a) 自動リトライ機能が適用されるエラーの種類
次の表に示すエラーが発生した場合に,自動リトライ機能が適用されます。これらのエラーは,サブジョブ実行プログラム(UAP)のスクリプトファイルが実行される前に発生する可能性があるエラーです。スクリプトファイルを実行した可能性があるエラーには,自動リトライ機能は適用されません。
終了コード |
エラーの内容 |
出力メッセージID |
---|---|---|
119 |
一括処理数を求めるための非同期応答RPCにエラーが発生しました。 |
KAKJ3002-E |
119 |
サブジョブ実行を行うための非同期応答RPCにエラーが発生しました。 |
KAKJ3002-E |
119 |
一括処理数を求めるための非同期応答型RPCの応答受信にエラーが発生しました。 |
KAKJ3003-E |
96 |
ユーザプロセスの実行に失敗しました。 |
KAKJ3104-E |
101 |
ユーザ情報が不正です。 |
KAKJ3108-E KAKJ3111-E |
105 |
ノードマネージャでサブジョブの実行に失敗しました。 |
KAKJ3115-E |
出力メッセージIDのメッセージは,ジョブマネージャまたはノードマネージャ上のメッセージログファイル中に出力されます。これらのメッセージは,自動リトライ機能を適用していても,メッセージログファイル中に出力されます。
なお,自動リトライ機能では,サブジョブの実行開始が成功するまで,データ配置情報に記載された各データ識別子の全実行ノードに対してリトライします。すべての実行ノードで対象のサブジョブの実行開始が失敗した場合は,そのサブジョブは未実行状態(NOEXEC)となります。
(2) 最適ノード選択機能
サブジョブを大量に同時実行したり,グリッド実行ジョブを多重実行したりすると,特定の実行ノードに処理が集中し,処理が停滞することがあります。最適ノード選択機能は,これを避けるために,サブジョブの多重度に対して実行中のサブジョブ数が少ないノードマネージャを優先的に実行ノードとして選択する機能です。
最適ノードは,ノードマネージャのサブジョブ多重度と現在実行中のサブジョブ数から空き状況が判断されて選択されます。これによって,ある実行ノードで多数のサブジョブが実行中で空きが少ない場合に,空きが多いほかの実行ノードにサブジョブが投入されるため,余力のある実行ノードを活用できます。最適ノード選択機能を使用する場合の実行ノードの選択方法を次の図に示します。
(3) 実行ノード選択機能が適用される条件
実行ノード選択機能を適用するには,次に示す条件を満たす必要があります。
-
[グリッド実行定義]ダイアログボックスの[実行ノード]で[先行グリッドジョブと同じ]のチェックを外していること
[単体グリッドジョブ定義]ダイアログボックスにはこの項目はありませんが,[グリッド実行定義]ダイアログボックスで[先行グリッドジョブと同じ]のチェックを外している場合と同じ処理となります。
-
データ配置情報に複数の実行ノードを指定していること
グリッド開始ジョブで起動するグリッドジョブ前処理プログラムから出力されるデータ配置情報で,次のどちらかの条件を満たす必要があります。
-
データ識別子ごとの実行ノード名を複数指定する。
-
実行ノードをグループ指定する。
1つのデータ識別子に対して,実行ノード名を1つだけ指定した場合は,実行ノード選択機能は無効になります。
-
(4) 実行ノード選択の優先順位
サブジョブが投入されたときに割り当てられる実行ノードの優先順位は,実行ノード選択機能が有効な場合と無効な場合とで異なります。それぞれの場合の優先順位について説明します。
(a) 実行ノード選択機能が有効な場合
実行ノード選択機能を適用している場合は,実行ノード選択の優先順位は次の表に示すように設定されます。
ジョブ |
先行グリッドジョブの実行結果参照の指定内容 |
第一優先 |
第二優先以降 |
---|---|---|---|
グリッド実行ジョブ |
参照する |
先行グリッドジョブで実行した実行ノード |
データ配置情報の指定に従う。 |
参照しない |
|
||
単体グリッドジョブ |
−※ |
|
データ配置情報の指定に従う。 |
先行グリッドジョブの実行結果を参照するかどうかは,[グリッド実行定義]ダイアログボックスの[先行グリッドジョブ実行結果]で指定します。
データ配置情報の指定に従って設定される優先順位は次のとおりです。
-
「データ識別子,実行ノード名,実行ノード名,…」の形式で指定している場合
第一優先の実行ノード名から右方向に優先順位が設定されます。ただし,第一優先の実行ノードが先頭に記述された実行ノードと異なる場合は,先頭に記述された実行ノードから2番目以降の優先順位が設定されます。
サブジョブの実行が完了した実行ノードを第一優先に指定したサブジョブがなくなると,より高い優先順位が指定されているサブジョブからスケジュールされます。
-
「データ識別子,*」の形式で指定している場合
第一優先の実行ノード以外の実行ノードに,同じ優先順位が設定されます。サブジョブ実行が先に完了した実行ノードにスケジュールされます。
(b) 最適ノード選択機能の適用例
先行グリッドジョブの実行結果を引き継がない指定をした場合に,最適ノード選択機能を適用するかどうかで,処理時間がどのように異なるのかについて,実行例を用いて説明します。
この例では,対象としているグリッド実行ジョブ以外のグリッド実行ジョブは動作していないものとします。また,次に示すデータ配置情報を使用します。
FORMATID=0101 DATA001,nodeA,nodeB,nodeC DATA002,nodeA,nodeB,nodeC DATA003,nodeA,nodeB,nodeC DATA004,nodeB,nodeC,nodeA DATA005,nodeB,nodeC,nodeA DATA006,nodeB,nodeC,nodeA DATA007,* DATA008,* DATA009,* *=nodeA,nodeB,nodeC
- 最適ノード選択機能が無効な場合
-
最適ノード選択機能が無効な場合の実行例を次の図に示します。図中の番号と,説明の番号は対応しています。
図2‒11 最適ノード選択機能が無効な場合の実行例 この場合は,グリッド実行ジョブ実行中に空いている実行ノード(nodeC)があっても,サブジョブが投入されないため,合計で30秒掛かります。
-
第一優先のサブジョブが割り当てられます。
このとき,明示的に指定されたサブジョブ(001,002,004,005)と,グループ化されたサブジョブ(007,008)が混在します。
-
nodeAの処理が完了し,第一優先のサブジョブが割り当てられます。
明示的に指定されたサブジョブ(003)とグループ化されたサブジョブ(009)が割り当てられます。
-
nodeBの処理が完了し,第一優先のサブジョブ(006)が割り当てられます。
-
- 最適ノード選択機能が有効な場合
-
最適ノード選択機能が有効な場合の実行例を次の図に示します。図中の番号と,説明の番号は対応しています。
図2‒12 最適ノード選択機能が有効な場合の実行例 この場合は,グリッド実行ジョブ実行中に空いている実行ノード(nodeC)があると,優先順位の低いサブジョブが投入されるため,合計で25秒に収まります。
-
第一優先のサブジョブが割り当てられます。
このとき,明示的に指定されたサブジョブ(001,002,004,005)と,グループ化されたサブジョブ(007,008)が混在します。
-
nodeAの処理が完了し,第一優先のサブジョブが割り当てられます。
明示的に指定されたサブジョブ(003)とグループ化されたサブジョブ(009)が割り当てられます。
-
nodeCの処理が完了します。
nodeCには第一優先のサブジョブはないため,第二優先のサブジョブ(006)が割り当てられます。
-
(c) 実行ノード選択の優先順位の例
実行ノード選択機能が有効な場合の,実行ノード選択の優先順位の例を次の表に示します。
グリッド実行ジョブの条件 |
実行ノード選択の優先順位 |
|||
---|---|---|---|---|
node1 |
node2 |
node3 |
node4 |
|
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode1で実行した場合) |
1 |
2 |
3 |
4 |
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode3で実行した場合) |
2 |
3 |
1 |
4 |
先行グリッドジョブの実行結果を参照しない指定 |
1 |
2 |
3 |
4 |
グリッド開始ジョブ直後 |
1 |
2 |
3 |
4 |
グリッド実行ジョブの条件 |
実行ノード選択の優先順位 |
|||
---|---|---|---|---|
node1 |
node2 |
node3 |
node4 |
|
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode1で実行した場合) |
1 |
2※ |
2※ |
2※ |
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode3で実行した場合) |
2※ |
2※ |
1 |
2※ |
先行グリッドジョブの実行結果を参照しない指定 |
先にサブジョブ実行が完了した実行ノードにスケジュールされます。 |
|||
グリッド開始ジョブ直後 |
(d) 実行ノード選択機能が無効な場合
実行ノード選択機能を適用しない場合は,第一優先の実行ノードだけでサブジョブが実行されます。実行ノード選択機能が無効な場合に,第一優先に設定される実行ノードを次の表に示します。
ジョブ |
先行グリッドジョブの実行結果参照の指定内容 |
第一優先 |
---|---|---|
グリッド実行ジョブ |
参照する |
先行グリッドジョブで実行した実行ノード |
参照しない |
|
|
単体グリッドジョブ |
−※ |
|
実行ノード選択機能が無効な場合の,実行ノード選択の優先順位の例を次の表に示します。
グリッド実行ジョブの条件 |
実行ノード選択の優先順位 |
|||
---|---|---|---|---|
node1 |
node2 |
node3 |
node4 |
|
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode1で実行した場合) |
1 |
− |
− |
− |
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode3で実行した場合) |
− |
− |
1 |
− |
先行グリッドジョブの実行結果を参照しない指定 |
1 |
− |
− |
− |
グリッド開始ジョブ直後 |
1 |
− |
− |
− |
グリッド実行ジョブの条件 |
実行ノード選択の優先順位 |
|||
---|---|---|---|---|
node1 |
node2 |
node3 |
node4 |
|
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode1で実行した場合) |
1 |
− |
− |
− |
先行グリッドジョブの実行結果を参照する指定 (先行グリッドジョブではnode3で実行した場合) |
− |
− |
1 |
− |
先行グリッドジョブの実行結果を参照しない指定 |
先にサブジョブ実行が完了した実行ノードにスケジュールされます。 |
|||
グリッド開始ジョブ直後 |