Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 導入ガイド


10.4.1 QUEUEジョブとサブミットジョブの概要と特長

QUEUEジョブおよびサブミットジョブの概要と特長を説明します。

〈この項の構成〉

(1) QUEUEジョブとは

QUEUEジョブは,キューを指定して実行します。QUEUEジョブは,指定されたキューに登録され,キューに接続されたエージェントで実行されます。データベース構成の種類が標準構成の場合は,他システム(JP1/NQSEXECやJP1/OJEなど)と連携するときにQUEUEジョブを使用します。また,次のような運用をする場合にJP1/AJS3上でQUEUEジョブを使用できます。

ただし,標準構成でPCジョブ,UNIXジョブ,アクションジョブおよびカスタムジョブを使用する場合は,キューではなく,実行エージェントグループを使用することでこれらと同様の運用ができます。PCジョブ,UNIXジョブ,アクションジョブおよびカスタムジョブを新たに定義する場合は,実行エージェントグループを使用した運用を推奨します。

(2) サブミットジョブとは

JP1/AJS3では,ジョブをジョブネット上に定義して実行するだけでなく,コマンドなどを使用して,単体のジョブをJP1/AJS3 - Managerのキューに直接登録(投入)して実行できます。キューに登録されたジョブは,キューに接続されたエージェントに転送されて実行されます。エージェントを指定して登録した場合は,ジョブはデフォルトキューに登録されます。キューにジョブを直接登録することをサブミットといいます。また,サブミットされるジョブをサブミットジョブといいます。ジョブのサブミットには,jpqjobsubコマンドなどのコマンドを使用します。

ジョブネットに定義したジョブの場合,スケジューラーが実行日時や順序を管理し,スケジュールに従ってジョブを実行します。一方,サブミットジョブは,ジョブを実行するときにユーザーがコマンドでジョブをサブミットし,実行します。コマンドのオプションで実行開始日時を指定して実行できます。

(3) キューとエージェント

ここでは,キューとエージェントを使ったジョブ実行の仕組みを説明します。キューとエージェントの仕組みの概要を,次の図に示します。

図10‒23 キューとエージェントの仕組み

[図データ]

(a) キューとは

キューは,同時に実行されるジョブ(JP1/AJS3上のQUEUEジョブやサブミットジョブ)の数が多くなり過ぎないよう,実行登録されたジョブを一時的にためておくところです。キューには,一つまたは複数のエージェントが接続されています。jpqjobsubコマンドの-ahオプションでエージェントホスト名を指定してサブミットジョブを実行する場合は,エージェントホスト名と同じ名前の内部的なキューにジョブが登録されます。このキューをデフォルトキューといいます。デフォルトキューにも複数のエージェントを接続できます。キューに登録されたジョブは,キューの中に登録順に並べられ,そのキューに接続されているエージェントに順次転送され,実行されます。

キューに登録できるジョブの最大値は,任意に定義できます。また,複数のジョブを同時に実行できます。しかし,システムの処理能力を超えた数のジョブを実行すると,実行性能が低下したり,リソース不足でエラーが発生したりします。例えば,システム搭載メモリーに適した数以上のジョブを同時に実行すると,メモリースワップが多発して実行性能が大幅に低下します。さらに多くのジョブを実行するとメモリー不足によってジョブが異常終了するなどのエラーが発生します。

キューは,このような状況を防ぎ,効率良くジョブを実行できるようにします。同時に実行するジョブ数が増えると,キューは制限値を超えたジョブを待たせて順にエージェントへ転送します。

注意事項

サブミットジョブの場合,サブミットジョブを登録したときに指定した排他実行リソースがほかのサブミットジョブで使用されていた場合など,サブミットジョブを転送できない状況にあるとサブミットジョブを転送する順番が入れ替わり,キューに登録した順番にサブミットジョブが実行されないことがあります。サブミットの実行順序の詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.1(4)(b) サブミットジョブの実行順序に関する注意事項」を参照してください。

キューの仕組みを次の図に示します。

図10‒24 キューの仕組み

[図データ]

(b) エージェントとは

エージェントは,ジョブを実行するホストです。エージェントホストとしてシステム構成上の意味を持つ場合と,エージェントとして機能や制御の意味を持つ場合があります。QUEUEジョブまたはサブミットジョブは,キューから,キューに接続したエージェントに順次転送され,エージェントで実行されます。

エージェントで同時に実行できるジョブの数は,任意に定義できます。同時に実行できるジョブ数(ジョブ実行多重度)も,キューに登録できる最大ジョブ数と同様に,システムの処理能力に合わせた設定が必要です。

また,キューに複数のエージェントを接続する場合,エージェントに優先順位を指定できます。エージェントのジョブ実行多重度に対する実行中のジョブ数の割合が高くなると,次に優先順位の高いエージェントにジョブを配信します。詳細については,「(6) 実行ホスト(エージェントホスト)へのジョブ実行配信」を参照してください。

さらに,同一マシン(一つのIPアドレス)に対して複数のエージェントをエイリアスとして定義し,特性の異なるジョブを別のエージェントに登録することで,一つのマシン上でジョブを振り分けることができます。詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.1(3) 同一マシンを複数の実行ホストとして使用する方法」を参照してください。

(c) QUEUEジョブ,サブミットジョブのジョブ実行の流れ

JP1/AJS3上のQUEUEジョブおよびサブミットジョブ実行時の処理の流れを,マネージャーとエージェントの関係を含めて,次の表に示します。ただし,この表は,ジョブが正常終了した場合についてだけ説明しています。実際には,ジョブが異常終了した場合など,その他の状態もあります。

表10‒10 QUEUEジョブおよびサブミットジョブ実行時の処理の流れ

ジョブの状態

説明

キューイング

[図データ]

実行登録を受け付けたジョブをキューに登録する。ジョブがキューに登録されると,ジョブの状態は「キューイング」になる。

実行中

[図データ]

ジョブをキューから取り出し,エージェントに転送して実行指示をする。

[図データ]

ジョブに定義された実行ファイルまたはスクリプトを,OS上で起動する。ジョブが起動されると,ジョブの状態は「実行中」になる。その後,ジョブの実行が終了するのを待つ。

[図データ]

ジョブが終了すると,エージェントはジョブの終了コードおよび実行結果を受け取る。

正常終了

[図データ]

ジョブの終了コードおよび実行結果をエージェントからマネージャーに転送する。マネージャーがジョブの終了コードおよび実行結果を受け取ると,ジョブの状態は「終了」になる。

(4) QUEUEジョブ,サブミットジョブの実行環境

JP1/AJS3上でQUEUEジョブまたはサブミットジョブを使用する場合は,jpqimportコマンドを使って,キューを定義する必要があります。また,jpqqueaddコマンドなどを使えば,JP1/AJS3サービスの運用中にキューやエージェントの構成を変更できます。セットアップの詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.2 QUEUEジョブ,サブミットジョブを使用する場合の設定」を参照してください。

また,jpqimportコマンドやjpqqueaddコマンドなどの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 1.5.10(1) QUEUEジョブ,サブミットジョブ実行環境で使用するコマンド」を参照してください。

QUEUEジョブでJP1/NQSEXECやJP1/OJEなどの他システムと連携する場合は,他システムにあらかじめキューを作成しておく必要があります。他システムとの連携の詳細については,マニュアル「JP1/Automatic Job Management System 3 連携ガイド」を参照してください。

運用に合わせてジョブ実行環境を変更する場合の詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.2(1) QUEUEジョブ,サブミットジョブの実行環境を設定する」を参照してください。

(5) 同時に実行できるジョブ数

JP1/AJS3上で使用するQUEUEジョブまたはサブミットジョブを実行するホストのリソースに合わせて,同時に実行できるジョブ数を制限できます。

(a) ジョブ実行多重度

キューで管理するジョブの場合,エージェントホストの定義情報にジョブ実行多重度を定義することで,そのエージェントホストで同時に実行できるジョブ数を制限できます。ジョブ実行多重度は30分単位で設定できるため,時間帯を分けてジョブ数を制限することで負荷を分散させる運用ができます。

ジョブ実行多重度で制限できるジョブは,JP1/AJS3上で実行するQUEUEジョブまたはサブミットジョブです。ジョブ実行多重度はエージェント単位に設定します。キュー単位では設定できません。同時に実行しようとしたジョブ数がジョブ実行多重度に達した場合,実行多重度を超えた分のジョブは,実行中のジョブが終了するまで「キューイング」状態(実行待ちの状態)になります。

(b) ジョブ実行多重度の設定方法

ジョブ実行多重度は,QUEUEジョブ,サブミットジョブの実行環境構成定義ファイル(jpqsetup.conf)のエージェントホスト定義に指定してjpqimportコマンドで設定する方法と,jpqagtaddコマンドでのエージェントホスト追加時にコマンドのオプションで設定する方法があります。

jpqimportコマンドで設定する場合,QUEUEジョブ,サブミットジョブの実行環境構成定義ファイル(jpqsetup.conf)のジョブ実行多重度には,多重度設定開始時刻「0000」,多重度設定終了時刻「0000」,ジョブ実行多重度「5」(24時間,ジョブ実行多重度は5)がデフォルトで定義されています。必要に応じて,jpqagtaltコマンドでジョブ実行多重度を変更してください。また,jpqagtaddコマンドでエージェントホストを追加する場合,ジョブ実行多重度の指定(-cpオプション)を省略すると,「0:00-0:00=0」(24時間,ジョブ実行多重度は0)が仮定されます。

ジョブ実行多重度が0の場合はジョブを実行できません。ジョブを実行する場合は,ジョブ実行多重度に1以上を指定するか,jpqagtaltコマンドでジョブ実行多重度を変更してください。ジョブ実行多重度の指定例については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド jpqagtalt」も参照してください。

(c) ジョブ実行多重度を使用したジョブの負荷分散

キューに複数のエージェントホストを接続した場合,エージェント使用率(エージェントホストのジョブ実行多重度に対する実行中のジョブ数の割合)を使用して,複数のエージェントに負荷を分散させることができます。運用方法の詳細については,「(6) 実行ホスト(エージェントホスト)へのジョブ実行配信」を参照してください。

(d) ジョブ実行多重度に関する注意事項

ジョブ実行多重度に関する注意事項については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.1(4)(a) ジョブ実行多重度の検討(QUEUEジョブ,サブミットジョブ)」の「● ジョブ実行多重度設定時の注意事項」を参照してください。

(6) 実行ホスト(エージェントホスト)へのジョブ実行配信

(a) キューに複数接続した実行ホスト(エージェントホスト)へのジョブの配信方法

JP1/AJS3上のQUEUEジョブまたはサブミットジョブを実行登録すると,いったんジョブ実行制御の管理するキュー(デフォルトキューも含む)に登録されます。キューには,優先順位を指定して複数のエージェントホストを接続することができ,指定された優先順位に従ってエージェントホストへジョブを配信します。

エージェントホストの優先順位は運用に合わせて指定します。エージェントホストの優先順位に差を付けて接続している場合は,優先順位の高いエージェントホストを選択してジョブを配信し,そのエージェントホストのエージェント使用率が100%になると,次に優先順位の高いエージェントホストへジョブを配信します。例えば,優先的に使用するエージェントホストがあり,そのエージェントホストで実行しているジョブが満杯になった場合や,障害状態または停止状態でジョブを実行できない場合に,次の優先順位のエージェントホストを代替としてジョブを実行するような運用を行う場合にはこの方法で接続します。

エージェントホストの優先順位を同一の優先順位で接続している場合は,エージェント使用率のいちばん低いエージェントホストを選択してジョブを配信します。特に優先的に使用するエージェントホストがなく,それぞれのエージェントホストに負荷を分散してジョブを実行する場合はこの方法で接続します。

注※

エージェントホストのジョブの実行多重度に対する実行中ジョブ数の割合で,次に示す計算式を使用し,小数点以下4位まで算出したものです。

エージェント使用率実行中ジョブ数 / ジョブ実行多重度

注意事項

ジョブを配信する際に,優先順位とエージェント使用率が同一の実行エージェントが複数ある場合,均等に負荷分散を行うためには,未使用時間が最も長い実行エージェントを選択してジョブを配信する方式が有効です。

優先順位の定義方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 7.1.7 ジョブを配信するエージェントホストの決定方式の設定」を参照してください。

(b) 実行ホスト(エージェントホスト)の障害検知とジョブの配信について

JP1/AJS3上のQUEUEジョブまたはサブミットジョブの実行ホスト(エージェントホスト)に対して,ジョブの実行を配信する場合で,次のどちらかの状態のとき,正常に動作している実行ホストに対するジョブの配信が,最大15分実施されないことがあります。配信されない間,ジョブはキューイング状態のままです。

  • 同時に3台以上の実行ホストに障害が発生している。

  • 同時に3台以上の実行ホストが停止している。

この現象が発生した場合,障害が発生している実行ホスト,または停止している実行ホストを起動してください。

(7) サブミットジョブ実行時の排他制御(排他実行リソース)

サブミットジョブでは,同じリソースにアクセスするジョブが複数あり,リソースにアクセスするジョブを排他制御する場合,あらかじめ定義した排他実行リソースを指定してジョブをサブミットできます。

例えば,同じリソースにアクセスする複数のジョブがあり,各ジョブ(プログラム)自身がリソースに対する排他処理(機能)を持たない場合,そのリソースを任意の名称で排他実行リソースとして定義します。サブミット時には,排他実行するジョブ同士で同じ排他実行リソースを指定します。このように指定すると,エージェントの実行多重度が2以上であっても,同じ排他実行リソースを指定したジョブは同時に実行されなくなります。

排他実行リソースは,jpqimportコマンドやjpqresaddコマンドを使って定義します。

注意事項

QUEUEジョブでは,排他実行リソースを使用できません。排他実行リソースを使用できるジョブは,jpqjobsubコマンドでサブミットしたジョブだけです。

(8) 他ホスト(または他システム)へのジョブのサブミットについて

QUEUEジョブの詳細定義の[ホスト名]に他ホスト(または他システム)を指定した場合,次のどちらかの状態のときにQUEUEジョブをサブミットすると,そのQUEUEジョブ以降にサブミットするジョブは,[ホスト名]の指定に関係なく(自ホスト含む),最大5分実行されないことがあります。

この現象が発生した場合,障害が発生している他ホストを再起動,または停止している他ホストを起動してください。

注※

ただし,サブミットジョブ,イベントジョブ,キューレスジョブ,ORジョブ,および判定ジョブは該当しません。