2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Slurmで1nodeに複数のジョブを詰め込むPartitionと1nodeに複数のジョブを詰め込みできないPartition(ノード専有)を共存させる方法

Last updated at Posted at 2021-05-17

やりたいこと

Slurmにおいて、下記のように1nodeに複数のジョブを詰め込むPartitionと1nodeに複数のジョブを詰め込みできないPartitionを共存させたい。

この例だと、以下のようになっている。

  • PARTITION名; cpu_queueのは1ノードに複数のジョブを詰め込み可能
    • 以下の例ではcompute01に2ジョブ投入されていることがわかる。
  • PARTITION名; gpu_queueのは1ノードに複数のジョブを詰め込み不可
    • 以下の例では必ずジョブがノードを専有している。
command
$ squeue
 JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
  1946 cpu_queue    test1 xdu-0590  R       0:03      1    compute01 
  1947 cpu_queue    test2 xdu-0590  R       0:00      1    compute01 
  1949 gpu_queue    test3 xdu-0590  R       0:00      1        gpu01 
  1950 gpu_queue    test4 xdu-0590  R       0:00      1        gpu02
  1951 gpu_queue    test5 xdu-0590  R       0:00      1        gpu03

実現方法

slurm.confに下記を追記する。

SelectTypeSelectTypeParametersの指定

command
SelectType=select/cons_tres
SelectTypeParameters=CR_CORE

PartitionNameにてOverSubscribeの設定

command
PartitionName=gpu_queue Nodes=gpu[01-08] Default=Yes MaxTime=INFINITE State=UP OverSubscribe=Exclusive 
PartitionName=cpu_queue Nodes=cpu[01-16] Default=Yes MaxTime=INFINITE State=UP OverSubscribe=YES

変更したslurm.confの適用方法

  • 変更した、slurm.confはかならずすべてのノードで更新し、slurmctldとslurmdをstop/startしてください(restartでなくてstop/start)。
  • pdshがインストールされていることを前提としています。
  • 以下の例では、slurmctldを起動しているホストにおいても、debugキュー(Partition) としてslurmdを起動していることを前提としています。実際の対象ノードは環境に応じて変更してください。

変数の定義

command
# 変更させたいslurm.confの雛形。すべてのノードからアクセス可能なこと
SHARED_CONF="/scratch/slurm.conf.tmp"
# 反映先(実際のslurm.conf)
SLURM_CONF="/etc/slurm/slurm.conf"
# pdshで実行するノード
NODE="lssr630-cs[01-08],dellc6525-cs[01-04],lssr630-hs04"

slurm.confの更新

command
# slurm.confのバックアップ
sudo pdsh -w ${NODE} "cp ${SLURM_CONF} ${SLURM_CONF}.bak$(date +'%Y%m%d%H%M%S')"
# 編集済みslurm.confのコピー
sudo pdsh -w ${NODE} "cp ${SHARED_CONF} ${SLURM_CONF}"
# 変更確認
sudo pdsh -w ${NODE} "cat -n ${SLURM_CONF} | grep -Ev '^\#' | grep -e SelectType -e OverSubscribe"

slurmctld, slurmdの再起動

slurmctldだけでなく、slurmdの更新も忘れないこと

command
# slurmctldとslurmdの停止
sudo systemctl stop slurmctld
sudo pdsh -w ${NODE} "systemctl stop slurmd"
# slurmctldとslurmdの起動
sudo systemctl start slurmctld
sudo pdsh -w ${NODE} "systemctl start slurmd"
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?