[Slurm] Slurm コマンド集
業務で Slurm を使用しており、私が頻繁に使っているコマンドを備忘録がてら紹介します。
本記事では下記の環境で動作確認を行っています。
- Ubuntu Server 22.04.3 LTS
- Slurm v22.05.2
Slurm とは
Slurm Workload Manager (Slurm) は、オープンソースのジョブ管理システムです。
クラスターのリソース(計算ノード)を効率的に管理し、ジョブのスケジューリング、実行、監視できます。
詳しい説明は以下を参照してください。
ジョブ関連のコマンド
ジョブの送信
ジョブを送信するコマンドです。
$ sbatch <ジョブ>
$ sbatch myjob.sh
Submitted batch job 12345
送信後、ジョブ ID が出力されます。 この ID を使ってジョブの状況を確認できます。
Tips
たとえば、シェルスクリプトで以下のようにして変数にジョブ ID を格納します。
job_id=$(sbatch <ジョブ> | awk '{print $4}')
以下のように依存ジョブを設定できます。
sbatch <次のジョブ> --dependency=afterok:"$job_id"
--dependency=afterok:<ジョブID>
は、指定したジョブIDが 正常終了(完了)した後に、次のジョブを実行するためのオプションです。
ジョブのステータス確認
現在のキューにあるジョブを確認するコマンドです。
$ squeue
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
12345 example myjob user R 00:00:00 1 node-001
特定のユーザーのジョブだけを表示するには、-u
オプションを使います。
$ squeue -u <ユーザー名>
ジョブ履歴の確認
ジョブの履歴を確認するにはあらかじめ設定が必要です。
設定方法については以下の記事などが参考になると思います。
ジョブの履歴を確認するためコマンドです。
$ sacct
$ sacct
JobID State Elapsed AllocCPUS
------------ -------- -------- ----------------
12345 COMPLETED 00:02:45 8
12346 FAILED 00:01:10 4
便利なオプション
squeue
コマンドと同じように特定のユーザーのジョブの履歴を表示するには、-u
オプションを使います。
$ sacct -u <ユーザー名>
ジョブ ID を指定することで、特定のジョブの履歴を確認できます。
$ sacct -j <ジョブID>
期間を指定して履歴を表示
$ sacct -S 2024-11-01 -E 2024-11-20
これにより、指定した期間内のジョブ履歴を確認できます。
詳細情報を表示
$ sacct -j <ジョブID> --format=JobID,State,Elapsed
$ sacct -j 12345 --format=JobID,State,Elapsed
JobID State Elapsed
------------ -------- --------
12345 COMPLETED 00:02:45
--format
オプションで表示する情報をカスタマイズできます。
--format
オプションで指定できる内容のリストは以下のコマンドで出力できます。
$ sacct --helpformat
以下、--format
オプションで指定できる内容です。
Fields available:
Account AdminComment AllocCPUS AllocGRES
AllocNodes AllocTRES AssocID AveCPU
AveCPUFreq AveDiskRead AveDiskWrite AvePages
AveRSS AveVMSize BlockID Cluster
Comment Constraints ConsumedEnergy ConsumedEnergyRaw
CPUTime CPUTimeRAW DBIndex DerivedExitCode
Elapsed ElapsedRaw Eligible End
ExitCode Flags GID Group
JobID JobIDRaw JobName Layout
MaxDiskRead MaxDiskReadNode MaxDiskReadTask MaxDiskWrite
MaxDiskWriteNode MaxDiskWriteTask MaxPages MaxPagesNode
MaxPagesTask MaxRSS MaxRSSNode MaxRSSTask
MaxVMSize MaxVMSizeNode MaxVMSizeTask McsLabel
MinCPU MinCPUNode MinCPUTask NCPUS
NNodes NodeList NTasks Priority
Partition QOS QOSRAW Reason
ReqCPUFreq ReqCPUFreqMin ReqCPUFreqMax ReqCPUFreqGov
ReqCPUS ReqGRES ReqMem ReqNodes
ReqTRES Reservation ReservationId Reserved
ResvCPU ResvCPURAW Start State
Submit Suspended SystemCPU SystemComment
Timelimit TimelimitRaw TotalCPU TRESUsageInAve
TRESUsageInMax TRESUsageInMaxNode TRESUsageInMaxTask TRESUsageInMin
TRESUsageInMinNode TRESUsageInMinTask TRESUsageInTot TRESUsageOutAve
TRESUsageOutMax TRESUsageOutMaxNode TRESUsageOutMaxTask TRESUsageOutMin
TRESUsageOutMinNode TRESUsageOutMinTask TRESUsageOutTot UID
User UserCPU WCKey WCKeyID
WorkDir
ジョブのキャンセル
送信済みのジョブをキャンセルするコマンドです。
$ scancel <ジョブID>
特定のユーザーのすべてのジョブをキャンセルするコマンドです。
$ scancel -u <ユーザー名>
ノード関連のコマンド
ノードの詳細確認
特定のノードの状態を確認するコマンドです。
$ scontrol show node <ノード名>
ちなみに、以前このコマンドを使用して問題を対処しました。
そちらも記事にしています。
まとめ
Slurm の基本的なコマンドを紹介しました。
この記事が、Slurm を使う皆さんの役に立てれば幸いです。
それではまた!