よく使うSlurmのscontrolコマンド
これはrioyokotalab Advent Calendar 2020 16日目の記事です.
何の話か
Slurmのscontrolコマンドは,クラスタの追加・設定やジョブの管理など,Slurmを使って複数ノードのジョブスケジューリングをしている場合は頻繁に使います.
その中で,自分がよく使うコマンドをいくつか書いていきます.
scontrol update
sinfoでノードがdownと表示されるようになった場合などによく使うコマンドです.
こんな感じで状態をidleにできます.
scontrol update nodename=node_name state=idle
いくつかのノードのstateをまとめて更新することもできます.
scontrol update nodename=node1,node2,node3 state=idle
idleにする場合は上記のコマンドで十分なのですが,逆にdownにしたい場合などはreasonを付与する必要があります.
scontrol update nodename=node_name state=down reason='hoge'
down*のように*が付いている場合は,Slurmのデータベース上でdownなだけではなく,ノードやネットワーク自体にも問題があるため,そちらを直さない限りidle*になったところでジョブは割り当てられません.
scontrol show
このコマンドではノードやパーティション,ジョブの状態をみることができます.
例えば,jobに割り当てられている計算資源や時間制限を見たければ,
scontrol show job=job_id
また,ノードの持つ計算資源やOSの種類,最終起動時間などを見たければ,
scontrol show node=node_name
このようにENTRY=IDを指定することで,どの情報を表示させるかを指定するのですが,ENTRYはjobやnode以外にも多くのものを指定することができます.
詳細はSlurmの公式ページをご覧ください.
scontrol - Slurm
scontrol write batch_script
バッチジョブを実行するためにはジョブスクリプトを書きますが,このコマンドで指定したジョブを実行するために使ったジョブスクリプトを出力できます.
使い方はこんな感じです.
scontrol write batch_script job_id
標準出力で見たい場合は
scontrol write batch_script job_id -
おわりに
個人的にはscontrolはユーザとしても管理者としても使いやすいものとなっていると思っていて重宝しています.
ドキュメントもちゃんと整備されていてありがたいです.