2.3 業務の自動化検討時のヒント
2.3.1 負荷を分散させた処理
JP1/AJS3 では,ジョブやジョブネットの実行先として実行エージェントグループを指定することで,そ の実行エージェントグループに属する実行エージェント間でジョブの実行を分散させることができます。
負荷を分散するパターンは,次のとおりです。
• 複数の実行エージェントに,ジョブを均等に分散して実行する。
• それぞれの実行エージェントでのジョブ実行数の上限に差を付けて実行する。
• ある実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに分散して実行する。
実行先として実行エージェントグループを指定できるユニットは次のものです。
• ルートジョブネット
• ネストジョブネット
• PC ジョブ
• UNIX ジョブ
• アクションジョブ
• カスタムジョブ
負荷分散のパターンごとに,どのように負荷分散処理されるかを説明します。この例では,job1〜job6 の 六つのジョブを定義したジョブネットの実行エージェントとして,実行エージェントグループ AGTGR1 を指定しているものとします。
(1) 均等に負荷を分散する場合
均等に負荷を分散させる場合は,実行エージェントグループにグルーピングしているそれぞれの実行エー ジェントの優先順位およびジョブ実行多重度を同じ値にします。
均等に負荷を分散する場合の例を次の図に示します。
図 2‒54 均等に負荷を分散する場合の例
例えば,実行エージェントグループ AGTGR1 にグルーピングした実行エージェント AGT1,AGT2,
AGT3 の優先順位を「16」,ジョブ実行多重度を「3」と定義した場合,ジョブの実行順序は次のように決 定されます。
1. job1 の実行エージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
• 実行エージェント AGT1:「0 / 3」
• 実行エージェント AGT2:「0 / 3」
• 実行エージェント AGT3:「0 / 3」
すべての実行エージェントの負荷が同じ割合であり,それぞれの優先順位は同じであるため,job1 の 実行エージェントは,実行エージェントグループ AGTGR1 に定義されている順の AGT1 に決定します。
2. job2 の実行エージェントが決定される。
job1 の実行エージェントが AGT1 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「0 / 3」
これによって,実行エージェント AGT2 と AGT3 で負荷の割合が同じになります。それぞれの優先順 位は同じであるため,job2 の実行エージェントは,二つのうち実行エージェントグループ AGTGR1 に定義されている順の AGT2 に決定します。
3. job3 の実行エージェントが決定される。
job2 の実行エージェントが AGT2 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「1 / 3」
• 実行エージェント AGT3:「0 / 3」
これによって,実行エージェント AGT3 の負荷がいちばん軽くなります。そのため,job3 の実行エー ジェントは AGT3 に決定します。
4. job4 の実行エージェントが決定される。
job1〜job3 の実行エージェントが決定し,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「1 / 3」
• 実行エージェント AGT3:「1 / 3」
再びすべての実行エージェントの負荷が同じ割合となったため,job4 の実行エージェントは,実行エー ジェントグループ AGTGR1 に定義されている順の AGT1 に決定します。
5. job5 の実行エージェントが決定される。
job4 の実行エージェントが AGT1 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「2 / 3」
• 実行エージェント AGT2:「1 / 3」
• 実行エージェント AGT3:「1 / 3」
実行エージェント AGT2 と AGT3 で負荷の割合が同じになったため,job5 の実行エージェントは,
AGTGR1 に定義されている順の AGT2 に決定します。
6. job6 の実行エージェントが決定される。
job5 の実行エージェントが AGT2 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「2 / 3」
• 実行エージェント AGT2:「2 / 3」
• 実行エージェント AGT3:「1 / 3」
実行エージェント AGT3 の負荷がいちばん軽くなるため,job6 の実行エージェントは AGT3 に決定 します。
(2) 実行エージェントでのジョブ実行数の上限に差を付ける場合
それぞれの実行エージェントで実行するジョブ数の上限に差を付けて負荷を分散させる場合は,ジョブ実 行多重度にそれぞれの値を設定します。優先順位には同じ値を設定します。
実行エージェントでのジョブ実行数の上限に差を付ける場合の例を次の図に示します。
図 2‒55 実行エージェントでのジョブ実行数の上限に差を付ける場合の例
例えば,実行エージェントグループ AGTGR1 にグルーピングした実行エージェント AGT1,AGT2,
AGT3 のジョブ実行多重度を,それぞれ「3」,「2」,「1」と定義した場合,ジョブの実行順序は次のよう にして決定されます。
1. job1 の実行エージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
• 実行エージェント AGT1:「0 / 3」
• 実行エージェント AGT2:「0 / 2」
• 実行エージェント AGT3:「0 / 1」
すべての実行エージェントの負荷が同じ割合であり,それぞれの優先順位は同じであるため,job1 の 実行エージェントは,実行エージェントグループ AGTGR1 に定義されている順の AGT1 に決定します。
job1 の実行エージェントが AGT1 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「0 / 2」
• 実行エージェント AGT3:「0 / 1」
これによって,実行エージェント AGT2 と AGT3 で負荷の割合が同じになります。それぞれの優先順 位は同じであるため,job2 の実行エージェントは,二つのうち実行エージェントグループ AGTGR1 に定義されている順の AGT2 に決定します。
3. job3 の実行エージェントが決定される。
job2 の実行エージェントが AGT2 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「1 / 2」
• 実行エージェント AGT3:「0 / 1」
これによって,実行エージェント AGT3 の負荷がいちばん軽くなります。そのため,job3 の実行エー ジェントは AGT3 に決定します。
4. job4 の実行エージェントが決定される。
job1〜job3 の実行エージェントが決定し,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「1 / 3」
• 実行エージェント AGT2:「1 / 2」
• 実行エージェント AGT3:「1 / 1」
再びすべての実行エージェントの負荷が同じ割合となったため,job4 の実行エージェントは,実行エー ジェントグループ AGTGR1 に定義されている順の AGT1 に決定します。
5. job5 の実行エージェントが決定される。
job4 の実行エージェントが AGT1 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「2 / 3」
• 実行エージェント AGT2:「1 / 2」
• 実行エージェント AGT3:「1 / 1」
負荷の割合は実行エージェント AGT2 と AGT3 で同じになりましたが,AGT3 はジョブ実行数の上 限に達しているため,job5 の実行エージェントは AGT2 に決定します。
6. job6 の実行エージェントが決定される。
job5 の実行エージェントが AGT2 に決定したため,「ジョブ実行数 / ジョブ実行多重度」は次のよう になります。
• 実行エージェント AGT1:「2 / 3」
• 実行エージェント AGT2:「2 / 2」
• 実行エージェント AGT3:「1 / 1」
実行エージェント AGT2,AGT3 とも,ジョブ実行数の上限に達しているため,job6 の実行エージェ ントは AGT1 に決定します。
(3) ジョブ実行数が上限に達したら別の実行エージェントに分散して実行す る場合
実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに負荷を分散させる場合は,
それぞれの実行エージェントに優先順位を設定します。また,必要に応じてジョブ実行多重度もそれぞれ の実行エージェントに設定します。
実行エージェントでのジョブ実行数が上限に達したら,別の実行エージェントに分散して実行する場合の 例を次の図に示します。
図 2‒56 ジョブ実行数が上限に達したら別の実行エージェントに分散して実行する場合の例
例えば,実行エージェントグループ AGTGR1 にグルーピングした実行エージェント AGT1,AGT2,
AGT3 の優先順位をそれぞれ「16(いちばん高い)」,「15(2 番目に高い)」,「14(3 番目)」とし,ジョ ブ実行多重度をすべて「2」とした場合,ジョブの実行順序は次のようにして決定されます。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
• 実行エージェント AGT1:「0 / 2」
• 実行エージェント AGT2:「0 / 2」
• 実行エージェント AGT3:「0 / 2」
優先順位がいちばん高い実行エージェントは AGT1 であるため,job1 は AGT1 で実行されます。
2. job2 が実行される。
job1 が AGT1 で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「1 / 2」
• 実行エージェント AGT2:「0 / 2」
• 実行エージェント AGT3:「0 / 2」
実行エージェント AGT2 と AGT3 の負荷が軽くなりますが,優先順位がいちばん高いのは AGT1 の ため,job2 も AGT1 で実行されます。
3. job3 が実行される。
job2 が AGT1 で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「2 / 2」
• 実行エージェント AGT2:「0 / 2」
• 実行エージェント AGT3:「0 / 2」
優先順位がいちばん高いのは AGT1 ですが,ジョブ実行多重度の上限に達しているため,job3 は次に 優先順位が高い AGT2 で実行されます。
4. job4 が実行される。
job3 が AGT2 で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「2 / 2」
• 実行エージェント AGT2:「1 / 2」
• 実行エージェント AGT3:「0 / 2」
job3 と同様に,job4 は AGT2 で実行されます。
5. job5 が実行される。
job4 が AGT2 で実行されているため,「ジョブ実行数 / ジョブ実行多重度」は次のようになります。
• 実行エージェント AGT1:「2 / 2」
• 実行エージェント AGT2:「2 / 2」
• 実行エージェント AGT3:「0 / 2」
実行エージェント AGT1,AGT2 とも,ジョブ実行多重度の上限に達しているため,job5 は AGT3 で実行されます。
6. job6 が実行される。