8. JobCenter管理者コマンド一覧
5.1. バッチキューの設定例1
表5.2 バッチキューの設定例2
優先度 資源制限量 ユーザ制限 同時実行可能数
緊急ジョブ用キュー 高 無制限 JobCenter管理者 無制限
特定プロジェクトキュー 中 大 特定プロジェクト 少(1)
小規模ジョブ用キュー 中 小 なし 多(4)
中規模ジョブ用キュー 中 中 なし 中(2)
大規模ジョブ用キュー 中 大 なし 少(1)
実際の資源制限量や同時実行可能数の値は、各サイトにおけるシステム構成によって変わりますので、主記憶 はどのくらい実装されているか、ファイルシステムの構成はどうなっているか、どのようなバッチリクエスト を実行することが多いかなどを考慮して決定してください。
JobCenter では、いくつかのバッチキューをひとまとまりにして全体としてバッチリクエストの同時実行可能 数を制限するキュー複合体を定義できます。たとえば、上記の例で特定プロジェクト用キューと一般用の大規 模ジョブ用キューには、大規模ジョブがそれぞれ 1 つずつ同時に実行できるため、システムとしては同時に 2 個の大規模ジョブが実行できることになります。
しかしシステムとしてはせいぜい 1 個までしか大規模ジョブを同時に実行できない場合、特定プロジェクト用 キューと大規模ジョブ用キューからなるキュー複合体を定義し、そのキュー複合体の同時実行可能数を 1 個に することにより、システムとしての大規模ジョブの同時実行を 1 つに制限できます。この時、特定プロジェク ト用キューと大規模ジョブ用キューのどちらかに投入されているバッチリクエスト数が 1 になると、たとえそ のキューの同時実行可能数に余裕があっても、それ以上のバッチリクエストは実行されません。
5.1.1.2. パイプキュー
パイプキューは、ほかのキューへリクエストを転送するキューです。パイプキューの用途は大きくわけて 3 つ あります。
1. 資源制限などの条件により、リクエストをバッチキューの間で自動的に振り分ける 2. リクエストをリモートホスト上の特定のキューに転送する
3. 複数のホストで負荷を分散する
以下は代表的なパイプキューの使用例です。
表5.3 パイプキューの設定例 転送先
自動資源分けキュー 小規模ジョブ用バッチキュー 中規模ジョブ用バッチキュー 大規模ジョブ用バッチキュー 特定目的キュー ホスト1特定目的キュー 負荷分散キュー ホスト1自動資源分けキュー
ホスト2自動資源分けキュー ホスト3自動資源分けキュー
最初の自動資源分けキューは、転送先が資源制限の異なる 3 つのバッチキューとなっており、このパイプ キューに投入すればユーザがいちいち自分でバッチキューを選択しなくても、適当なバッチキューが選択され るようになります。
2 つめの特定目的キューは特定ホストでしか実行できないリクエストをほかのホストから投入できるようにす るものです。
最後の負荷分散キューは複数の転送先ホストの中からパイプキューが適当なホストを選ぶことによって、これ らのホストの間で負荷分散を行います。
5.1.1.3. ネットワークキュー
ネットワークキューは結果ファイルを転送するためのキューで、その構成は転送先ホストによって決定されま す。
Windows版JobCenterではネットワークキューはサポートしていません。
以下はこれらの代表的なネットワークキューの使用例です。
表5.4 ネットワークキューの設定例
優先度 転送先ホスト 同時転送可能数
ローカルホストLOC用キュー 高 LOC 無制限
リモートホストRMT1用キュー 中 RMT1 8
リモートホストRMT2用キュー 高 RMT2 4
転送先ホストに対応したネットワークキューが用意されていない場合、ネットワークジョブはデフォルト・
ネットワークキュー (キュー名: DefaultNetQue) に投入されます。このキューはバッチジョブの結果ファイル をジョブの投入元ホストに出力するものです。
デフォルト・ネットワークキューは、転送先ホストに対応するネットワークキューを作成する前や、ネット ワークキューがなんらかの理由で投入を拒否されている場合に使用されます。
基本的にはローカルホストを含む各ホストのネットワークキューを用意していただくことによって、柔軟なス ケジューリングが可能となります。
JobCenterキューには各キューのタイプに応じてそれぞれ特有の属性を定義できます。以下にその各キューの 属性について説明します。
5.3.1. バッチキュー
バッチキューの属性としては以下のものがあります。
5.3.1.1. キュープライオリティ
キュー間プライオリティとも呼びます。リクエストのスケジューリングの際にどのキューに登録されているリ クエストを優先的に実行するかを決める要因になります。この値が大きい方が優先度が高く、等しい場合は キューへの投入時刻順に従います。この属性はバッチキューに閉じたものであり、ほかのタイプのキューの キュープライオリティとはなんら関係をもちません。
この属性はバッチキューを作成する際に必ず指定しなければなりません。
5.3.1.2. 同時実行可能リクエスト数
そのキューに登録されたリクエストで同時に実行できる数です。この属性はキューを作成するときに指定する こともできますが、指定しなくてもかまいませんし、キュー作成後にこの属性を変更することもできます。
ここではqmgrサブコマンドによるキュー作成時の指定方法についてのみ説明しておきます。キュー作成後の設 定・変更については後章で説明します。
Mgr: create batch_queue batch1 priority=20 run_limit=3 ↵
以上の手続きで、同時実行可能リクエスト数 3 のバッチキュー batch1 が作成されます。なお run_limit を指 定しなかった場合は同時実行可能リクエスト数は1となります。
5.3.1.3. 資源制限
資源制限はそのキューに登録されるリクエストが使用する資源を制限するためのものです。詳細については後 節で説明します。
5.3.1.4. スケジューリングパラメータ
スケジューリングパラメータは、各リクエストが実際に実行されるときの UNIXカーネルによる CPU 割当など のスケジューリングに関するものです。バッチキューに設定されたパラメータ値は登録されたリクエストに引 き継がれ、リクエストが実行される際にそれらのパラメータがセットされます。
スケジューリングパラメータの例としては nice値 が挙げられます。
5.3.1.5. その他の属性
その他の属性として、キュー内リクエストスケジューリング方式、連続スケジュール数があります。詳しくは 後節で説明します。
5.3.2. パイプキュー
パイプキューの属性として以下のものがあります。
5.3.2.1. キュープライオリティ
バッチキューで説明したものと同様のものです。
5.3.2.2. 同時実行可能リクエスト数
バッチキューで説明したものと同様のものです。qmgrサブコマンドによる指定例を以下に示します。
Mgr: create pipe_queue pipe1 priority=20 run_limit=3 server=(/usr/lib/nqs/pipeclient)↵
(R12.7以降のWindows版の場合は以下のとおり)
Mgr: create pipe_queue pipe1 priority=20 run_limit=3 ↵
以上の手続きで、同時実行可能リクエスト数 3 のパイプキュー pipe1 が作成されます(R12.7以降のWindows 版ではserverオプションは指定不要)。
なお run_limit を指定しなかった場合は同時実行可能リクエスト数は1となります。
5.3.2.3. 目的地
目的地とは、そのパイプキューがリクエストを転送する先のキューのことです。この属性はキュー作成時に定 義することもできますし、キュー作成後に定義・変更することもできます。ここではキュー作成時にqmgrサブ コマンドにより定義する方法について説明します。キュー作成後の定義・変更については、後節で説明しま す。
Mgr: create pipe_queue pipe1 priority=20 server=(/usr/lib/nqs/pipeclient) \ destination=(batch1@host1,batch2@host1) ↵
(R12.7以降のWindows版の場合は以下のとおり)
Mgr: create pipe_queue pipe1 priority=20 destination=(batch1@host1,batch2@host1) ↵
以上の手続きで、リクエストの転送先が batch1@host1 か batch2@host1 のパイプキューpipe1 が作成され ます。
上記の例のように目的地は複数定義できます。転送先は設定順に選択されます。したがって、まず
batch1@host1 が転送先として選択され、batch1@host1 がリクエスト投入不可能な場合、 batch2@host1 が転送先として選択されます。
"batch1@host1"とはホスト host1 上の batch1 というキューであることを示しています。
5.3.2.4. 事前チェック機能
この属性を指定すると、リクエストをパイプキューに登録する前にそのパイプキューの目的地となっている キューの状態を調べて、どこにも転送できない場合はパイプキューへの投入自体、不可能になります。
判定に用いる条件は以下のとおりで、これらを満たしていればパイプキューに登録されます。
■目的地のキュー上でリクエストが投入可能かつ実行可能
■リクエストの資源制限≦目的地のキューの資源制限
ただし、この機能は目的地がローカルのキューの場合にのみ有効です。
この属性を設定していなければ、目的地への転送が不可能であった場合でもパイプキューには登録されます。
ここではキュー作成時のqmgrサブコマンドによる定義方法を示します。
Mgr: create pipe_queue pipe1 priority=20 server=(/usr/lib/nqs/pipeclinet) check ↵ (R12.7以降のWindows版の場合は以下のとおり)
Mgr: create pipe_queue pipe1 priority=20 check ↵