TSUBAME3.0計算サービスのWebページはこちら

TSUBAME2.5からTSUBAME3.0へのデータ移行方法の資料はこちら

投入したジョブが実行されない場合の確認手順

投入したジョブが実行されない場合の確認手順

以下のチャートは主にSキューのジョブを前提としていますが、一部Vキューにも当てはまります。

1. t2statコマンドで投入したジョブが表示されますか?(stateがQになっていますか?)

(ア) 出てこない→ 異常終了した可能性があります。スクリプト、投入オプションを見直してください。もしくは極短時間に正常終了しているという可能性もあるので出力を確認してください。

(イ) stateがR→ 現在実行(R)されています。

(ウ) stateがH→ ホールド(H)状態。依存ジョブ(-W dependを指定したジョブ)で表示されます。依存関係にある先のジョブが終了するまでお待ち下さい。Vキューの場合はユニット数が足りていません。必要に応じてユニットの追加をしてください。ただし、ハードウエア障害等でジョブ開始に複数回失敗すると同様にホールド(H)となってしまう場合があり、自動では復旧しませんので異常が疑われる場合はお問い合わせ下さい。

(エ) stateがQ→「2」へ進んでください。

2. t2statコマンドの出力を見て、自分のジョブが同一のキューに30本以上入っていませんか?

(ア) 30本以上ある場合は、同時実行ジョブ数の制限にかかっています。(Vキューはユニット数が上限となるためこの制限にはかかりません)
i. 投入するキューの変更を検討してください→「6」へ進んでください。
ii. 先行するジョブが終了するのを待ってください。

(イ) 30本以上入っていない場合→「3」へ進んでください。

3. 投入したいキューのジョブ実行に必要な数のノードが空いていますか?

Cloud Service Utilization を確認して計算ノードが空いているか確認してください。

(ア) 空いている場合、もしくは空いているノード数にジョブの並列数を縮められる場合→「4」へ進んでください。

(イ) 空いていない場合→「5」へ進んでください。

4. t2stat –all –T (キュー名) で次に実行される予定のジョブの実行開始時刻を確認してください。

大規模ジョブがスケジュールされていて実行できない可能性があります。次に実行が予定されるジョブの開始予定時刻までに終了する長さのジョブであれば実行できる可能性があります。(詳細は「補足」をご覧ください)

(ア) 実行時間の調整ができる→walltimeを調整(短く)して、ジョブを再投入(t2sub)してください。

(イ) 時間が足りない→「5」へ進んでください。

5. 投入を希望するキューが混み合っているためにジョブが実行できません

(ア) 別のキューへの投入を検討してください→「6」へ進んでください。

(イ) ポイントを追加で消費することと(Vキューであれば同時実行数を)引き換えに優先してスケジュールされることを希望する場合はプライオリティオプションを検討してください。

(ウ) 先行するジョブが終了するまでお待ちください。

6. キューの変更を検討してください。

以下はSキュージョブを前提としています。Cloud Service Utilization で計算ノードの空き状況を見ながらご検討ください。

(ア) GPUジョブである。メモリ量・CPU数に問題がない。 → Gキューを検討ください。

(イ) GPUを利用せず、MPIを用いないアプリケーション。 → Uキューを検討ください。

(ウ) 実行が翌9時までで終わる。 → Xキューを検討ください。Xキューの利用方法はこちら

(エ) 並列度が大きく、長時間の実行。 → Hキューを検討ください。

(オ) 必要台数が少なく、ポイント消費が多くても構わない。 → S96キューを検討ください。

補足:大規模ジョブとバックフィルについて

 ジョブは基本的に投入順に実行されます。次に実行されるジョブが並列ジョブの場合、計算ノードがいくつか空いていたとしても、実行に必要な台数を下回っていた場合、台数が揃うまで、それらのノードは何もせず待機することになります。もし、この並列ジョブの開始予定時刻までに終わるような短い時間を実行時間(walltime)に指定したジョブが、この後に投入されていた場合には、この隙間に埋めるように、並列ジョブを追い越してスケジュールするので、待ち時間が短くなる場合があります(バックフィル)。walltime値が無駄に大きいと、実行出来たはずのジョブが、この隙間に入らずに、資源を無駄にしてしまうことがあります。より実際の実行時間に近い値を指定してジョブを投入してください。
 以下はバックフィルの説明です。

 下の図のように特に大規模並列ジョブ(4)がスケジュールされたときに、ノードが空いていてもwalltimeが長いジョブは実行されません。

 以下のt2statコマンドの例では、
Sキューに金曜日の6時台に比較的大規模な128ノードジョブがスケジュールされていることがわかります。そのためバックフィルを有効に利用しなければ上記の(4)のジョブのように、開始時刻までに最大で127台の計算ノードが何もせずに待機してしまう可能性があります。walltimeを金曜6時までに収まるようにジョブを投入すれば、(4)のジョブを飛び越してバックフィルされ、計算ノードを有効に利用することができます。