slurm/manager をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
OS提供のパッケージをインストールしてもいいのだが、ソース...
[[slurm/rpm]]で作ったパッケージをインストールします
#code(nonumber){{
[root@slurm ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
[root@slurm ~]# dnf localinstall ./rpmbuild/RPMS/x86_64/s...
./rpmbuild/RPMS/x86_64/s...
[root@slurm ~]#
}}
&color(red){*};パッケージ版だとあるのにソースコードからrp...
&size(10){ディストリビューターがシステム全体の観点から用...
#code(nonumber){{
[root@slurm ~]# groupadd -g 5000 slurm; useradd -M -d /va...
[root@slurm ~]# echo "D /run/slurm 0755 slurm slurm -" > ...
[root@slurm ~]# /usr/bin/systemd-tmpfiles --create /usr/l...
[root@slurm ~]# vi /etc/logrotate.d/slurm
/var/log/slurm/*.log {
missingok
notifempty
copytruncate
rotate 5
}
[root@slurm ~]# mkdir -p /var/spool/slurm/ctld /va...
[root@slurm ~]# chown -R slurm. /var/spool/slurm /va...
(slurmのpath設定)
[root@slurm slurm]# echo -e "export PATH=\${PATH}:/opt/sl...
[root@slurm slurm]# echo -e "setenv PATH \${PATH}:/opt/sl...
}}
&color(red){*};基本logはsyslogに回るようでファイルに落と...
管理ノードと計算ノードの認証にこれまでは外部パッケージの ...
っでその設定
#code(nonumber){{
[root@slurm ~]# dd if=/dev/random of=/opt/slurm/etc/slurm...
[root@slurm ~]# chown slurm. /opt/slurm/etc/slurm.key
[root@slurm ~]# chmod 0600 /opt/slurm/etc/slurm.key
}}
この「slurm.key」は各計算ノードの「/opt/slurm/etc/slurm.k...
***設定ファイル [#f9b15dcc]
設定ファイルは「&color(magenta){/opt/slurm/etc};」に置き...
ファイル名は「/opt/slurm/etc/slurm.conf」として. &size(10...
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
ClusterName=cluster
SlurmctldHost=slurm # FQDNでも構わないが、search do...
#AuthType=auth/munge
AuthType=auth/slurm
CredType=cred/slurm
MailProg=/bin/true # メール通知を無効にします
MpiDefault=none
ProctrackType=proctrack/cgroup
ReturnToService=2
SlurmctldPidFile=/run/slurm/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/run/slurm/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurm/d
SlurmUser=slurm
SlurmdUser=root # rootでないとcgroup情報が取れない...
SrunPortRange=60001-63000
StateSaveLocation=/var/spool/slurm/ctld
SwitchType=switch/none
TaskPlugin=task/cgroup
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core # core数のみ管理。大き...
# JOB PRIORITY
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
AccountingStoreFlags=YES
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/cgroup
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log
# COMPUTE NODES
SlurmdParameters=hostname_short <-- 「hostname -s」で...
GresTypes=gpu
NodeName=n1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSoc...
NodeName=n2 CPUs=2 Boards=1 SocketsPerBoard=1 CoresPerSoc...
NodeName=n3 CPUs=4 Boards=1 SocketsPerBoard=1 CoresPerSoc...
PartitionName=workq Nodes=ALL Default=YES MaxTime=INFINIT...
[root@slurm ~]#
}}
調整の例:[[slurm/slurm.conf]]
&color(white,blue){留意}; このslurm.confファイルで計算ノ...
あとcgroup.confとgres.confを用意します
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/cgroup.conf
CgroupMountpoint="/sys/fs/cgroup"
ConstrainCores=yes
ConstrainDevices=yes
ConstrainRAMSpace=yes # slurm.confのSelectTypeParamet...
[root@slurm ~]# vi /opt/slurm/etc/gres.conf
AutoDetect=nvml
[root@slurm ~]#
}}
***firewalld [#ua2093ed]
ファイアウォールの設定セットとなるものは用意されていない...
大抵は「/usr/lib/firewalld/services/」に置かれるのだが...
恐らく設定ファイルで変更できるから初めから入れていないの...
ここでは 6817-6818/TCP と srun 向けに 60001-63000/TCP を...
#code(nonumber){{
[root@slurm ~]# firewall-cmd --add-port=6817-6818/tcp --a...
[root@slurm ~]# firewall-cmd --reload
}}
&color(red){*};&size(10){管理ノードで「srun」を発行するな...
***デーモン起動 [#jfaab186]
#code(nonumber){{
[root@slurm ~]# systemctl enable slurmctld --now
}}
ここでは「slurm.conf」の「SlurmUser」が示すようにユーザ「...
&color(orangered){StateSaveLocation};の場所(「/var/spool/...
この段階で、sinfoとかで確認が出来る &size(10){各ノード...
#code(nonumber){{
[illya@slurm-client ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
workq* up infinite 3 unk n[1-3]
[illya@slurm-client ~]$ sinfo -N -l
Mon Dec 26 02:27:40 2022
NODELIST NODES PARTITION STATE CPUS S:C:T MEMO...
n1 1 workq* unknown* 1 1:1:1 160...
n2 1 workq* unknown* 2 1:2:1 157...
n3 1 workq* unknown* 4 1:4:1 160...
[illya@slurm-client ~]$
}}
***めも [#c7d63f97]
上手く動かない時は直接デーモンを起動させる
「/opt/slurm/sbin/slurmctld -D」
これでインターラクティヴで動作が見えます
***Configless [#d2a5c73c]
管理ノードで修正したslurm.confやcgroup.confを自動で計算ノ...
[[https://slurm.schedmd.com/configless_slurm.html>+https:...
DNSのSRVを使えば計算ノードもジョブ発行ノードもほぼほぼ手...
素晴らしい.
設定方法は
管理ノードのslurm.confに
#code(nonumber){{
SlurmctldParameters=enable_configless
}}
を加えてslurmctldを再起動させる
あと計算ノード、ジョブ発行ノードを調整しますが、簡単にはD...
その設定ファイル「/etc/dnsmasq.conf」に下記を追加します
#code(nonumber){{
# for slurmd
srv-host=_slurmctld._tcp.sybyl.local,slurm.sybyl.local,6817
}}
&color(red){*};&size(10){BINDならゾーンファイルに「_slurm...
「sybyl.local」はここのドメイン名です.
これでdnsmasqを再起動すれば、slurmdを起動したときにdnsmas...
nslookup で確認してみます
#code(nonumber){{
[root@slurm ~]# nslookup -type=SRV _slurmctld._tcp.sybyl....
Server: 192.168.0.3
Address: 192.168.0.3#53
_slurmctld._tcp.sybyl.local service = 0 0 6817 slurm....
[root@slurm ~]#
}}
伝播されたファイルは「/var/spool/slurm/d」に置かれます
#code(nonumber){{
root@n1:~# ls -l /var/spool/slurm/d
total 16
drwxr-xr-x 2 root root 4096 12月 27 06:24 conf-cache
-rw------- 1 root root 8 12月 27 06:24 cred_state
-rw------- 1 root root 8 12月 27 06:17 cred_state.old
-rw-r--r-- 1 root root 3230 12月 27 06:24 hwloc_topo_whol...
root@n1:~#
root@n1:~# ls -l /var/spool/slurm/d/conf-cache/
total 12
-rw-r--r-- 1 root root 227 12月 27 06:24 cgroup.conf
-rw-r--r-- 1 root root 140 12月 27 06:24 gres.conf
-rw-r--r-- 1 root root 1664 12月 27 06:24 slurm.conf
root@n1:~#
}}
となる.
管理ノードでこれら設定ファイル「cgroup, gres, slurm」を修...
計算ノードのこれらのファイルが更新されます
***Configless のためにmanagerにdnsmasqを立ててみる [#i20b...
ネットワーク管理者に「すみません。このSRVコードを仕込んで...
っで自分でdnsサーバを立ち上げてしまうのもありかなと.
っでDNSの問い合わせをnmtuiで自分自身にさせて、dnsmasqを入...
上位の参照先を「/etc/dnsmasq_resolv.conf」に記載しておく.
#code(nonumber){{
[root@slurm ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 lo...
::1 localhost localhost.localdomain localhost6 lo...
192.168.0.69 slurm
192.168.0.14 n1
192.168.0.15 n2
192.168.0.16 n3
192.168.0.7 s
192.168.0.20 slurm-client
192.168.0.166 slurmdbd
[root@slurm ~]# dnf install dnsmasq dnsutils -y
[root@slurm ~]# cat /etc/resolv.conf <-- nmtuiでの...
# Generated by NetworkManager
nameserver 127.0.0.1
[root@slurm ~]# vi /etc/dnsmasq.conf
port=53
#domain-needed
bogus-priv
interface=eth1 <-- サービス対象の...
resolv-file=/etc/dnsmasq_resolv.conf
srv-host=_slurmctld._tcp,slurm,6817
[root@slurm ~]# vi /etc/dnsmasq_resolv.conf
nameserver 192.168.0.3
[root@slurm ~]# systemctl enable dnsmasq.service --now
(確認)
[root@slurm ~]# nslookup -type=SRV _slurmctld._tcp
Server: 127.0.0.1
Address: 127.0.0.1#53
_slurmctld._tcp service = 0 0 6817 slurm.
[root@slurm ~]#
[root@slurm ~]# nslookup slurm
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: slurm
Address: 192.168.0.69
[root@slurm ~]#
}}
***slurmctld.service [#y5dce6d4]
ここではmungeは使わないのだが、ソースコードはmungeを使う...
また、この管理ノードで configless のための dnsmasq を動か...
#code(nonumber){{
[root@slurm ~]# vi /usr/lib/systemd/system/slurmctld.serv...
After=network-online.target remote-fs.target munge.servic...
↓
After=network-online.target remote-fs.target ...
[root@slurm ~]#
[root@slurm ~]# systemctl daemon-reload
}}
***めも [#u5266284]
domain(sybyl.localら)を持つ場合、search domainにもそのdom...
samba adでの登録なら
#code(nonumber){{
samba-tool dns add ad sybyl.local _slurmctld._tcp.sybyl.l...
}}
freeipaでの登録なら
#code(nonumber){{
ipa dnsrecord-add sybyl.local _slurmctld._tcp --srv-rec=...
}}
終了行:
OS提供のパッケージをインストールしてもいいのだが、ソース...
[[slurm/rpm]]で作ったパッケージをインストールします
#code(nonumber){{
[root@slurm ~]# cat /etc/redhat-release
Rocky Linux release 9.7 (Blue Onyx)
[root@slurm ~]# dnf localinstall ./rpmbuild/RPMS/x86_64/s...
./rpmbuild/RPMS/x86_64/s...
[root@slurm ~]#
}}
&color(red){*};パッケージ版だとあるのにソースコードからrp...
&size(10){ディストリビューターがシステム全体の観点から用...
#code(nonumber){{
[root@slurm ~]# groupadd -g 5000 slurm; useradd -M -d /va...
[root@slurm ~]# echo "D /run/slurm 0755 slurm slurm -" > ...
[root@slurm ~]# /usr/bin/systemd-tmpfiles --create /usr/l...
[root@slurm ~]# vi /etc/logrotate.d/slurm
/var/log/slurm/*.log {
missingok
notifempty
copytruncate
rotate 5
}
[root@slurm ~]# mkdir -p /var/spool/slurm/ctld /va...
[root@slurm ~]# chown -R slurm. /var/spool/slurm /va...
(slurmのpath設定)
[root@slurm slurm]# echo -e "export PATH=\${PATH}:/opt/sl...
[root@slurm slurm]# echo -e "setenv PATH \${PATH}:/opt/sl...
}}
&color(red){*};基本logはsyslogに回るようでファイルに落と...
管理ノードと計算ノードの認証にこれまでは外部パッケージの ...
っでその設定
#code(nonumber){{
[root@slurm ~]# dd if=/dev/random of=/opt/slurm/etc/slurm...
[root@slurm ~]# chown slurm. /opt/slurm/etc/slurm.key
[root@slurm ~]# chmod 0600 /opt/slurm/etc/slurm.key
}}
この「slurm.key」は各計算ノードの「/opt/slurm/etc/slurm.k...
***設定ファイル [#f9b15dcc]
設定ファイルは「&color(magenta){/opt/slurm/etc};」に置き...
ファイル名は「/opt/slurm/etc/slurm.conf」として. &size(10...
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/slurm.conf
ClusterName=cluster
SlurmctldHost=slurm # FQDNでも構わないが、search do...
#AuthType=auth/munge
AuthType=auth/slurm
CredType=cred/slurm
MailProg=/bin/true # メール通知を無効にします
MpiDefault=none
ProctrackType=proctrack/cgroup
ReturnToService=2
SlurmctldPidFile=/run/slurm/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/run/slurm/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurm/d
SlurmUser=slurm
SlurmdUser=root # rootでないとcgroup情報が取れない...
SrunPortRange=60001-63000
StateSaveLocation=/var/spool/slurm/ctld
SwitchType=switch/none
TaskPlugin=task/cgroup
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core # core数のみ管理。大き...
# JOB PRIORITY
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
AccountingStoreFlags=YES
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/cgroup
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log
# COMPUTE NODES
SlurmdParameters=hostname_short <-- 「hostname -s」で...
GresTypes=gpu
NodeName=n1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSoc...
NodeName=n2 CPUs=2 Boards=1 SocketsPerBoard=1 CoresPerSoc...
NodeName=n3 CPUs=4 Boards=1 SocketsPerBoard=1 CoresPerSoc...
PartitionName=workq Nodes=ALL Default=YES MaxTime=INFINIT...
[root@slurm ~]#
}}
調整の例:[[slurm/slurm.conf]]
&color(white,blue){留意}; このslurm.confファイルで計算ノ...
あとcgroup.confとgres.confを用意します
#code(nonumber){{
[root@slurm ~]# vi /opt/slurm/etc/cgroup.conf
CgroupMountpoint="/sys/fs/cgroup"
ConstrainCores=yes
ConstrainDevices=yes
ConstrainRAMSpace=yes # slurm.confのSelectTypeParamet...
[root@slurm ~]# vi /opt/slurm/etc/gres.conf
AutoDetect=nvml
[root@slurm ~]#
}}
***firewalld [#ua2093ed]
ファイアウォールの設定セットとなるものは用意されていない...
大抵は「/usr/lib/firewalld/services/」に置かれるのだが...
恐らく設定ファイルで変更できるから初めから入れていないの...
ここでは 6817-6818/TCP と srun 向けに 60001-63000/TCP を...
#code(nonumber){{
[root@slurm ~]# firewall-cmd --add-port=6817-6818/tcp --a...
[root@slurm ~]# firewall-cmd --reload
}}
&color(red){*};&size(10){管理ノードで「srun」を発行するな...
***デーモン起動 [#jfaab186]
#code(nonumber){{
[root@slurm ~]# systemctl enable slurmctld --now
}}
ここでは「slurm.conf」の「SlurmUser」が示すようにユーザ「...
&color(orangered){StateSaveLocation};の場所(「/var/spool/...
この段階で、sinfoとかで確認が出来る &size(10){各ノード...
#code(nonumber){{
[illya@slurm-client ~]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
workq* up infinite 3 unk n[1-3]
[illya@slurm-client ~]$ sinfo -N -l
Mon Dec 26 02:27:40 2022
NODELIST NODES PARTITION STATE CPUS S:C:T MEMO...
n1 1 workq* unknown* 1 1:1:1 160...
n2 1 workq* unknown* 2 1:2:1 157...
n3 1 workq* unknown* 4 1:4:1 160...
[illya@slurm-client ~]$
}}
***めも [#c7d63f97]
上手く動かない時は直接デーモンを起動させる
「/opt/slurm/sbin/slurmctld -D」
これでインターラクティヴで動作が見えます
***Configless [#d2a5c73c]
管理ノードで修正したslurm.confやcgroup.confを自動で計算ノ...
[[https://slurm.schedmd.com/configless_slurm.html>+https:...
DNSのSRVを使えば計算ノードもジョブ発行ノードもほぼほぼ手...
素晴らしい.
設定方法は
管理ノードのslurm.confに
#code(nonumber){{
SlurmctldParameters=enable_configless
}}
を加えてslurmctldを再起動させる
あと計算ノード、ジョブ発行ノードを調整しますが、簡単にはD...
その設定ファイル「/etc/dnsmasq.conf」に下記を追加します
#code(nonumber){{
# for slurmd
srv-host=_slurmctld._tcp.sybyl.local,slurm.sybyl.local,6817
}}
&color(red){*};&size(10){BINDならゾーンファイルに「_slurm...
「sybyl.local」はここのドメイン名です.
これでdnsmasqを再起動すれば、slurmdを起動したときにdnsmas...
nslookup で確認してみます
#code(nonumber){{
[root@slurm ~]# nslookup -type=SRV _slurmctld._tcp.sybyl....
Server: 192.168.0.3
Address: 192.168.0.3#53
_slurmctld._tcp.sybyl.local service = 0 0 6817 slurm....
[root@slurm ~]#
}}
伝播されたファイルは「/var/spool/slurm/d」に置かれます
#code(nonumber){{
root@n1:~# ls -l /var/spool/slurm/d
total 16
drwxr-xr-x 2 root root 4096 12月 27 06:24 conf-cache
-rw------- 1 root root 8 12月 27 06:24 cred_state
-rw------- 1 root root 8 12月 27 06:17 cred_state.old
-rw-r--r-- 1 root root 3230 12月 27 06:24 hwloc_topo_whol...
root@n1:~#
root@n1:~# ls -l /var/spool/slurm/d/conf-cache/
total 12
-rw-r--r-- 1 root root 227 12月 27 06:24 cgroup.conf
-rw-r--r-- 1 root root 140 12月 27 06:24 gres.conf
-rw-r--r-- 1 root root 1664 12月 27 06:24 slurm.conf
root@n1:~#
}}
となる.
管理ノードでこれら設定ファイル「cgroup, gres, slurm」を修...
計算ノードのこれらのファイルが更新されます
***Configless のためにmanagerにdnsmasqを立ててみる [#i20b...
ネットワーク管理者に「すみません。このSRVコードを仕込んで...
っで自分でdnsサーバを立ち上げてしまうのもありかなと.
っでDNSの問い合わせをnmtuiで自分自身にさせて、dnsmasqを入...
上位の参照先を「/etc/dnsmasq_resolv.conf」に記載しておく.
#code(nonumber){{
[root@slurm ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 lo...
::1 localhost localhost.localdomain localhost6 lo...
192.168.0.69 slurm
192.168.0.14 n1
192.168.0.15 n2
192.168.0.16 n3
192.168.0.7 s
192.168.0.20 slurm-client
192.168.0.166 slurmdbd
[root@slurm ~]# dnf install dnsmasq dnsutils -y
[root@slurm ~]# cat /etc/resolv.conf <-- nmtuiでの...
# Generated by NetworkManager
nameserver 127.0.0.1
[root@slurm ~]# vi /etc/dnsmasq.conf
port=53
#domain-needed
bogus-priv
interface=eth1 <-- サービス対象の...
resolv-file=/etc/dnsmasq_resolv.conf
srv-host=_slurmctld._tcp,slurm,6817
[root@slurm ~]# vi /etc/dnsmasq_resolv.conf
nameserver 192.168.0.3
[root@slurm ~]# systemctl enable dnsmasq.service --now
(確認)
[root@slurm ~]# nslookup -type=SRV _slurmctld._tcp
Server: 127.0.0.1
Address: 127.0.0.1#53
_slurmctld._tcp service = 0 0 6817 slurm.
[root@slurm ~]#
[root@slurm ~]# nslookup slurm
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: slurm
Address: 192.168.0.69
[root@slurm ~]#
}}
***slurmctld.service [#y5dce6d4]
ここではmungeは使わないのだが、ソースコードはmungeを使う...
また、この管理ノードで configless のための dnsmasq を動か...
#code(nonumber){{
[root@slurm ~]# vi /usr/lib/systemd/system/slurmctld.serv...
After=network-online.target remote-fs.target munge.servic...
↓
After=network-online.target remote-fs.target ...
[root@slurm ~]#
[root@slurm ~]# systemctl daemon-reload
}}
***めも [#u5266284]
domain(sybyl.localら)を持つ場合、search domainにもそのdom...
samba adでの登録なら
#code(nonumber){{
samba-tool dns add ad sybyl.local _slurmctld._tcp.sybyl.l...
}}
freeipaでの登録なら
#code(nonumber){{
ipa dnsrecord-add sybyl.local _slurmctld._tcp --srv-rec=...
}}
ページ名:
1