その他のコマンド
GPUの使い方
個人ゲノム解析区画では、GPU計算ノードはノード単位で占有してジョブを割り当てる運用としています。ノード内のGPUを分割して利用する環境設定はしていません。このため、GPUを利用するジョブの投入時には、GPU利用をオプションで明示的に指定する必要はありません。
ジョブの実行状態の確認(squeue)
ジョブの投入状況の確認
squeueコマンドを利用してジョブの実行状態を確認することができます。オプションの詳細についてはオンラインマニュアルを参照してください。
実行例
xxxxx-pg@at022vm02:~$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
751 parabrick test.sh xxxxx-pg R 0:02 3 igt[010,015-016]
750 parabrick test.sh xxxxx-pg R 0:05 3 igt[010,015-016]
749 parabrick test.sh xxxxx-pg R 0:09 3 igt[010,015-016]
748 parabrick test.sh xxxxx-pg R 0:13 3 igt[010,015-016]
squeueでデフォルトで表示される項目は以下のようになります
項目名 | 説明 |
---|---|
JOBID | ジョブに割り当てられたジョブIDが表示されます。 |
PARTITION | ジョブが投入されたパーティション(キュー)名を表示します。 |
NAME | ジョブ名(未指定の場合はコマンド文字列)を表示します。 |
USER | ジョブを投入したユーザ名が表示されます。 |
ST | ジョブの状態を表示します。主なジョブの状態を以下の表に示します。 |
TIME | ジョブの実行時間(形式:days-hh:mm:ss) |
NODES | ジョブ実行に使用されるノード数 |
NODELIST(REASON) | ジョブが実行されるホスト名のリスト |
ジョブの状態説明(STフィールド)
状態の文字 | 説明 |
---|---|
CA (CANCELLED) | ジョブが明示的にユーザまたはシステム管理者によってキャンセルされました。 |
CD (COMPLETED) | ジ ョブは、すべてのノード上のすべてのプロセスを終了しました。 |
CF (CONFIGURING) | ジョブは、資源が割り当てられた後、資源が使える状態になるのを待っている状態です。 |
CG (COMPLETING) | ジョブは、終了手続きの過程にあります。 |
F (FAILED) | ジョブは、ゼロ以外の終了コードまたはその他の障害状態で終了しました。 |
NF (NODE_FAIL) | ジョブは、割り当てられたノードのいずれかの故障のために終了しました。 |
PD (PENDING) | ジョブは、資源の割り当てを待っています。保留中です。 |
PR (PREEMPTED) | ジョブが中断のために終了しました。 |
R (RUNNING) | ジョブは、現在実行中です。 |
S (SUSPENDED) | ジョブは、資源の割り当てを持っています(実行が中断されています)。 |
TO (TIMEOUT) | ジョブは、その制限時間に達して終了しました。 |
ジョブの詳細情報確認(scontrol show job)
自分のジョブのより詳細な情報を確認したい場合は、squeueコマンドでジョブIDを確認した後に、scontrol show job により確認することができます。オプションの詳細についてはオンラインマニュアルを参照してください。
実行例
xxxxx-pg@at022vm02:~/$ scontrol show job 747
JobId=747 JobName=test
UserId=xxxxx-pg(30257) GroupId=xxxxxx-pg(30063) MCS_label=N/A
Priority=10102 Nice=0 Account=(null) QOS=normal
JobState=RUNNING Reason=None Dependency=(null)
Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0
RunTime=00:00:12 TimeLimit=UNLIMITED TimeMin=N/A
SubmitTime=2024-02-19T20:57:53 EligibleTime=2024-02-19T20:57:53
AccrueTime=2024-02-19T20:57:53
StartTime=2024-02-19T20:57:53 EndTime=Unknown Deadline=N/A
SuspendTime=None SecsPreSuspend=0 LastSchedEval=2024-02-19T20:57:53 Scheduler=Main
Partition=parabricks AllocNode:Sid=at022vm02:1768472
ReqNodeList=(null) ExcNodeList=(null)
NodeList=igt010
BatchHost=igt010
NumNodes=1 NumCPUs=4 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:*
TRES=cpu=4,mem=375G,node=1,billing=4
Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
MinCPUsNode=4 MinMemoryNode=375G MinTmpDiskNode=0
Features=(null) DelayBoot=00:00:00
OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
Command=./test.sh
WorkDir=/lustre8/home/xxxxx-pg/parabricks
StdErr=/lustre8/home/xxxxx-pg/parabricks/res.txt
StdIn=/dev/null
StdOut=/lustre8/home/xxxxx-pg/parabricks/res.txt
Power=
TresPerNode=gres:gpu:4
クラスタ全体の混雑状況の確認方法(sinfo,squeue)
パーティションの状況確認には主にsinfo,パーティションに投入されたジョブの状況を参照するにはsqueueコマンドを利用してください。詳細についてはそれぞれのオンラインマニュアルを参照してください。
sinfo -s (-sは要約表示)
ノードの状態で区別せずに、パーティションごとに要約して表示します。
yxxxx-pg@at022vm02:~/parabricks$ sinfo -s
PARTITION AVAIL TIMELIMIT NODES(A/I/O/T) NODELIST
igt009 up infinite 0/0/1/1 igt009
igt010 up infinite 1/0/0/1 igt010
igt015 up infinite 0/1/0/1 igt015
igt016 up infinite 0/1/0/1 igt016
parabricks* up infinite 1/2/1/4 igt[009-010,015-016]
NODES欄の表示は以下の意味を持ちます。
- A (Allocated): 割り当てられている(使用中の)ノードの数です。
- I (Idle): アイドル(使用されていない)状態のノードの数です。使用可能なノードがここに分類されます。
- O (Other): その他の状態のノードの数です。このカテゴリには、ドレイン(メンテナンスのために使用不可)、ダウン(故障などで使用不可)、またはその他のSlurmが認識している特定 の状態のノードが含まれます。
- T (Total): パーティション内のノードの総数です。これは、Allocated、Idle、およびOtherの状態にあるノードの合計です。
-sをつけずに要約しないと以下のようにノードの状態で分けて表示されます。
yxxxx-pg@at022vm02:~/parabricks$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
igt009 up infinite 1 down* igt009
igt010 up infinite 1 mix igt010
igt015 up infinite 1 idle igt015
igt016 up infinite 1 idle igt016
parabricks* up infinite 1 down* igt009
parabricks* up infinite 1 mix igt010
parabricks* up infinite 2 idle igt[015-016]
パーティションとしてはUPとして認識されているが、パーティションに含まれる計算ノードがダウンしている。などの状況が表示されます。STATEのmixは計算ノード上の全てのコアが使用中ではない状態を表します。
showpartitions
より要約されたパーティション状態を表示したい場合は、Slurmの標準コマンドではなく、別の作者のオープンソースのコマンドですが、showpartitionsを利用してください。
yxxxx-pg@at022vm02:~/parabricks$ showpartitions
Partition statistics for cluster linux at Thu Feb 22 10:45:21 AM JST 2024
Partition #Nodes #CPU_cores Cores_pending Job_Nodes MaxJobTime Cores Mem/Node
Name State Total Idle Total Idle Resorc Other Min Max Day-hr:mn /node (GB)
igt009 up 1 0 48 0 0 0 1 infin infinite 48 386
igt010 up 1 0 48 44 0 0 1 infin infinite 48 386
igt015 up 1 1 48 48 0 0 1 infin infinite 48 386
igt016 up 1 1 48 48 0 0 1 infin infinite 48 386
parabricks:* up 4 2 192 140 0 0 1 infin infinite 48 386
Note: The cluster default partition name is indicated by :*
パーティショ ンに所属しているノードの中で利用可能なノード数が、#Nodes欄のidleに表示されます。パーティション内で利用可能なCPUコア数が、#CPU_Cores欄のIdleに表示されます。これによりパーティションの利用状況をみてください。
squeue
パーティションへのユーザのジョブの投入状況は、squeueコマンドで確認してください。現在の設定ではおなじSlurmシステムを使用しているユーザ間ではジョブの投入状況が互いに参照可能になっていますが、明示的にシステム上の全ユーザ、全パーティションのジョブ情報を表示したい場合は,-aオプションを指定して実行してください。
xxxxx-pg@at022vm02:~$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
646 parabrick test.sh xxxxx-pg R 0:02 3 igt[010,015-016]
647 parabrick test.sh xxxxx-pg R 0:02 3 igt[010,015-016]
645 parabrick test.sh xxxxx-pg R 0:05 3 igt[010,015-016]
648 parabrick test_gpu tkxxx R 0:02 1 igt010
644 parabrick test_gpu tkxxx R 0:12 1 igt010
pestat
ジョブが投入された計算ノードの稼働状況を計算ノード観点で確認したい場合は、オープンソースのツールである、pestatを利用してください。ノード別に投入されたジョブリストと、ノード上で利用されているCPUコア数、空きメモリ量などが表示されます。
xxxx-pg@at022vm02:~/parabricks$ pestat
Hostname Partition Node Num_CPU CPUload Memsize Freemem Joblist
State Use/Tot (15min) (MB) (MB) JobID User ...
igt009 igt009 down* 0 48 0.03 386452 366715
igt010 parabricks mix 4 48 0.33* 386462 377722 844 xxxx-pg
igt015 igt015 idle 0 48 0.01 386458 380861
igt016 igt016 idle 0 48 0.10 386462 379586
ジョブが実行されない理由の確認方法
ジョブが開始されず、待ち状態になっている理由を参照するには、squeueコマンドで確認して ください。””NODELIST (REASON)"欄にReason Codeが表示されます。
Reason Codeのフルリストは以下の開発元のサイトで参照可能です。
何らかのリソースを待っていると思われる理由以外の理由が表示されていて状態が変わらず長時間ジョブの実行が待たされている場合は、窓口に問い合わせてください。
ジョブの削除(scancel)
想定した以上に処理に時間がかかっている、ジョブの標準出力、標準エラー出力に出力されている途中結果からジョブが期待した動作をしていないと思われる場合は、scancelコマンドでジョブを削除します。
実行例
xxxxx-pg@at022vm02:~/parabricks$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
747 parabrick test xxxxx-pg R 3:01 1 igt010
xxxxx-pg@at022vm02:~/parabricks$ scancel 747
xxxxx-pg@at022vm02:~/parabricks$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
747 parabrick test xxxxx-pg CG 3:06 1 igt010
xxxxx-pg@at022vm02:~/parabricks$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
投入した複数のジョブを一括してキャンセルしたい場合は、以下の指定方法が利用可能です。
scancelのオプション指定 | 説明 |
---|---|
-u ユーザ名 | ユーザ名を指定してジョブを削除する |
-p パーティション名 | パーティション名を指定して、当該パーティションを対象にscancel実行ユーザのジョブを削除します。 |
-t ジョブの状態 | ジョブの状態を指定してキャンセルします。PENDING、RUNNING、SUSPENDEDのいずれかを指定します。 |
オプションの詳細についてはオンラインマニュアルを参照してください。
ジョブの実行条件の変更(scontrol update)
Slurmでジョブを投入した後に、そのジョブが要求しているリソース量などを変更するにはscontrol updateを利用します。
詳細については、オンラインマニュアルを参照してください。
ジョブのCPU数の変更
scontrol update JobId=<ジョブID> NumCPUs=<新しいCPU数>
実行例
ジョブのメモリ量の変更
scontrol update JobId=<ジョブID> MinMemoryNode=<新しいメモリ量(ノード単位)>
メモリ量はMB単位で指定します。