IBM i の実行管理は様々なレベルで調整が行われています。以下の図は主要なものをまとめています。
IBM i システム全体の制御:システム値
システム全体を制御する目的で設定するものにシステム値 SYSVAL があります。
システム値には実行管理以外にも、セキュリティ、日付設定、ロギング設定、ストレージ閾値設定、言語設定、電源オフオン設定などがあります。
実行管理に関係するシステム値は WRKSYSVAL SYSVAL(*ALC) と SYSVAL(*STG) SYSVAL(*SYSCTL) のコマンドで表示できます。以下でごく代表的なものを記載します。
システム値 | デフォルト値 | 説明 | コメント |
---|---|---|---|
QMAXJOB | 163520 | 1つのIBM i OS上で許可されるジョブの最大数。この値に達すると追加のジョブが開始できなくなる。 | |
QACTJOB | 200 | システムIPL中にシステム全体で同時に実行可能なスレッド数 | |
QBASACTLVL | 147 | プール#2 ベースプールで同時に活動化できるスレッド数最大値。システム値QPFRADJが1,2,3に設定されている場合、システムが自動調整し常に変動する | |
QSYSLIBL | QSYS QSYS2 QHLPSYS QUSRSYS | ジョブがデフォルトで参照するライブラリーのシステム関係部分 | |
QUSRLIBL | QGPL QTEMP | ジョブがデフォルトで参照するライブラリーのユーザー部分 |
システム値は全て、IBM i OS初期導入時にデフォルトが設定されます。設定値はCHGSYSVALコマンドで変更できます。
※変更不可のシステム値も存在。例:システム製造番号:導入したハードウェアのシリアルNO.が自動セットされます。
※(参考)現在は使われていないシステム値
システム値 | 説明 | コメント |
---|---|---|
QMAXACTLVL | システム全体で同時に実行可能なスレッド数 | 現在のIBM i 7.xでは参照されません。(システム自動調整に変わっておりこの値は無視されます)Java等マルチスレッドプロラムが一般的になって以降、スレッド数での管理があまり現実的で無い事、ハードウェア性能がAS/400時代から劇的に向上したことなどが理由だと思います。 |
サブシステムでの制御
個々のサブシステム記述 *SBSD に対話型、バッチ型など処理するジョブの特性に合った処理環境を設定します。
デフォルトでIBM提供の複数のサブシステム記述がIBM i OS上に存在している。これらをカスタマイズしてユーザー独自のサブシステム記述を作ることが可能。
サブシステム記述 SBSDの設定 | デフォルト | 説明 | コメント |
---|---|---|---|
POOLS 記憶域サイズ | SBSで異なる | ジョブが実行されるメインメモリのサイズ | |
POOLS 活動レベル | SBSで異なる | プール内で同時に実行できるスレッドの最大数 |
サブシステムの設定はCHGSBSDコマンドで変更できる。(実際に利用(開始)するにはSTRSBSコマンドで実行が必要)
サブシステムで設定する主な設定は以下
- サブシステムで実行するジョブが使用するメインメモリのプール指定
- サブシステム内で同時実行可能なジョブ数 MAXJOBS
- ジョブの開始方法(別途説明します)
- サブシステム内で実行するジョブの処理環境を細かく指定するための経路指定テーブル(後述)
- 対話型サブシステムではこのサブシステムに接続させる端末ID、端末タイプ
ジョブ単位の制御
ジョブ記述によって、個々のジョブの実行特性を指定します。
デフォルトでIBM提供の複数のジョブ記述が存在します。これらをCHGJOBDコマンドで修正したり、コピーしてユーザー独自のジョブ記述を作ることも可能。
ジョブ記述の例をいくつか示します。
ジョブ記述の項目 | JOBD名 | デフォルト | 説明 | コメント |
---|---|---|---|---|
ジョブ待ち行列JOBQ | QGPL/QDFTJOBD | QGPL/QBATCH | バッチジョブその他、最も一般的なジョブが投入された際のデフォルトとして使用される | |
出力待ち行列OUTQ | QGPL/QDFTJOBD | *USRPRF | *USRPRFはジョブのユーザープロフィールで指定されたOUTQを使用 | ユーザープロフィールを業務単位(営業業務、経理業務等や、地域別のユーザー、本社・子会社・関係会社等とし夫々に別なOUTQ割当することは多い |
初期ライブラリーリスト | QGPL/QDFTJOBD | *SYSVAL | システム値QUSRLIBLに指定したライブラリーを参照する |
上記以外にジョブ記述では以下のような指定も行います。
- 経路指定データ(後述)
- ジョブ日付
- ジョブ待ち行列内でのジョブスケジュール優先順位
- ジョブにより作成されるスプールファイルのOUTQ内での出力優先順位
※ジョブ記述 JOBD の理解はIBM i の実行管理の仕組みを理解する上で重要です。
クラス
前の記事
活動レベル中でのCPUのディスパッチ で説明した、クラス CLS も実行管理機能の一つです。
個々のジョブのCPU タイムスライス値やCPU内の実行優先順位を指定しています。
次の説明では具体的なサブシステムを挙げて、ジョブの実行環境がどのように決まるかを説明したいと思います。