2.4.2 グリッド実行ジョブの終了コード管理
サブジョブ実行プログラム(UAP)が処理を行うときに,先行するジョブの実行結果を引き継ぐことがあります。このとき,先行ジョブの実行結果の正当性は,先行ジョブの終了コードに基づいて判断されます。つまり,先行ジョブの終了コードがしきい値を超える値の場合は,グリッドジョブネットの実行を中止することによって,後続ジョブが不当な実行結果を入力しないようにできます。
バッチジョブ分散実行システムでは,すべてのサブジョブが正常に終了した場合だけ後続ジョブを実行するようにすることも,高速化を重視して分割した一部のデータだけでも後続ジョブを実行することもできます。分割した一部のデータだけでも後続ジョブを実行するためには,一定数のサブジョブが警告/異常となってもグリッドジョブネットを続行できるようにします。そのためには,警告/異常サブジョブのしきい値を用いて,グリッド実行ジョブの終了コードを変換します。
グリッド実行ジョブの終了コードは,次の図に示す手順で決定されます。
|
-
しきい値管理1:異常/警告変換
業務プログラム(サブジョブ実行プログラム)の戻り値を基に,そのサブジョブの終了コードが正常/警告/異常に変換されます。警告終了は,処理を続行できるが注意を要する状態のときに使用します。
変換後のサブジョブの終了コードは,グリッドプロパティに格納されて,後続ジョブに引き継がれます。
-
しきい値管理2:サブジョブ数による変換
警告終了または異常終了したサブジョブの数に応じて,グリッド実行ジョブの終了コードを決定します。
例えば,異常終了のサブジョブが1つでもあればグリッドジョブネットを停止しますが,警告終了のサブジョブが5つまでなら処理を続行するなどの制御を行います。
(1) 終了コードしきい値の概要
警告しきい値や異常しきい値の値は,JP1/AJS3のしきい値判定と同様に,次のように設定します。
-
正常終了:0〜警告しきい値
-
警告終了:警告しきい値+1〜異常しきい値
-
異常終了:異常しきい値+1以上
- 例
-
警告しきい値を「3」,異常しきい値を「7」に設定した場合は,ジョブの実行結果を次のように判定します。
-
終了コード = 0〜3の場合:正常終了
-
終了コード = 4〜7の場合:警告終了
-
終了コード = 8以上の場合:異常終了
-
(a) サブジョブの終了状態
サブジョブの結果判定(正常/警告/異常)は,サブジョブ実行プログラム(UAP)の戻り値と,[グリッド実行定義]ダイアログボックスで指定した警告/異常しきい値を比較して,しきい値を超えているかどうかで判定されます。
サブジョブの終了状態は,グリッドジョブごとに保持されます。また,再実行時にも再実行したグリッドジョブごとにサブジョブの終了状態が保持されます。
サブジョブの終了状態を次の表に示します。
終了状態 |
判定基準 |
---|---|
正常(NORMAL) |
サブジョブが完了し,UAPの戻り値が「警告しきい値」以下の状態 |
警告(WARNING) |
サブジョブが完了し,UAPの戻り値が「警告しきい値」を超えて「異常しきい値」以下の状態 |
異常(ERROR) |
サブジョブが完了し,UAPの戻り値が「異常しきい値」を超えた状態 |
スキップ(SKIP) |
先行するジョブの結果を受けて,サブジョブを実行しなかった状態 |
未実行(NOEXEC) |
設定ファイル(ugpsm.conf)のOBSTACLE_SUBJOB_STATE_MODEパラメータの指定値によって,次の状態になります。
|
キャンセル(CANCEL) |
サブジョブが実行中または実行前に強制終了された状態 |
不明(UNKNOWN) |
ノード障害などでサブジョブの状態が不明 |
保留(HOLD) |
グリッド実行ジョブ定義時に保留設定したサブジョブで,未実行な状態 |
保留スキップ(SKIP_H) |
先行するジョブの中に実行が保留されたことを受けて,サブジョブを実行しなかった状態 |
(b) サブジョブ実行中にノードマネージャで障害が発生した場合のサブジョブ終了状態
設定ファイル(ugpsm.conf)のOBSTACLE_SUBJOB_STATE_MODEパラメータ指定値によるサブジョブ終了状態を次の表に示します。
項番 |
条件 |
OBSTACLE_SUBJOB_STATE_MODE指定値 |
備考 |
|
---|---|---|---|---|
LEGACY |
STANDARD |
|||
1 |
サブジョブ実行要求のRPCでエラー |
NOEXEC |
NOEXEC |
ほかに実行できるノードがないとき |
2 |
RPCの応答受信でエラー |
NOEXEC |
UNKNOWN |
− |
3 |
ノードマネージャで終了コードが96,101,105以外のエラー |
NOEXEC |
UNKNOWN |
− |
4 |
未実行サブジョブ |
NOEXEC |
NOEXEC |
ほかに実行できるノードがないとき |
5 |
回復コマンド実行時,ジョブマネージャのステータスファイル内がサブジョブ実行中で,ノードマネージャが未起動またはノードマネージャのステータスファイル内もサブジョブ実行中 |
NOEXEC |
UNKNOWN |
gpjmrcvコマンド,または,gpdmrcvコマンドで-wの指定がないとき |
6 |
回復コマンド実行時,ノードマネージャがサブジョブの実行中断を検知 |
NOEXEC |
UNKNOWN |
− |
(凡例) −:該当する内容はありません。
(c) グリッド実行ジョブの終了状態
グリッド実行ジョブの終了コードには,そのグリッドジョブを構成するサブジョブの終了状態のうち,最悪値に対応する終了コードが設定されます。また,「警告」や「異常」となったサブジョブがあっても一定数までなら処理を続行できるように,警告終了または異常終了したサブジョブの数をしきい値として,グリッド実行ジョブの終了コードを設定することもできます。
グリッド実行ジョブの終了状態を次の表に示します。
終了状態 |
ジョブマネージャによる判定基準 |
JP1/AJS3による判定基準 |
---|---|---|
正常終了 |
すべてのサブジョブ,またはサブジョブ数しきい値に指定した数のサブジョブの終了コードが「警告しきい値」以下の状態 |
グリッドジョブの終了コードが「警告しきい値」以下の状態 |
警告終了 |
サブジョブ数しきい値に指定した数のサブジョブの終了コードが「警告しきい値」を超えて「異常しきい値」以下の状態 |
グリッドジョブの終了コードが「警告しきい値」を超えて「異常しきい値」以下の状態 |
異常終了 |
サブジョブ数しきい値に指定した数のサブジョブの終了コードが「異常しきい値」を超えた状態 |
グリッドジョブの終了コードが「異常しきい値」を超えた状態 |
(2) グリッド実行ジョブの終了コードしきい値の管理
グリッド実行ジョブでは複数のサブジョブが実行されるため,1つのサブジョブの終了コードをグリッド実行ジョブの終了コードとして扱わないようにする必要があります。さらに,サブジョブの終了コードには,サブジョブから実行されたUAP(COBOLで作成された業務プログラムなど)の戻り値が設定されますが,これを直接サブジョブの終了コードとして扱わないようにする必要もあります。
そこで,次に示す2種類のしきい値を用いて,グリッド実行ジョブの終了コードを管理します。
-
サブジョブで実行されたUAPの戻り値を変換するためのしきい値
-
エラーとなったUAPの数によって,グリッド実行ジョブの終了コードを変更するためのしきい値
しきい値を用いたグリッド実行ジョブの終了コードの管理方法を次の図に示します。
|
図中のしきい値管理1としきい値管理2は,次の表に示すように,それぞれ2つのしきい値を持ちます。これらのしきい値は[グリッド実行定義]ダイアログボックスで指定します。
管理の種別 |
しきい値の種類 |
しきい値の意味 |
デフォルト値 |
---|---|---|---|
しきい値管理1 |
サブジョブ警告終了しきい値 |
個々のサブジョブの終了コードを警告終了値の「20」に変更するためのしきい値です。 UAPの戻り値が0からこの値までは,正常終了値の「0」が設定されます。この値を超えると警告終了値の「20」が設定されます。 |
ありません。 |
サブジョブ異常終了しきい値 |
個々のサブジョブの終了コードを異常終了値の「50」に変更するためのしきい値です。 UAPの戻り値がサブジョブ警告終了しきい値を超えた値から,この値までは,警告終了値の「20」が設定されます。この値を超えると異常終了値の「50」が設定されます。 |
0 |
|
しきい値管理2 |
警告サブジョブ数しきい値 |
警告終了の終了コード「10」または「20」で終了させるサブジョブ数です。 警告終了したサブジョブ数がこのサブジョブ数を超えた場合,警告終了(終了コード10または20)のサブジョブしかなくても,グリッド実行ジョブの終了コードには「30」が設定されます。 |
0 |
異常サブジョブ数しきい値 |
異常終了の終了コード「50」で終了させるサブジョブ数です。 警告終了したサブジョブ数がこのサブジョブ数を超えた場合,異常終了(終了コード40または50)のサブジョブしかなくても,グリッド実行ジョブの終了コードには「60」が設定されます。 |
0 |
(a) グリッド実行ジョブの終了コードの意味
しきい値管理2によって,グリッド実行ジョブに設定される終了コードを次の表に示します。
値 |
意味 |
---|---|
0 |
すべてのサブジョブが正常終了しました。つまり,0からサブジョブ警告終了しきい値までの終了コードで終了しました。 |
10 |
保留したサブジョブが存在します。または,実行した範囲では警告終了したサブジョブはありませんでしたが,先行ジョブの中に終了状態が警告(WARNING),保留(HOLD)または保留スキップ(SKIP_H)となったサブジョブが1つ以上存在します。 |
20 |
警告終了したサブジョブ数が,1〜警告サブジョブ数しきい値です。 |
30 |
警告終了したサブジョブ数が,警告サブジョブ数しきい値を超えています。 |
40 |
実行した範囲では異常終了はありませんでしたが,先行ジョブの中に終了状態が異常,スキップ,未実行,またはキャンセルとなったサブジョブが存在します。 なお,先行ジョブの中に終了状態が異常,キャンセルとなったサブジョブがある場合は,グリッド実行ジョブの終了状態はSKIP(スキップ)となります。 |
50 |
異常終了したサブジョブ数が,1〜異常サブジョブ数しきい値です。 |
60 |
異常終了したサブジョブ数が,異常サブジョブ数しきい値を超えています。 |
61以上 |
ジョブマネージャ,データマネージャまたはノードマネージャとしてのエラー終了コードです。 詳細は,「9.5 終了コード」を参照してください。 |
JP1/AJS3では,グリッド実行ジョブの終了コードをJP1/AJS3でのしきい値として参照し,次のグリッドジョブを実行するかどうかの判断をすることによって,グリッドジョブネットを制御します。
(3) 終了コードしきい値の指定例
サブジョブが20個ある場合のしきい値の指定例を次に示します。
この例でのUAPの戻り値を次の表に示します。
戻り値 |
意味 |
---|---|
0 |
正常終了しました。 |
1〜4 |
軽微なエラーが発生しました(無視できるエラー)。 |
5〜100 |
エラーが発生しました。 |
101以上 |
無視できない,重大なエラーが発生しました。 |
後続グリッドジョブの実行および実行抑止の条件は次のとおりとします。
-
戻り値5〜100のUAPが9個までの場合は,「警告」と判定して次のグリッドジョブを実行できるものとします。
-
戻り値5〜100のUAPが10個以上の場合は,「異常」と判定して次のグリッドジョブの実行を抑止します。
-
UAPの戻り値が100を超えるものが1つでもある場合は,「異常」と判定して次のグリッドジョブの実行を抑止します。
この場合,グリッド実行ジョブとJP1/AJS3のしきい値は,次の表に示すように指定します。
しきい値の種類 |
指定する値 |
指定の理由 |
---|---|---|
サブジョブ警告終了しきい値 |
4 |
UAPの戻り値0〜4を正常終了として扱うため。 |
サブジョブ異常終了しきい値 |
100 |
UAPの戻り値100を超えるエラーは無視できないため。 |
警告サブジョブ数しきい値 |
9 |
UAPの戻り値5〜100のエラーが発生しても,9個までは次のグリッドジョブを実行できるようにするため。 |
異常サブジョブ数しきい値 |
0 |
UAPの戻り値101以上のエラーが1つでもあったら次のグリッドジョブの実行を抑止するため。 |
JP1/AJS3の警告しきい値 |
0 |
正常終了は,終了コード0とするため。 終了コード10〜20は警告として扱うため。 |
JP1/AJS3の異常しきい値 |
30 |
UAPの戻り値が5〜100のエラーが9個を超えたら次のグリッドジョブの実行を抑止するため。 |