遺伝研スパコン(遺伝研スーパーコンピュータシステム)では、Grid Engine (SGE系)を採用している。この記事を読んでいる人(利用者)であれば、まず最初にqloginしろ、とか、ジョブを実行するときはスクリプトファイルをqsubしろ、とかを講習会などで最初に習うはずである。
無事終了する場合は殆ど問題とはならないが、メモリの制約や時間超過、プログラムのエラーなどによってジョブがキルされることがある。そうしたとき、原因究明をする上で役立つのが今回紹介する qreport
コマンドと、qacct
コマンドだ。
終了したジョブの状態を見る
まずは異常に終了してしまったジョブを見てみよう。ジョブを投げるとそのジョブ固有のID(数字)が発行される。それは qstat
コマンドで確認できる他、その実行ディレクトリに自動生成される*.o[ID], *.e[ID] といったアウトプットファイルの番号で確認できる(これはシェルスクリプトの最初の指定によって変わる場合があるので要確認)。
では、実際にコマンド例。IDが123456である場合。
$ qreport -j 123456
==============================================================
owner kim
jobnumber 123456
taskid undefined
slots 10
pe_taskid NONE
granted_pe def_slot
exit_status 0
failed 0
qname medium.q
hostname m05
jobname TestJOB
qsub_time 20230605-10:28:48
start_time 20230617-00:37:22
end_time 20230730-10:07:07
ru_wallclock 3749384.903
cpu 14500272.9
mem 1531050326.5
maxvmem 778.2G
r_mem 38.000G
r_q NONE
r_cpu NONE
といった具合に結果が表示される。正常に終了したかどうかの判断は基本的には exit_status
を確認する。どこにもその対照表などはないが、一般的にこれが0であれば正常に終了している。
例えば、maxvmemが指定していたr_memよりも高い場合、ジョブが強制キルされるので、r_memを増やすことで対策が取れる。
もしさらに詳細な情報が欲しい場合、以下のコマンドを実行すれば良い。
$ qacct -j 123456
==============================================================
qname medium.q
hostname m05
group hogehoge
owner kim
project NONE
department defaultdepartment
jobname TestJOB
jobnumber 123456
taskid undefined
pe_taskid NONE
account sge
priority 0
cwd /home/kim/hoge
submit_host gw1
submit_cmd qsub TEST_230417.sh
qsub_time 06/05/2023 10:28:48.805
start_time 06/17/2023 00:37:22.459
end_time 07/30/2023 10:07:07.362
granted_pe def_slot
slots 10
failed 0
deleted_by NONE
exit_status 0
ru_wallclock 3749384.903
ru_utime 11333275.093
ru_stime 3166997.810
ru_maxrss 806530672
ru_ixrss 0
ru_ismrss 0
ru_idrss 0
ru_isrss 0
ru_minflt 1128299329585
ru_majflt 32879247
ru_nswap 0
ru_inblock 740237704
ru_oublock 3716298384
ru_msgsnd 0
ru_msgrcv 0
ru_nsignals 0
ru_nvcsw 2798304198
ru_nivcsw 491094527
wallclock 3749385.108
cpu 14500272.904
mem 1531050326.489
io 190210.832
iow 185467.050
ioops 26969911634
maxvmem 778.224G
maxrss 0.000
maxpss 0.000
arid undefined
jc_name NONE
bound_cores NONE
といった具合に。
参考: https://sc.ddbj.nig.ac.jp/software/grid_engine/other_commands/