大事な事っぽい事
っで各計算ノード毎(OS毎)の構築
slurm/node/ubuntu
slurm/rpmbuildで作成したパッケージを適用します
[root@n2 ~]# dnf install epel-release -y
[root@n2 ~]# dnf install --enablerepo=epel libjwt pmix-pmi
[root@n2 ~]# dnf localinstall slurm-slurmd-24.05.3-1.el9.x86_64.rpm \
slurm-24.05.3-1.el9.x86_64.rpm
[root@n2 ~]# echo "D /run/slurm 0755 slurm slurm -" > /usr/lib/tmpfiles.d/slurm.conf
[root@n2 ~]# /usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/slurm.conf
[root@n2 ~]# mkdir -p /var/spool/slurm/d /var/log/slurm /opt/slurm/etc
[root@n2 ~]# chown slurm. /var/spool/slurm/d /var/log/slurm
[root@n2 ~]# echo -e "export PATH=\${PATH}:/opt/slurm/bin\nexport LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/opt/slurm/lib64" > /etc/profile.d/slurm.sh
[root@n2 ~]# echo -e "setenv PATH ${PATH}:"/opt/slurm/bin\nsetemv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:"/opt/slurm/lib64" > /etc/profile.d/slurm.csh
[root@n2 ~]# /opt/slurm/sbin/slurmd -C
NodeName=n2 CPUs=2 Boards=1 SocketsPerBoard=2 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=15732 -> この内容を管理ノードのslurm.confに加える
UpTime=0-00:13:31
[root@n2 ~]#
設定ファイルは管理ノードから頂きます
(管理ノードから「slurm.key」を受領する)
[root@slurm ~]# scp /opt/slurm/etc/slurm.key n2:/opt/slurm/etc/slurm.key
もし管理ノードで「Configless 」が未定義ならslurm/manager#d2a5c73c 「/opt/slurm/etc」のslurm.conf、gres.conf、cgroup.conf らのファイル転送をコピーする
firewall. slurm.confの「SlurmdPort」を開けておく
[root@n2 ~]# firewall-cmd --add-port=6818/tcp --zone=public --permanent
[root@n2 ~]# firewall-cmd --reload
最後にデーモンを起動させます
[root@n2 ~]# systemctl enable slurmd --now
*nvidia関係は「persistence mode」を有効にした方がいいかも NVIDIA#o13e41e5
rshは不要.
しかも 計算ノードの ssh ログインをroot以外拒否でも構わない。
[root@n2 ~]# vi /etc/ssh/sshd_config
:
:
AllowUsers root
[root@n2 ~]#
[root@n2 ~]# systemctl restart sshd
これはジョブの実行云々に関わらず常にずっとrootしか入れない。それをリソース確保した計算ノードのみsshで入れる仕組みが「slurm-pam_slurm」パッケージ
[root@n2 ~]# dnf localinstall slurm-pam_slurm-24.05.1-1.el9.x86_64.rpm
[root@n2 ~]# ls -l /lib64/security/pam_slurm*
-rwxr-xr-x 1 root root 305664 Jul 24 22:50 /lib64/security/pam_slurm_adopt.so
-rwxr-xr-x 1 root root 201016 Jul 24 22:50 /lib64/security/pam_slurm.so
[root@n2 ~]# echo "/opt/slurm/lib64" > /etc/ld.so.conf.d/slurm.conf
[root@n2 ~]# ldconfig
設定してみる
(管理ノードでPrologFlagsを付ける)
[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
:
PrologFlags=contain
[root@slurm ~]# scontrol reconfig
(計算ノードでpamの調整)
[root@n2 ~]# vi /etc/pam.d/sshd
:
account required pam_slurm_adopt.so # 末尾に追記
[root@n2 ~]#
[root@n2 ~]# vi /etc/pam.d/password-auth
:
#-session optional pam_systemd.so # pam_systemd.so を無効化
:
[root@n2 ~]#
っでテスト
何もそのノードで自分のジョブが動いていないと
[illya@slurm ~]$ ssh n2
illya@n2's password:
Access denied by pam_slurm_adopt: you have no active jobs on this node
Connection closed by 192.168.0.15 port 22
[illya@slurm ~]$
と弾かれる。
っで、ジョブを掴んで
[illya@slurm ~]$ srun --gres=gpu:1 -w n2 --pty bash
[illya@n2 ~]$ nvidia-smi -L
GPU 0: NVIDIA T600 (UUID: GPU-01226552-df75-5989-c2f3-3550cdc3427d)
[illya@n2 ~]$
そのまま別のターミナルからsshを試みると
[illya@slurm ~]$ ssh n2
illya@n2's password:
Last login: Thu Jul 25 03:50:40 2024 from 192.168.0.69
[illya@n2 ~]$ nvidia-smi -L
GPU 0: NVIDIA T600 (UUID: GPU-01226552-df75-5989-c2f3-3550cdc3427d)
[illya@n2 ~]$
GPUデバイスも使えるみたい.
複数のGPUを載せている場合は?
slurmd: CPU frequency setting not configured for this node
slurmd: error: cgroup namespace 'freezer' not mounted. aborting
slurmd: error: unable to create freezer cgroup namespace
slurmd: error: Couldn't load specified plugin name for proctrack/cgroup: Plugin init() callback failed
slurmd: error: cannot create proctrack context for proctrack/cgroup
slurmd: error: slurmd initialization failed
slurmd[73076]: fatal: Unable to determine this slurmd's NodeName
Unable to register: Zero Bytes were transmitted or received
slurmd: error: Couldn't find the specified plugin name for cgroup/v2 looking at all files
slurmd: error: cannot find cgroup plugin for cgroup/v2
slurmd: error: cannot create cgroup context for cgroup/v2
slurmd: error: Unable to initialize cgroup plugin
slurmd: error: resolve_ctls_from_dns_srv: res_nsearch error: Unknown host
slurmd: error: fetch_config: DNS SRV lookup failed
slurmd: error: _establish_configuration: failed to load configs
slurmd: error: slurmd initialization failed