kuroの覚え書き

96の個人的覚え書き

UbuntuでSlurm

ローカルで運用しているUbuntu20.04にジョブスケジューラを入れよう、ということで最初Torqueを入れようとした。

sudo apt install torque-server torque-mom

しかしそんなものはないと言われる。aptのほうでももうメンテナンスされてないんだね。
ということでAlma Linuxに入れたSlurmを入れることにする。
まずは下ごしらえでユーザー設定など。

sudo groupadd -g 5000 slurm
sudo useradd -M -d /var/lib/slurm -s /sbin/nologin -u 5000 -g slurm slurm
sudo groupadd -g 5001 munge
sudo  useradd -M -d /var/lib/munge -s /bin/bash -u 5001 -g munge munge

sudo mkdir -p /var/lib/slurm/spool
sudo mkdir -p /var/log/slurm

sudo chown -R slurm:slurm /var/log/slurm
sudo chown -R slurm:slurm /var/lib/slurm

そしてmungeのインストール

sudo apt install -y munge libmunge-dev

Alma Linuxのほうではここでmunge-keyをゴニョゴニョしたと思うんだけど、
qiita.com
参考にさせていただいたこちらのページではそんなことはやっていないので、要らないんだろうか。
で、Slurmはソースを取ってきてビルド。

sudo apt install -y build-essential

wget https://download.schedmd.com/slurm/slurm-23.02.3.tar.bz2
tar -jxvf slurm-23.02.3.tar.bz2
cd slurm-23.02.3/

./configure
make
sudo make install

次にslurm.confを作る。
slurm.schedmd.com
こちらのページに必要事項を入力するといい感じにconfigファイルを作ってくれるらしい。
できたファイルを以下にコピーして、ちょっとだけ追加修正してやる。

sudo nano /usr/local/etc/slurm.conf

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ClusterName=guilty8
SlurmctldHost=guilty8-e5800t110fe
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-#
ProctrackType=proctrack/cgroup
ReturnToService=1
SlurmctldPidFile=/var/run/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=slurm
#SlurmdUser=root
StateSaveLocation=/var/spool/slurmctld
SwitchType=switch/none
TaskPlugin=task/affinity,task/cgroup
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurmctld.log
#SlurmdDebug=info
SlurmdLogFile=/var/log/slurmd.log
#
#
# COMPUTE NODES
NodeName=guilty8-e5800t110fe CPUs=8 Sockets=1 CoresPerSocket=4 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP

これでいいはずなので

sudo cp etc/slurmctld.service /etc/systemd/system
sudo cp etc/slurmd.service /etc/systemd/system

sudo systemctl start slumctld slums

と起動してやったがどちらもActive: failed と言われる。
slumctldのほうは権限がなくて/var/spool/slurmctldが作れないとのことなので

sudo mkdir -p /var/spool/slurmctld
sudo chmod 777 /var/spool/slurmctld/

としてやることで無事起動した。
一方、slurmdは

sudo systemctl status slurmd
× slurmd.service - Slurm node daemon
     Loaded: loaded (/etc/systemd/system/slurmd.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2023-07-02 13:40:10 JST; 5min ago
    Process: 6779 ExecStart=/usr/local/sbin/slurmd -D -s $SLURMD_OPTIONS (code=exited, status=1/FAILURE)
   Main PID: 6779 (code=exited, status=1/FAILURE)
        CPU: 4ms

 7月 02 13:40:10 guilty8-e5800t110fe systemd[1]: Started Slurm node daemon.
 7月 02 13:40:10 guilty8-e5800t110fe slurmd[6779]: slurmd: error: Couldn't find the specified plugin name for cgroup/v2 looking at all files
 7月 02 13:40:10 guilty8-e5800t110fe slurmd[6779]: slurmd: error: cannot find cgroup plugin for cgroup/v2
 7月 02 13:40:10 guilty8-e5800t110fe slurmd[6779]: slurmd: error: cannot create cgroup context for cgroup/v2
 7月 02 13:40:10 guilty8-e5800t110fe slurmd[6779]: slurmd: error: Unable to initialize cgroup plugin
 7月 02 13:40:10 guilty8-e5800t110fe slurmd[6779]: slurmd: error: slurmd initialization failed
 7月 02 13:40:10 guilty8-e5800t110fe systemd[1]: slurmd.service: Main process exited, code=exited, status=1/FAILURE
 7月 02 13:40:10 guilty8-e5800t110fe systemd[1]: slurmd.service: Failed with result 'exit-code'.

で、Stackoverflowあたりをさまようとlibdbus-1-devを入れとけや、と言われるので

sudo apt install libdbus-1-dev

としたけど変わらない。
結局、libdbus-1-devをインストールしたあとmakeからやり直さないとだめなようで、

./configure
make
sudo make install

とすると

sudo systemctl status slurmd
● slurmd.service - Slurm node daemon
     Loaded: loaded (/etc/systemd/system/slurmd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-07-02 13:45:56 JST; 30min ago
   Main PID: 26767 (slurmd)
      Tasks: 1
     Memory: 1.1M
        CPU: 15ms
     CGroup: /system.slice/slurmd.service
             └─26767 /usr/local/sbin/slurmd -D -s

 7月 02 13:45:56 guilty8-e5800t110fe systemd[1]: Started Slurm node daemon.
 7月 02 13:45:56 guilty8-e5800t110fe slurmd[26767]: slurmd: slurmd version 23.02.3 started
 7月 02 13:45:56 guilty8-e5800t110fe slurmd[26767]: slurmd: slurmd started on Sun, 02 Jul 2023 13:45:56 +0900
 7月 02 13:45:56 guilty8-e5800t110fe slurmd[26767]: slurmd: CPUs=8 Boards=1 Sockets=1 Cores=4 Threads=2 Memory=15931 TmpDisk=936080 Uptime=5890 CPUSpec>

と無事に起動した。めでたし。