差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
サーバ関連:torque_pbs [2016/05/12 14:02] – [サーバ設定] mumeiyamibito | サーバ関連:torque_pbs [2016/06/01 20:30] (現在) – [サーバ設定] mumeiyamibito | ||
---|---|---|---|
行 163: | 行 163: | ||
* R: Running (処理中) | * R: Running (処理中) | ||
* Q: Queue (待機中) | * Q: Queue (待機中) | ||
- | * H: Halt (保留中; ジョブの順番が回ってきても処理しない) | + | * H: Hold (保留中; ジョブの順番が回ってきても処理しない) |
* E: Exit (終了; ?) | * E: Exit (終了; ?) | ||
* T: 移行中(?) | * T: 移行中(?) | ||
行 172: | 行 172: | ||
* ジョブIDは複数指定が可能 | * ジョブIDは複数指定が可能 | ||
* ジョブの順序の入れ替え\\ <code bash>$ qorder ジョブID1 ジョブID2</ | * ジョブの順序の入れ替え\\ <code bash>$ qorder ジョブID1 ジョブID2</ | ||
+ | * ジョブの保留(ジョブ実行の順番が回ってきても実行しない) \\ <code bash>$ qhold ジョブID1 ジョブID2 ...</ | ||
+ | * ジョブの保留解除\\ <code bash>$ qrls ジョブID1 ジョブID2 ...</ | ||
+ | * ジョブの実行\\ <code bash>$ qrun ジョブID1 ジョブID2 ...</ | ||
+ | * キューの変更\\ <code bash>$ qmove 変更後のキュー名 ジョブID</ | ||
+ | * ジョブにシグナルを送信\\ <code bash>$ qsig -s シグナル ジョブID</ | ||
+ | * STOP: ジョブのサスペンド(ジョブを停止することなく、CPU を空ける; | ||
+ | * CONT: サスペンドしたジョブの再開 | ||
===== ジョブファイル ===== | ===== ジョブファイル ===== | ||
+ | * ジョブの内容を書いたシェルスクリプト | ||
+ | * シバン行 (# | ||
* 例 (bash ベースの場合): | * 例 (bash ベースの場合): | ||
#!/bin/bash | #!/bin/bash | ||
行 186: | 行 195: | ||
: | : | ||
</ | </ | ||
+ | * ${PBS_O_WORKDIR}: | ||
+ | * オプション (qsub のオプションと同じ) | ||
+ | |||
+ | ^ オプション | ||
+ | |-V|ジョブを投入した所の環境変数をすべて、ジョブファイルにも適用する| | | ||
+ | |-v|ジョブを投入した所の環境変数を指定した分だけ、ジョブファイルにも適用する| | | ||
+ | |-q|キューの指定| | | ||
+ | |-j|出力ファイルの制御|oe: | ||
+ | |-o|標準出力ファイルのパス| | | ||
+ | |-e|標準エラーファイルのパス| | | ||
+ | |-m|メール送信の方法|次の文字の組み合わせでメールの送信タイミングを指定 a: ジョブが失敗, | ||
+ | |-M|メールの送信先| | | ||
+ | |-l|リソースの指定(複数ある場合は、カンマで区切る)|walltime=__24: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |-N|ジョブ名|指定しない場合は、ジョブファイル名の先頭から15文字| | ||
+ | |||
+ | |||
===== キューの設定項目 ===== | ===== キューの設定項目 ===== | ||
行 206: | 行 234: | ||
^ 項目 | ^ 項目 | ||
- | |queue_type|キュータイプ| execution(e) or route(r)| | + | |queue_type|キュータイプ| execution(e) or route%%(r)%%| |
|resource_default.ncpus|デフォルトで指定されるCPU数| | | |resource_default.ncpus|デフォルトで指定されるCPU数| | | ||
- | |resources_default.nodes|でお風呂とで指定されるノード数| | | + | |resources_default.nodes|デフォルトで指定されるノード数| | |
- | |enabled|ジョブの受け入れ(このキューでのジョブ実行を許可するか)|true or **false**| | + | |enabled|ジョブの受け入れ(このキューでのジョブ投入を許可するか)|true or **false**| |
- | |started|ジョブを実行するか|true or **false**| | + | |started|ジョブを実行するか(falseならhold状態で投入される)|true or **false**| |
行 216: | 行 244: | ||
* qmgr の設定を表示\\ <code bash>$ echo 'p s' | sudo qmgr</ | * qmgr の設定を表示\\ <code bash>$ echo 'p s' | sudo qmgr</ | ||
* ''' | * ''' | ||
+ | * 長時間ジョブを別々のキューで走らせた時に後方にある一方のキューが動かない | ||
+ | * 例: | ||
+ | - CPU が 2 つある計算機上で、CPU を 1 つのみ使い、1 つずつしか走らせることができないキュー A, B にジョブを 3 つずつ投入する予定である (計6ジョブ) | ||
+ | * ジョブ A1, A2, A3 | ||
+ | * ジョブ B1, B2, B3 | ||
+ | * それぞれのジョブは 25 時間以上かかるものとする | ||
+ | - 先にキュー A に 3 ジョブ (A1, A2, A3) 投入する (CPU は 1 つしか使っていない状態) | ||
+ | - 25時間後に、キュー B の 3 ジョブ (B1, B2, B3) を投入する (本来ならば、キュー B のジョブの処理がすぐに開始されるはず…) | ||
+ | - なぜか、キュー B のジョブが開始しない | ||
+ | * 原因: starving job 機構 | ||
+ | * ジョブスケジューラはジョブの処理数を上げるため、指定された walltime が短いジョブから順に処理していく。 | ||
+ | * しかし、これだと walltime が長いジョブは、短いジョブが後から次々と投入されると、一向に処理されない状態になる | ||
+ | * これを解決するために、starving job 機構があり、待機状態にあるジョブ (walltime が長いジョブ) が一定時間超えると、そのジョブを優先的に処理しようとする。 | ||
+ | * torque の starving job 機構のデフォルトの設定時間は 24 時間 | ||
+ | * 例で示した場合、A1 の処理中に 24 時間が経過し、A2, | ||
+ | * キューに使用 CPU や同時ジョブ処理数の制限がかかっていると、例のような問題が起こる | ||
+ | * 解決方法 (/ | ||
+ | * starving job 機構の無効化 | ||
+ | * '' | ||
+ | * 機構が有効になるまでの時間の変更 | ||
+ | * '' | ||
+ | * job starving 機構の問題の見分け方 | ||
+ | * '' | ||
===== 参考サイト ===== | ===== 参考サイト ===== | ||
行 223: | 行 273: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ | * [[http:// |