Hitachi

uCosminexus Grid Processing Server 使用の手引


2.4.2 グリッド実行ジョブの終了コード管理

サブジョブ実行プログラム(UAP)が処理を行うときに,先行するジョブの実行結果を引き継ぐことがあります。このとき,先行ジョブの実行結果の正当性は,先行ジョブの終了コードに基づいて判断されます。つまり,先行ジョブの終了コードがしきい値を超える値の場合は,グリッドジョブネットの実行を中止することによって,後続ジョブが不当な実行結果を入力しないようにできます。

バッチジョブ分散実行システムでは,すべてのサブジョブが正常に終了した場合だけ後続ジョブを実行するようにすることも,高速化を重視して分割した一部のデータだけでも後続ジョブを実行することもできます。分割した一部のデータだけでも後続ジョブを実行するためには,一定数のサブジョブが警告/異常となってもグリッドジョブネットを続行できるようにします。そのためには,警告/異常サブジョブのしきい値を用いて,グリッド実行ジョブの終了コードを変換します。

グリッド実行ジョブの終了コードは,次の図に示す手順で決定されます。

図2‒35 グリッド実行ジョブの終了コードの決定

[図データ]

  1. しきい値管理1:異常/警告変換

    業務プログラム(サブジョブ実行プログラム)の戻り値を基に,そのサブジョブの終了コードが正常/警告/異常に変換されます。警告終了は,処理を続行できるが注意を要する状態のときに使用します。

    変換後のサブジョブの終了コードは,グリッドプロパティに格納されて,後続ジョブに引き継がれます。

  2. しきい値管理2:サブジョブ数による変換

    警告終了または異常終了したサブジョブの数に応じて,グリッド実行ジョブの終了コードを決定します。

    例えば,異常終了のサブジョブが1つでもあればグリッドジョブネットを停止しますが,警告終了のサブジョブが5つまでなら処理を続行するなどの制御を行います。

〈この項の構成〉

(1) 終了コードしきい値の概要

警告しきい値や異常しきい値の値は,JP1/AJS3のしきい値判定と同様に,次のように設定します。

警告しきい値を「3」,異常しきい値を「7」に設定した場合は,ジョブの実行結果を次のように判定します。

  • 終了コード = 0〜3の場合:正常終了

  • 終了コード = 4〜7の場合:警告終了

  • 終了コード = 8以上の場合:異常終了

(a) サブジョブの終了状態

サブジョブの結果判定(正常/警告/異常)は,サブジョブ実行プログラム(UAP)の戻り値と,[グリッド実行定義]ダイアログボックスで指定した警告/異常しきい値を比較して,しきい値を超えているかどうかで判定されます。

サブジョブの終了状態は,グリッドジョブごとに保持されます。また,再実行時にも再実行したグリッドジョブごとにサブジョブの終了状態が保持されます。

サブジョブの終了状態を次の表に示します。

表2‒30 サブジョブの終了状態

終了状態

判定基準

正常(NORMAL)

サブジョブが完了し,UAPの戻り値が「警告しきい値」以下の状態

警告(WARNING)

サブジョブが完了し,UAPの戻り値が「警告しきい値」を超えて「異常しきい値」以下の状態

異常(ERROR)

サブジョブが完了し,UAPの戻り値が「異常しきい値」を超えた状態

スキップ(SKIP)

先行するジョブの結果を受けて,サブジョブを実行しなかった状態

未実行(NOEXEC)

設定ファイル(ugpsm.conf)のOBSTACLE_SUBJOB_STATE_MODEパラメータの指定値によって,次の状態になります。

<STANDARD指定時>

グリッドジョブを実行後,サブジョブが一度も実行されていない状態

<LEGACY指定時>

グリッドジョブを実行後,サブジョブが一度も実行されていない状態,またはサブジョブを実行中にノードマネージャで障害が発生したため,サブジョブの実行終了を判断できなかった状態

キャンセル(CANCEL)

サブジョブが実行中または実行前に強制終了された状態

不明(UNKNOWN)

ノード障害などでサブジョブの状態が不明

保留(HOLD)

グリッド実行ジョブ定義時に保留設定したサブジョブで,未実行な状態

保留スキップ(SKIP_H)

先行するジョブの中に実行が保留されたことを受けて,サブジョブを実行しなかった状態

(b) サブジョブ実行中にノードマネージャで障害が発生した場合のサブジョブ終了状態

設定ファイル(ugpsm.conf)のOBSTACLE_SUBJOB_STATE_MODEパラメータ指定値によるサブジョブ終了状態を次の表に示します。

表2‒31 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) グリッド実行ジョブの終了状態

グリッド実行ジョブの終了コードには,そのグリッドジョブを構成するサブジョブの終了状態のうち,最悪値に対応する終了コードが設定されます。また,「警告」や「異常」となったサブジョブがあっても一定数までなら処理を続行できるように,警告終了または異常終了したサブジョブの数をしきい値として,グリッド実行ジョブの終了コードを設定することもできます。

グリッド実行ジョブの終了状態を次の表に示します。

表2‒32 グリッド実行ジョブの終了状態

終了状態

ジョブマネージャによる判定基準

JP1/AJS3による判定基準

正常終了

すべてのサブジョブ,またはサブジョブ数しきい値に指定した数のサブジョブの終了コードが「警告しきい値」以下の状態

グリッドジョブの終了コードが「警告しきい値」以下の状態

警告終了

サブジョブ数しきい値に指定した数のサブジョブの終了コードが「警告しきい値」を超えて「異常しきい値」以下の状態

グリッドジョブの終了コードが「警告しきい値」を超えて「異常しきい値」以下の状態

異常終了

サブジョブ数しきい値に指定した数のサブジョブの終了コードが「異常しきい値」を超えた状態

グリッドジョブの終了コードが「異常しきい値」を超えた状態

(2) グリッド実行ジョブの終了コードしきい値の管理

グリッド実行ジョブでは複数のサブジョブが実行されるため,1つのサブジョブの終了コードをグリッド実行ジョブの終了コードとして扱わないようにする必要があります。さらに,サブジョブの終了コードには,サブジョブから実行されたUAP(COBOLで作成された業務プログラムなど)の戻り値が設定されますが,これを直接サブジョブの終了コードとして扱わないようにする必要もあります。

そこで,次に示す2種類のしきい値を用いて,グリッド実行ジョブの終了コードを管理します。

  1. サブジョブで実行されたUAPの戻り値を変換するためのしきい値

  2. エラーとなったUAPの数によって,グリッド実行ジョブの終了コードを変更するためのしきい値

しきい値を用いたグリッド実行ジョブの終了コードの管理方法を次の図に示します。

図2‒36 グリッド実行ジョブの終了コードの管理

[図データ]

図中のしきい値管理1としきい値管理2は,次の表に示すように,それぞれ2つのしきい値を持ちます。これらのしきい値は[グリッド実行定義]ダイアログボックスで指定します。

表2‒33 グリッド実行ジョブの終了コードのしきい値

管理の種別

しきい値の種類

しきい値の意味

デフォルト値

しきい値管理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によって,グリッド実行ジョブに設定される終了コードを次の表に示します。

表2‒34 グリッド実行ジョブの終了コードの意味

意味

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の戻り値を次の表に示します。

表2‒35 しきい値の指定例でのUAPの戻り値

戻り値

意味

0

正常終了しました。

1〜4

軽微なエラーが発生しました(無視できるエラー)。

5〜100

エラーが発生しました。

101以上

無視できない,重大なエラーが発生しました。

後続グリッドジョブの実行および実行抑止の条件は次のとおりとします。

この場合,グリッド実行ジョブとJP1/AJS3のしきい値は,次の表に示すように指定します。

表2‒36 グリッド実行ジョブと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個を超えたら次のグリッドジョブの実行を抑止するため。