「ジョブ管理システム PBSを用いた計算機の利用」の版間の差分
ナビゲーションに移動
検索に移動
(→実行例) |
|||
(同じ利用者による、間の48版が非表示) | |||
4行目: | 4行目: | ||
*'''データ解析をする場合は、基本的にこのジョブ管理システムを利用してください''' | *'''データ解析をする場合は、基本的にこのジョブ管理システムを利用してください''' | ||
*実行したい処理を '''シェルスクリプト''' [http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html シェルスクリプト入門へのリンク] に書き、qsub コマンドの引数にして実行させます。 | *実行したい処理を '''シェルスクリプト''' [http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html シェルスクリプト入門へのリンク] に書き、qsub コマンドの引数にして実行させます。 | ||
*ここでは「'''PBS''' [https:// | *ここでは「'''PBS''' [https://www.altairjp.co.jp/pdfs/pbsworks/PBSUserGuide2021.1.pdf PBSユーザーズガイドへのリンク]」というジョブ投入のシステムを採用しています。 | ||
*この資料も参考にしてください。 [ | *この資料も参考にしてください。 [https://biaswiki.nibb.ac.jp/menu/index.php/SGE用スクリプトファイルをPBS用に書き換える方法 SGE用スクリプトファイルをPBS用に書き換える方法] | ||
* 説明会資料もご覧ください | * 説明会資料もご覧ください | ||
** [ | ** [https://biaswiki.nibb.ac.jp/menu/index.php/利用講習会 生物情報解析システム Ver.5利用者説明会] | ||
* 残念なお知らせですが、cat キューは終了となりました | * 残念なお知らせですが、cat キューは終了となりました | ||
== 利用可能なキュー == | == 利用可能なキュー == | ||
{| class="wikitable" style="text-align: center;" | |||
|+キュー一覧 | |||
| | |||
!colspan="4"|分散並列処理型 : parallel distributed processing | |||
!colspan="3"|共有メモリ型 : shared memory | |||
|- | |||
!|queue | |||
|style="color:blue" | small (default) | |||
|medium | |||
|large | |||
|blast | |||
|smps | |||
|smpm | |||
|smpl | |||
|- | |||
!|ジョブの特徴 | |||
|短時間・並列多 | |||
|中規模 | |||
|長時間 | |||
|BLAST nr/nt only | |||
|中メモリ | |||
|大メモリ | |||
|最大メモリ | |||
|- | |||
!|Avairable hosts | |||
|bias5-node01~node20 | |||
|bias5-node01~node20 | |||
|bias5-node01~node20 | |||
|bias5-node01~node20 | |||
|bias5-smp,<br>ldas-smp,<br>diaf-smp[1,2] | |||
|bias5-smp, ldas-smp | |||
|bias5-smp, ldas-smp | |||
|- | |||
!|Max. execution time / job | |||
|6hr | |||
|72hr | |||
|no limit | |||
|72hr | |||
|no limit | |||
|no limit | |||
|no limit | |||
|- | |||
!|Max. memory usage / job | |||
|96GB | |||
|96GB | |||
|96GB | |||
|188GB | |||
|500GB | |||
|1TB | |||
|3TB | |||
|- | |||
!|Max.num of running jobs / queue | |||
|no limit | |||
|no limit | |||
|no limit | |||
|no limit | |||
|20 | |||
|6 | |||
|2 | |||
|- | |||
!|Max. num of running cpus / queue | |||
|580 | |||
|200 | |||
|20 | |||
|120 | |||
|256 | |||
|96 | |||
|72 | |||
|- | |||
!|Max. num of running cpus / host | |||
|colspan="4"|40 | |||
|colspan="3"|72 | |||
|- | |||
!|Max.num of running cpus / user.server | |||
|colspan="7"|480 | |||
|- | |||
!|Max.num of running cpus / user.queue | |||
|300 | |||
|150 | |||
|10 | |||
|80 | |||
|no limit | |||
|no limit | |||
|no limit | |||
|- | |||
!|Default num of CPUs | |||
|1 | |||
|1 | |||
|1 | |||
|20 | |||
|1 | |||
|1 | |||
|1 | |||
|- | |||
!|Default memory size | |||
|3.5GB | |||
|3.5GB | |||
|3.5GB | |||
|98GB | |||
|250GB | |||
|500GB | |||
|1500GB | |||
|} | |||
*キューの稼働状況はこちらをご覧ください(要VPN) [http://bias5.nibb.ac.jp:8091/index2.html] | |||
*マシンの利用状況はこちらをご覧ください(要VPN) [http://bias5.nibb.ac.jp:8091/index3.html] | |||
* | |||
*キューを指定しない場合、デフォルトでは「small」で実行されます。 | *キューを指定しない場合、デフォルトでは「small」で実行されます。 | ||
*480個以上のジョブを投入すると481個目からは待ち状態になります。アレイジョブも同様 | *480個以上のジョブを投入すると481個目からは待ち状態になります。アレイジョブも同様 | ||
< | == メモリ制限について == | ||
* small, medium, large, blast キューでは、メモリ利用量がメモリ確保量を超えるとジョブは下記のようなメッセージと共に強制的に終了されます。 | |||
'''=>> PBS: job killed: mem 3977304kb exceeded limit 3686400kb''' | |||
* デフォルトのメモリ確保量は3.5GB (blastキューは96GB)ですが、最大で96GB(blastキューは188GB)まで増やすことができます。 | |||
* ジョブスクリプト内でのメモリ確保量を指定するには、以下のように -l mem=##GB というオプションを使います。 | |||
<pre>#PBS -l mem=16GB</pre> | |||
* bias5-node01 〜 20 の一台あたりのメモリ搭載量は188GB、nCPUは40です。ノード内で複数のジョブが実行される場合、確保されるリソースの総和がこれを超えることはできません。ジョブあたりで大きなメモリを確保すると、同じノードで実行できるジョブ数が少なくなるので注意してください。 | |||
* smp(s|m|l)キューはこのような制限がありませんが、慢性的に混み合っている状況にあります。smpキューが混み合っているがsmall/medium/blastキューが空いている場合で、かつメモリが188GB以下で収まりそうな場合は、blastキューの利用も検討ください(blastキューは用途をblastのみに限定するものではありません)。 | |||
== PBS実行例 == | |||
* BLAST実行ジョブ(シェルスクリプト)の例 (ファイル名:blast.job) (下記の「ジョブスクリプトオプション」も参考にしてください) | |||
** 一つのスクリプトで複数ジョブを実行できる「[[並列計算の実行|アレイジョブ]]」の項目も参考にしてください | |||
#!/bin/bash | |||
#!/bin/ | |||
#PBS -q small | #PBS -q small | ||
#PBS -l ncpus=4 | #PBS -l ncpus=4 | ||
#PBS - | #PBS -l mem=8gb | ||
cd ${PBS_O_WORKDIR} | cd ${PBS_O_WORKDIR} | ||
blastx -db | blastx -db swissprot -i -num_threads ${NCPUS} -query /home/xxx/sample.fa -o /home/xxx/sample.out | ||
ジョブをPBSで実行(qsubコマンドにジョブファイルを渡す) | ジョブをPBSで実行(qsubコマンドにジョブファイルを渡す) | ||
$ qsub blast.job | $ qsub blast.job | ||
150行目: | 144行目: | ||
$ qstat | $ qstat | ||
特定ユーザのジョブの様子を見る | 特定ユーザのジョブの様子を見る | ||
$ qstat -u user_name | $ qstat -u ''user_name'' | ||
当日中に終了したジョブ番号 ''jobID'' のジョブ履歴を確認する | |||
$ tracejob | $ tracejob ''jobID'' | ||
== PBSコマンド早見表 == | == PBSコマンド早見表 == | ||
投入後のジョブに対するコマンド(qdel, qmod 等)を発行できるのは、ジョブを投入したユーザのみです。 | |||
{| class="wikitable" style="text-align:left;" | |||
! style="text-align:center;"| コマンド | |||
! 説明 | |||
|- style="color: blue;" | |||
|qsub ''file_name'' | |||
|ジョブを投入する | |||
|- | |||
|qstat -Q | |||
|全てのキューの状態を表示 | |||
|- | |||
|qstat -Q ''queue_name'' | |||
|指定したキューの状態を表示 | |||
|- | |||
|qstat -Qf ''queue_name'' | |||
| 指定したキューの設定と状態を表示 | |||
|- | |||
|qstat | |||
|全てのジョブを表示 | |||
|- | |||
|qstat -t | |||
|全てのジョブを表示(アレイジョブを展開) | |||
|- | |||
|qstat -u ''user_name'' | |||
|指定したユーザの全ジョブを表示 | |||
|- | |||
|qstat -i -u ''user_name'' | |||
|指定したユーザの実行待ちジョブを表示 | |||
|- | |||
|qstat -f ''jobID'' | |||
|実行待ちになっている原因を表示(アレイジョブの場合は ''jobID[]'' と記述) | |||
|- | |||
|qstat -r | |||
|実行中の全てのジョブを表示 | |||
|- | |||
|qstat -nr1 | |||
|実行中の全てのジョブを実行ホストと共に1行で表示 | |||
|- | |||
|qstat -J | |||
|アレイジョブを表示 | |||
|- | |||
|qstat -J -t -nr1 | |||
|実行中のアレイジョブを展開して詳細も表示 | |||
|- | |||
|qstat -x | |||
|24時間以内のジョブ実行履歴を確認 | |||
|- | |||
|qdel ''jobID'' | |||
|指定したIDのジョブを削除 | |||
|- | |||
|qdel -Wforce ''jobID'' | |||
|指定したIDのジョブを強制的に削除 | |||
|- | |||
|qselect -u ''user_name'' | |||
|指定したユーザの全ジョブIDを表示 | |||
|- | |||
|qselect -s Q -u ''user_name'' | |||
|指定したユーザの実行待ちジョブIDを表示 | |||
|- | |||
|qhold ''jobID'' | |||
|指定したIDのジョブ(待機中のみ)をホールド | |||
|- | |||
|qrls ''jobID'' | |||
|ホールド状態のジョブをリリース | |||
|-style="color: green;" | |||
|tracejob ''jobID'' | |||
|終了した''jobID''の履歴を表示(当日のみ) | |||
|} | |||
* 各コマンドの詳細な使い方は、<code>man</code> コマンドで見ることができます(例) | |||
<pre> | |||
man qsub | |||
man qstat | |||
man qdel | |||
</ | man tracejob</pre> | ||
== ジョブスクリプトオプション早見表 == | == ジョブスクリプトオプション早見表 == | ||
{| class="wikitable" | |||
!|オプション | |||
!|説明 | |||
!|指定なしのデフォルト動作 | |||
|- | |||
|#PBS -q ''queue_name'' | |||
|キューを指定 | |||
|smallキューに投入される | |||
|- | |||
|#PBS -N ''job_name'' | |||
|ジョブに名前をつけて実行 | |||
|ジョブファイル名が使われる | |||
|- | |||
|#PBS -o ''file_name'' | |||
|標準出力の結果を指定したファイルに保存 | |||
|''job_name'''''.o'''''jobID'' | |||
|- | |||
|#PBS -e ''file_name'' | |||
|標準エラー出力の結果を指定したファイルに保存 | |||
|''job_name'''''.e'''''jobID'' | |||
|- | |||
|#PBS -j [oe, eo] | |||
|ジョブの標準出力ファイルと標準エラー出力ファイルを結合する<br>
oe : 標準出力ファイルに結合<br>
eo : 標準エラー出力ファイルに結合 | |||
| | |||
|- | |||
|#PBS -l ''resource_list'' | |||
|使用する CPU数、メモリ、実行サーバ等、リソースを指定 | |||
|キューのデフォルト値 | |||
|- | |||
|#PBS -v ''variable_list'' | |||
|環境変数等の設定をジョブに持たせる<br>例) –v var1=10, "var2='A,B'" | |||
|- | |||
|#PBS -V | |||
|ログイン環境の環境変数を全て引き継ぐ | |||
| | |||
|- | |||
|#PBS -J ''X-Y[:Z]'' | |||
|ジョブアレイ範囲指定 ([[並列計算の実行#.E3.82.A2.E3.83.AC.E3.82.A4.E3.82.B8.E3.83.A7.E3.83.96|アレイジョブ]]の実行時に使用) | |||
| | |||
|- | |||
|#PBS -S ''shell_name'' | |||
|ジョブスクリプトのシェルを指定 | |||
|ログインシェル | |||
|- | |||
|#PBS -a ''MMDDhhmm'' | |||
|ジョブの開始日時を指定 | |||
|リソースがあれば即実行 | |||
|} | |||
{| class="wikitable" | |||
|+リソース指定の仕方 | |||
!|オプション | |||
!|説明 | |||
|- | |||
|#PBS -l ''mem=8G'' | |||
|メモリを8GBまで使う | |||
|- | |||
|#PBS -l ''ncpus=8'' | |||
|CPU 8スレッドを使う、この値は特別な変数 ${NCPUS} に自動で格納される | |||
|- | |||
|#PBS -l ''select=1:ncpus=10 | |||
|1ノードを用いて10スレッド使う | |||
|} |
2023年11月10日 (金) 00:45時点における最新版
ジョブ管理システム
- 複数のユーザが平等に計算機資源(メモリ, CPU)を使うためのしくみです。
- ジョブが投入された順番に空いている資源を利用して実行していきます。
- データ解析をする場合は、基本的にこのジョブ管理システムを利用してください
- 実行したい処理を シェルスクリプト シェルスクリプト入門へのリンク に書き、qsub コマンドの引数にして実行させます。
- ここでは「PBS PBSユーザーズガイドへのリンク」というジョブ投入のシステムを採用しています。
- この資料も参考にしてください。 SGE用スクリプトファイルをPBS用に書き換える方法
- 説明会資料もご覧ください
- 残念なお知らせですが、cat キューは終了となりました
利用可能なキュー
分散並列処理型 : parallel distributed processing | 共有メモリ型 : shared memory | ||||||
---|---|---|---|---|---|---|---|
queue | small (default) | medium | large | blast | smps | smpm | smpl |
ジョブの特徴 | 短時間・並列多 | 中規模 | 長時間 | BLAST nr/nt only | 中メモリ | 大メモリ | 最大メモリ |
Avairable hosts | bias5-node01~node20 | bias5-node01~node20 | bias5-node01~node20 | bias5-node01~node20 | bias5-smp, ldas-smp, diaf-smp[1,2] |
bias5-smp, ldas-smp | bias5-smp, ldas-smp |
Max. execution time / job | 6hr | 72hr | no limit | 72hr | no limit | no limit | no limit |
Max. memory usage / job | 96GB | 96GB | 96GB | 188GB | 500GB | 1TB | 3TB |
Max.num of running jobs / queue | no limit | no limit | no limit | no limit | 20 | 6 | 2 |
Max. num of running cpus / queue | 580 | 200 | 20 | 120 | 256 | 96 | 72 |
Max. num of running cpus / host | 40 | 72 | |||||
Max.num of running cpus / user.server | 480 | ||||||
Max.num of running cpus / user.queue | 300 | 150 | 10 | 80 | no limit | no limit | no limit |
Default num of CPUs | 1 | 1 | 1 | 20 | 1 | 1 | 1 |
Default memory size | 3.5GB | 3.5GB | 3.5GB | 98GB | 250GB | 500GB | 1500GB |
- キューの稼働状況はこちらをご覧ください(要VPN) [1]
- マシンの利用状況はこちらをご覧ください(要VPN) [2]
- キューを指定しない場合、デフォルトでは「small」で実行されます。
- 480個以上のジョブを投入すると481個目からは待ち状態になります。アレイジョブも同様
メモリ制限について
- small, medium, large, blast キューでは、メモリ利用量がメモリ確保量を超えるとジョブは下記のようなメッセージと共に強制的に終了されます。
=>> PBS: job killed: mem 3977304kb exceeded limit 3686400kb
- デフォルトのメモリ確保量は3.5GB (blastキューは96GB)ですが、最大で96GB(blastキューは188GB)まで増やすことができます。
- ジョブスクリプト内でのメモリ確保量を指定するには、以下のように -l mem=##GB というオプションを使います。
#PBS -l mem=16GB
- bias5-node01 〜 20 の一台あたりのメモリ搭載量は188GB、nCPUは40です。ノード内で複数のジョブが実行される場合、確保されるリソースの総和がこれを超えることはできません。ジョブあたりで大きなメモリを確保すると、同じノードで実行できるジョブ数が少なくなるので注意してください。
- smp(s|m|l)キューはこのような制限がありませんが、慢性的に混み合っている状況にあります。smpキューが混み合っているがsmall/medium/blastキューが空いている場合で、かつメモリが188GB以下で収まりそうな場合は、blastキューの利用も検討ください(blastキューは用途をblastのみに限定するものではありません)。
PBS実行例
- BLAST実行ジョブ(シェルスクリプト)の例 (ファイル名:blast.job) (下記の「ジョブスクリプトオプション」も参考にしてください)
- 一つのスクリプトで複数ジョブを実行できる「アレイジョブ」の項目も参考にしてください
#!/bin/bash #PBS -q small #PBS -l ncpus=4 #PBS -l mem=8gb cd ${PBS_O_WORKDIR} blastx -db swissprot -i -num_threads ${NCPUS} -query /home/xxx/sample.fa -o /home/xxx/sample.out
ジョブをPBSで実行(qsubコマンドにジョブファイルを渡す)
$ qsub blast.job
全ユーザのジョブの様子を見る
$ qstat
特定ユーザのジョブの様子を見る
$ qstat -u user_name
当日中に終了したジョブ番号 jobID のジョブ履歴を確認する
$ tracejob jobID
PBSコマンド早見表
投入後のジョブに対するコマンド(qdel, qmod 等)を発行できるのは、ジョブを投入したユーザのみです。
コマンド | 説明 |
---|---|
qsub file_name | ジョブを投入する |
qstat -Q | 全てのキューの状態を表示 |
qstat -Q queue_name | 指定したキューの状態を表示 |
qstat -Qf queue_name | 指定したキューの設定と状態を表示 |
qstat | 全てのジョブを表示 |
qstat -t | 全てのジョブを表示(アレイジョブを展開) |
qstat -u user_name | 指定したユーザの全ジョブを表示 |
qstat -i -u user_name | 指定したユーザの実行待ちジョブを表示 |
qstat -f jobID | 実行待ちになっている原因を表示(アレイジョブの場合は jobID[] と記述) |
qstat -r | 実行中の全てのジョブを表示 |
qstat -nr1 | 実行中の全てのジョブを実行ホストと共に1行で表示 |
qstat -J | アレイジョブを表示 |
qstat -J -t -nr1 | 実行中のアレイジョブを展開して詳細も表示 |
qstat -x | 24時間以内のジョブ実行履歴を確認 |
qdel jobID | 指定したIDのジョブを削除 |
qdel -Wforce jobID | 指定したIDのジョブを強制的に削除 |
qselect -u user_name | 指定したユーザの全ジョブIDを表示 |
qselect -s Q -u user_name | 指定したユーザの実行待ちジョブIDを表示 |
qhold jobID | 指定したIDのジョブ(待機中のみ)をホールド |
qrls jobID | ホールド状態のジョブをリリース |
tracejob jobID | 終了したjobIDの履歴を表示(当日のみ) |
- 各コマンドの詳細な使い方は、
man
コマンドで見ることができます(例)
man qsub man qstat man qdel man tracejob
ジョブスクリプトオプション早見表
オプション | 説明 | 指定なしのデフォルト動作 |
---|---|---|
#PBS -q queue_name | キューを指定 | smallキューに投入される |
#PBS -N job_name | ジョブに名前をつけて実行 | ジョブファイル名が使われる |
#PBS -o file_name | 標準出力の結果を指定したファイルに保存 | job_name.ojobID |
#PBS -e file_name | 標準エラー出力の結果を指定したファイルに保存 | job_name.ejobID |
#PBS -j [oe, eo] | ジョブの標準出力ファイルと標準エラー出力ファイルを結合する oe : 標準出力ファイルに結合 eo : 標準エラー出力ファイルに結合 |
|
#PBS -l resource_list | 使用する CPU数、メモリ、実行サーバ等、リソースを指定 | キューのデフォルト値 |
#PBS -v variable_list | 環境変数等の設定をジョブに持たせる 例) –v var1=10, "var2='A,B'" | |
#PBS -V | ログイン環境の環境変数を全て引き継ぐ | |
#PBS -J X-Y[:Z] | ジョブアレイ範囲指定 (アレイジョブの実行時に使用) | |
#PBS -S shell_name | ジョブスクリプトのシェルを指定 | ログインシェル |
#PBS -a MMDDhhmm | ジョブの開始日時を指定 | リソースがあれば即実行 |
オプション | 説明 |
---|---|
#PBS -l mem=8G | メモリを8GBまで使う |
#PBS -l ncpus=8 | CPU 8スレッドを使う、この値は特別な変数 ${NCPUS} に自動で格納される |
#PBS -l select=1:ncpus=10 | 1ノードを用いて10スレッド使う |