バッチシステムの設定
はじめに
本章では、バッチシステムの設定方法について説明します。
WHEELにはデフォルトで主要なバッチシステムの設定が含まれています。しかし、デフォルトには含まれていないバッチシステムを追加したい、不要なバッチシステムを削除したい等の場合は、WHEELの設定ファイルを編集することでバッチシステムの設定を変更できます。
設定ファイル
バッチシステムの設定ファイルjobScheduler.json
は、WHEEL起動時に指定したCONFIG_DIR
内にあります。viやメモ帳等のテキストエディタで編集可能です。
WHEELにデフォルトで含まれるjobSchduler.jsonの設定は次の環境で動作確認を行なっています。
- PBSPro, PBSProWithoutHistory -> PBSPro(Open source版) ver. 18
- SLURM -> SLURM 17.02.10
- Fugaku -> 2021/2/12 時点の富岳
jobScheduler.jsonファイルの構造
jobScheduler.json
ファイルのトップレベルには単一のオブジェクトのみを置くことができます。
トップレベルのオブジェクト内には、ジョブスケジューラの設定名をキーとし、各ジョブスケジューラで用いるコマンド等を記述したオブジェクトを値とするオブジェクトを複数置くことができます。
{
"設定名1" : {
// 設定内容
},
"設定名2" : {
// 設定内容
}
}
各ジョブスケジューラの設定を記述したオブジェクトには、次のプロパティを含める必要があります。
submit
ジョブ投入時に用いるコマンド名および必須のオプションを文字列で指定します。ただし、後述のqueueOptやgrpNameで指定する値は含めません。
queueOpt
投入先キューを指定するためのオプションを文字列で指定します。
grpName
UGEで使われるグループ名を指定するためのオプションを文字列で指定します。
submit, queueOpt, grpNameが全て指定された状態で、あるtaskコンポーネントのジョブを投入する時には、実際に使われるコマンドは次の文字列になります。
${submit} ${grpName} ${task.queue} ${queueOpt}${task.queue} ./${task.script}
task.queue
および task.script
はTaskコンポーネントのGUI上で指定したキュー名 / スクリプトファイル名が指定されます。
reJobID
ジョブ投入コマンドが返す文字列から投入したジョブのIDを取得するための正規表現を文字列で指定します。
この正規表現に含まれる最初のキャプチャがジョブIDとして扱われます。 指定された文字列は、そのままRegExpのコンストラクタに渡されるので、必要に応じてエスケープする必要があります。
stat
ジョブのステータス確認に使われるコマンドをオプションも含めて指定します。 値として指定できるのは文字列 または 文字列の配列です。
値として文字列が指定された場合は、その後にjobIDをつけて1回実行されます。
文字列の配列が指定された場合は、配列の各要素に対してjobIDをつけ、正常終了するまで順番にコマンドを実行します。
例えば、設定値が[“stat -a”, “stat -b”]の時は
stat -a ${jobID} || stat -b ${jobID}
という形で実行され、stat -a
が成功すればその出力を、stat -a
が非0を返した時はstat -b
の出力をstatコマンドの出力として扱います。
reFinishedState
ステータス確認コマンドが返す文字列に対して、ジョブが終了したかどうか(これ以上status checkを行なわなくても良いかどうか)を判定するための正規表現を文字列で指定します。
正常終了か異常終了かの判定は、後述のreReturnCodeやreJobStatusCodeが返すキャプチャを元に判定します。
reReturnCode
statコマンドの出力から、ジョブスクリプトの戻り値(exit code)を取得するための正規表現を文字列で指定します。 この正規表現に含まれる唯一のキャプチャの値を戻り値として扱います。 ただし、指定された文字列が正規表現に該当しないまたはキャプチャが何も含まない場合は、 “戻り値=-2” として扱います。(その旨、ログにも出力されます。)
reJobStatus
statコマンドの出力から、ジョブスケジューラが返すステータスコードを取得するための正規表現を文字列でしています。 この正規表現に含まれる唯一のキャプチャの値をステータスコードとして扱います。 ただし、指定された文字列が正規表現に該当しないまたはキャプチャが何も含まない場合は、 “ステータスコード=-2” として扱います。(その旨、ログにも出力されます。)
del
ジョブの削除に使われるコマンドを、オプションも含めて文字列で指定します。 ここで指定したコマンドの引数にjobIDを取る形で呼び出されます。