[Slurm] ジョブが PD 状態のまま実行されない場合の解決方法

[Slurm] ジョブが PD 状態のまま実行されない場合の解決方法

Slurm でジョブを投入した際、ジョブが PD 状態のまま実行されない問題に遭遇しました。

本記事では下記の環境で動作確認を行っています。

  • Ubuntu Server 22.04.3 LTS
  • Slurm v22.05.2

ステータスの確認

ジョブのステータス (ST) を確認すると PD となっており、理由 (REASON) には Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions と表示されていました。

squeue の結果を見る限り、他にジョブは登録されていないにもかかわらず、ジョブに必要なノードが割り当てられていないという状態のようでした。

squeue の結果
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

 2611       all job_name     msen PD       0:00      1 (Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions)

ノードの State を確認すると、IDLE+DRAIN になっており、ReasonKill task failed となっていました。

localhost のノードの状態を確認
$ scontrol show node localhost
NodeName=localhost Arch=x86_64 CoresPerSocket=32
   CPUAlloc=0 CPUEfctv=128 CPUTot=128 CPULoad=2.33
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=gpu:nvidiah100pcie:6,mps:nvidiah100pcie:600
   NodeAddr=localhost NodeHostName=localhost Version=22.05.2
   OS=Linux 6.5.0-25-generic #25~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Feb 20 16:09:15 UTC 2
   RealMemory=2051970 AllocMem=0 FreeMem=88759 Sockets=2 Boards=1
   State=IDLE+DRAIN ThreadsPerCore=2 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A   Partitions=all
   BootTime=2024-08-06T10:30:29 SlurmdStartTime=2024-08-07T10:41:28
   LastBusyTime=2024-08-08T19:13:10
   CfgTRES=cpu=128,mem=2051970M,billing=128
   AllocTRES=
   CapWatts=n/a
   CurrentWatts=0 AveWatts=0
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
   Reason=Kill task failed [root@2024-08-08T19:12:57]

何らかのプロセスが終了せずに残っていたことが原因で、Slurm のジョブ実行が一時的に停止していたと考えられます。

解決方法

以下のコマンドを root ユーザーで実行し、ノードの状態を IDLE に変更することで、再びジョブを正常に実行できるようになりました!

ノードの State を変更するコマンド
scontrol update nodename=localhost state=idle

あとがき

ジョブが PD 状態で止まっていたときは何事かと思いましたが、scontrol コマンドでノードの状態を確認したところ、ノードが IDLE+DRAIN になっているのを発見し、原因がプロセスの終了に失敗していたことに気付きました。

最初はジョブの設定やリソースの割り当てに問題があるのかと思いましたが、原因がシンプルなものだったので、無事に解決できてホッとしました。

この記事が 1 人でも困っている方のお役に立てれば幸いです。

それではまた!

参考

Ryotaro49