サーバ関連:torque_pbs

差分

このページの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>   * ジョブの順序の入れ替え\\ <code bash>$ qorder ジョブID1 ジョブID2</code>
 +  * ジョブの保留(ジョブ実行の順番が回ってきても実行しない) \\ <code bash>$ qhold ジョブID1 ジョブID2 ...</code>
 +  * ジョブの保留解除\\ <code bash>$ qrls ジョブID1 ジョブID2 ...</code>
 +  * ジョブの実行\\ <code bash>$ qrun ジョブID1 ジョブID2 ...</code>
 +  * キューの変更\\ <code bash>$ qmove 変更後のキュー名 ジョブID</code>
 +  * ジョブにシグナルを送信\\ <code bash>$ qsig -s シグナル ジョブID</code>
 +    * STOP: ジョブのサスペンド(ジョブを停止することなく、CPU を空ける; ただし、torque としては CPU が空くわけではないので、次のジョブは実行されない)
 +    * CONT: サスペンドしたジョブの再開
  
 ===== ジョブファイル ===== ===== ジョブファイル =====
 +  * ジョブの内容を書いたシェルスクリプト
 +  * シバン行 (#!/bin/bash など) に続いて、''#PBS ...'' で始まるジョブ指定
   * 例 (bash ベースの場合): \\<code bash jobfile.sh>   * 例 (bash ベースの場合): \\<code bash jobfile.sh>
 #!/bin/bash #!/bin/bash
行 186: 行 195:
  :  :
 </code> </code>
 +  * ${PBS_O_WORKDIR}: torque が利用する作業ディレクトリ (必ず書く必要がある)
 +  * オプション (qsub のオプションと同じ)
 +
 +^  オプション  ^  意味  ^  値  ^
 +|-V|ジョブを投入した所の環境変数をすべて、ジョブファイルにも適用する| |
 +|-v|ジョブを投入した所の環境変数を指定した分だけ、ジョブファイルにも適用する| |
 +|-q|キューの指定| |
 +|-j|出力ファイルの制御|oe: 標準出力と標準エラーを標準ファイル(*.o__ジョブID__)にまとめる, eo: 標準出力と標準エラーを標準エラーファイル(*.e__ジョブID__)にまとめる, 指定しない場合は、それぞれのファイルが出力される|
 +|-o|標準出力ファイルのパス| |
 +|-e|標準エラーファイルのパス| |
 +|-m|メール送信の方法|次の文字の組み合わせでメールの送信タイミングを指定 a: ジョブが失敗, b: ジョブが開始, e: ジョブが終了, n: 何もしない|
 +|-M|メールの送信先| |
 +|-l|リソースの指定(複数ある場合は、カンマで区切る)|walltime=__24:00:00__|
 +|:::|:::|nodes=__2__:ppn=__2__ (2CPUずつ2ノードを使う; 計4CPU)|
 +|:::|:::|nodes=__ノード1__:ppn=__3__+__ノード2__:ppn=__2__+__ノード3__:ppn=__1__ (特定のノードを利用する場合はノード名を書いて + で結合する)|
 +|:::|:::|mem, ncpu が使える|
 +|-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</code>   * qmgr の設定を表示\\ <code bash>$ echo 'p s' | sudo qmgr</code>
     * '''p s''' は '''print server''' でも可     * '''p s''' は '''print server''' でも可
 +  * 長時間ジョブを別々のキューで走らせた時に後方にある一方のキューが動かない 
 +    * 例: 
 +      - 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, A3 が優先的に処理されるように設定されるが、キュー A はそもそも同時に 1 つしか処理できないため、CPU が 1 つ空いたまま、B1, B2, B3 は待機状態となる。 
 +      * キューに使用 CPU や同時ジョブ処理数の制限がかかっていると、例のような問題が起こる 
 +    * 解決方法 (/var/spool/torque/sched_priv/sched_config の編集) 
 +      * starving job 機構の無効化 
 +        * ''help_starving_jobs  true  ALL'' の true を false に変える 
 +      * 機構が有効になるまでの時間の変更 
 +        * ''max_starve: 24:00:00'' の時間を長くする 
 +    * job starving 機構の問題の見分け方 
 +      * ''$ qstat -f'' でジョブ状態を表示し、その中に ''comment = Not Running: Draining system to allow starving job to run'' とあれば、この問題でジョブが処理されないことになる。
  
 ===== 参考サイト ===== ===== 参考サイト =====
行 223: 行 273:
   * [[http://docs.adaptivecomputing.com/torque/3-0-5/a.bserverparameters.php | ]] qmgr サーバ設定   * [[http://docs.adaptivecomputing.com/torque/3-0-5/a.bserverparameters.php | ]] qmgr サーバ設定
   * [[http://wiki.epii.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/TORQUE | ソフトウェア/TORQUE - epii's Wiki]] qmgr サーバ設定   * [[http://wiki.epii.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/TORQUE | ソフトウェア/TORQUE - epii's Wiki]] qmgr サーバ設定
 +  * [[http://www.nas.nasa.gov/hecc/support/kb/commonly-used-qsub-options-in-pbs-scripts-or-in-the-qsub-command-line_175.html | Commonly Used QSUB Options in PBS Scripts or in the QSUB Command Line - HECC Knowledge Base]] ジョブファイルオプション
  • サーバ関連/torque_pbs.1463029343.txt.gz
  • 最終更新: 2016/05/12 14:02
  • by mumeiyamibito