JP1/Automatic Job Management System 3 設計ガイド(業務設計編)
JP1/AJS3では,ジョブやジョブネットの実行先として実行エージェントグループを指定することで,その実行エージェントグループに属する実行エージェント間でジョブの実行を分散させることができます。負荷を分散するパターンは,次のとおりです。
- 複数の実行エージェントに,ジョブを均等に分散して実行する。
- それぞれの実行エージェントでのジョブ実行数の上限に差を付けて実行する。
- ある実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに分散して実行する。
実行先として実行エージェントグループを指定できるユニットは次のものです。
- ルートジョブネット
- ネストジョブネット
- PCジョブ
- UNIXジョブ
- アクションジョブ
- カスタムジョブ
負荷分散のパターンごとに,どのように負荷分散処理されるかを説明します。この例では,job1~job6の六つのジョブを定義したジョブネットの実行エージェントとして,実行エージェントグループAGTGR1を指定しているものとします。
- <この項の構成>
- (1) 均等に負荷を分散する場合
- (2) 実行エージェントでのジョブ実行数の上限に差を付ける場合
- (3) ジョブ実行数が上限に達したら別の実行エージェントに分散して実行する場合
(1) 均等に負荷を分散する場合
均等に負荷を分散させる場合は,実行エージェントグループにグルーピングしているそれぞれの実行エージェントの優先順位およびジョブ実行多重度を同じ値にします。
均等に負荷を分散する場合の例を次の図に示します。
図2-47 均等に負荷を分散する場合の例
例えば,実行エージェントグループAGTGR1にグルーピングした実行エージェントAGT1,AGT2,AGT3の優先順位を「16」,ジョブ実行多重度を「3」と定義した場合,ジョブの実行順序は次のように決定されます。
- job1の実行エージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
すべての実行エージェントの負荷が同じ割合であり,それぞれの優先順位は同じであるため,job1の実行エージェントは,実行エージェントグループAGTGR1に定義されている順のAGT1に決定します。
- 実行エージェントAGT1:「0 / 3」
- 実行エージェントAGT2:「0 / 3」
- 実行エージェントAGT3:「0 / 3」
- job2の実行エージェントが決定される。
job1の実行エージェントがAGT1に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
これによって,実行エージェントAGT2とAGT3で負荷の割合が同じになります。それぞれの優先順位は同じであるため,job2の実行エージェントは,二つのうち実行エージェントグループAGTGR1に定義されている順のAGT2に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「0 / 3」
- 実行エージェントAGT3:「0 / 3」
- job3の実行エージェントが決定される。
job2の実行エージェントがAGT2に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
これによって,実行エージェントAGT3の負荷がいちばん軽くなります。そのため,job3の実行エージェントはAGT3に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「1 / 3」
- 実行エージェントAGT3:「0 / 3」
- job4の実行エージェントが決定される。
job1~job3の実行エージェントが決定し,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
再びすべての実行エージェントの負荷が同じ割合となったため,job4の実行エージェントは,実行エージェントグループAGTGR1に定義されている順のAGT1に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「1 / 3」
- 実行エージェントAGT3:「1 / 3」
- job5の実行エージェントが決定される。
job4の実行エージェントがAGT1に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT2とAGT3で負荷の割合が同じになったため,job5の実行エージェントは,AGTGR1に定義されている順のAGT2に決定します。
- 実行エージェントAGT1:「2 / 3」
- 実行エージェントAGT2:「1 / 3」
- 実行エージェントAGT3:「1 / 3」
- job6の実行エージェントが決定される。
job5の実行エージェントがAGT2に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT3の負荷がいちばん軽くなるため,job6の実行エージェントはAGT3に決定します。
- 実行エージェントAGT1:「2 / 3」
- 実行エージェントAGT2:「2 / 3」
- 実行エージェントAGT3:「1 / 3」
(2) 実行エージェントでのジョブ実行数の上限に差を付ける場合
それぞれの実行エージェントで実行するジョブ数の上限に差を付けて負荷を分散させる場合は,ジョブ実行多重度にそれぞれの値を設定します。優先順位には同じ値を設定します。
実行エージェントでのジョブ実行数の上限に差を付ける場合の例を次の図に示します。
図2-48 実行エージェントでのジョブ実行数の上限に差を付ける場合の例
例えば,実行エージェントグループAGTGR1にグルーピングした実行エージェントAGT1,AGT2,AGT3のジョブ実行多重度を,それぞれ「3」,「2」,「1」と定義した場合,ジョブの実行順序は次のようにして決定されます。
- job1の実行エージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
すべての実行エージェントの負荷が同じ割合であり,それぞれの優先順位は同じであるため,job1の実行エージェントは,実行エージェントグループAGTGR1に定義されている順のAGT1に決定します。
- 実行エージェントAGT1:「0 / 3」
- 実行エージェントAGT2:「0 / 2」
- 実行エージェントAGT3:「0 / 1」
- job2の実行エージェントが決定される。
job1の実行エージェントがAGT1に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
これによって,実行エージェントAGT2とAGT3で負荷の割合が同じになります。それぞれの優先順位は同じであるため,job2の実行エージェントは,二つのうち実行エージェントグループAGTGR1に定義されている順のAGT2に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「0 / 2」
- 実行エージェントAGT3:「0 / 1」
- job3の実行エージェントが決定される。
job2の実行エージェントがAGT2に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
これによって,実行エージェントAGT3の負荷がいちばん軽くなります。そのため,job3の実行エージェントはAGT3に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「1 / 2」
- 実行エージェントAGT3:「0 / 1」
- job4の実行エージェントが決定される。
job1~job3の実行エージェントが決定し,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
再びすべての実行エージェントの負荷が同じ割合となったため,job4の実行エージェントは,実行エージェントグループAGTGR1に定義されている順のAGT1に決定します。
- 実行エージェントAGT1:「1 / 3」
- 実行エージェントAGT2:「1 / 2」
- 実行エージェントAGT3:「1 / 1」
- job5の実行エージェントが決定される。
job4の実行エージェントがAGT1に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
負荷の割合は実行エージェントAGT2とAGT3で同じになりましたが,AGT3はジョブ実行数の上限に達しているため,job5の実行エージェントはAGT2に決定します。
- 実行エージェントAGT1:「2 / 3」
- 実行エージェントAGT2:「1 / 2」
- 実行エージェントAGT3:「1 / 1」
- job6の実行エージェントが決定される。
job5の実行エージェントがAGT2に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT2,AGT3とも,ジョブ実行数の上限に達しているため,job6の実行エージェントはAGT1に決定します。
- 実行エージェントAGT1:「2 / 3」
- 実行エージェントAGT2:「2 / 2」
- 実行エージェントAGT3:「1 / 1」
(3) ジョブ実行数が上限に達したら別の実行エージェントに分散して実行する場合
実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに負荷を分散させる場合は,それぞれの実行エージェントに優先順位を設定します。また,必要に応じてジョブ実行多重度もそれぞれの実行エージェントに設定します。
実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに分散して実行する場合の例を次の図に示します。
図2-49 ジョブ実行数が上限に達したら別の実行エージェントに分散して実行する場合の例
例えば,実行エージェントグループAGTGR1にグルーピングした実行エージェントAGT1,AGT2,AGT3の優先順位をそれぞれ「16(いちばん高い)」,「15(2番目に高い)」,「14(3番目)」とし,ジョブ実行多重度をすべて「2」とした場合,ジョブの実行順序は次のようにして決定されます。
- job1が実行される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
優先順位がいちばん高い実行エージェントはAGT1であるため,job1はAGT1で実行されます。
- 実行エージェントAGT1:「0 / 2」
- 実行エージェントAGT2:「0 / 2」
- 実行エージェントAGT3:「0 / 2」
- job2が実行される。
job1がAGT1で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT2とAGT3の負荷が軽くなりますが,優先順位がいちばん高いのはAGT1のため,job2もAGT1で実行されます。
- 実行エージェントAGT1:「1 / 2」
- 実行エージェントAGT2:「0 / 2」
- 実行エージェントAGT3:「0 / 2」
- job3が実行される。
job2がAGT1で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
優先順位がいちばん高いのはAGT1ですが,ジョブ実行多重度の上限に達しているため,job3は次に優先順位が高いAGT2で実行されます。
- 実行エージェントAGT1:「2 / 2」
- 実行エージェントAGT2:「0 / 2」
- 実行エージェントAGT3:「0 / 2」
- job4が実行される。
job3がAGT2で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
job3と同様に,job4はAGT2で実行されます。
- 実行エージェントAGT1:「2 / 2」
- 実行エージェントAGT2:「1 / 2」
- 実行エージェントAGT3:「0 / 2」
- job5が実行される。
job4がAGT2で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT1,AGT2とも,ジョブ実行多重度の上限に達しているため,job5はAGT3で実行されます。
- 実行エージェントAGT1:「2 / 2」
- 実行エージェントAGT2:「2 / 2」
- 実行エージェントAGT3:「0 / 2」
- job6が実行される。
job5がAGT3で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
実行エージェントAGT1,AGT2とも,ジョブ実行多重度の上限に達しているため,job6はAGT3で実行されます。
- 実行エージェントAGT1:「2 / 2」
- 実行エージェントAGT2:「2 / 2」
- 実行エージェントAGT3:「1 / 2」
Copyright (C) 2009, 2014, Hitachi, Ltd.
Copyright (C) 2009, 2014, Hitachi Solutions, Ltd.