SLURM 是一個(gè)類似 Sun Grid Engine (SGE) 的開源分布式資源管理軟件,用于超級(jí)計(jì)算機(jī)和大型計(jì)算節(jié)點(diǎn)集群,可高度伸縮和容錯(cuò)。SUN 被賣給 Oracle 后,好用的 SGE 變成 Oracle Grid Engine 并且從 6.2u6 版本開始成為商業(yè)軟件了(可以免費(fèi)使用90天),所以我們不得不另尋其他的開源替代方案,SLURM 是上次在德班高性能會(huì)議的時(shí)候一位陌生人介紹的,聽上去不錯(cuò)。
SLURM 通過(guò)一對(duì)冗余集群控制節(jié)點(diǎn)(冗余是可選的)來(lái)管理集群計(jì)算節(jié)點(diǎn),是由一個(gè)名為 slurmctld 的管理守護(hù)程序?qū)崿F(xiàn)的,slurmctld 提供了對(duì)計(jì)算資源的監(jiān)視、分配和管理,并將進(jìn)入的作業(yè)序列映射和分發(fā)到各個(gè)計(jì)算節(jié)點(diǎn)上。每個(gè)計(jì)算節(jié)點(diǎn)也有一個(gè)守護(hù)程序 slurmd,slurmd 管理在其上運(yùn)行的節(jié)點(diǎn),監(jiān)視節(jié)點(diǎn)上運(yùn)行的任務(wù)、接受來(lái)自控制節(jié)點(diǎn)的請(qǐng)求和工作、將工作映射到節(jié)點(diǎn)內(nèi)部等等。圖示如下:
![](/d/20211018/89098adcadf9c2a62b7170e473e004ec.gif)
監(jiān)控帶寬
$ apt-get install slurm
它會(huì)用字符來(lái)顯示文本圖形。
例如:
$ slurm -i interface>
$ slurm -i eth1
選項(xiàng)
按 l 顯示 lx/tx 指示燈.
按 c 切換到經(jīng)典模式.
按 r 刷新屏幕.
按 q 退出.
控制節(jié)點(diǎn)
在控制節(jié)點(diǎn)和計(jì)算結(jié)點(diǎn)分別安裝 slurm 包,這個(gè)包里面既含有控制節(jié)點(diǎn)需要的 slurmctld 也含有計(jì)算結(jié)點(diǎn)需要的 slurmd:
# apt-get install slurm-llnl
控制節(jié)點(diǎn)和計(jì)算結(jié)點(diǎn)之間需要通信,通信就需要認(rèn)證,slurm 支持兩種認(rèn)證方式:Brent Chun’s 的 authd 和 LLNL 的 MUNGE,MUNGE 是專為高性能集群計(jì)算打造的,這里我們選用 MUNGE,生成 key 后啟動(dòng) munge 認(rèn)證服務(wù):
# /usr/sbin/create-munge-key
Generating a pseudo-random key using /dev/urandom completed.
# /etc/init.d/munge start
使用 SLURM Version 2.3 Configuration Tool 在線配置工具生成配置文件,然后把配置文件拷貝控制節(jié)點(diǎn)以及各個(gè)計(jì)算結(jié)點(diǎn)的 /etc/slurm-llnl/slurm.conf(是的,控制節(jié)點(diǎn)和計(jì)算結(jié)點(diǎn)使用同一個(gè)配置文件)。
有了配置文件和啟動(dòng)了 munge 服務(wù)后就可以在控制節(jié)點(diǎn)啟動(dòng) slurmctld 服務(wù)了:
# /etc/init.d/slurm-llnl start
* Starting slurm central management daemon slurmctld [ OK ]
把控制節(jié)點(diǎn)生成的 munge.key 拷貝到各個(gè)計(jì)算結(jié)點(diǎn):
# scp /etc/munge/munge.key ubuntu@slurm01:/etc/munge/
登陸計(jì)算節(jié)點(diǎn)后啟動(dòng) munge 服務(wù)(注意需要改變 munge.key 的 owner 和 group 為 munge,否則會(huì)啟動(dòng)失敗)和 slurmd 服務(wù):
# ssh ubuntu@slurm01
# chown munge:munge munge.key
# /etc/init.d/munge start
* Starting MUNGE munged [ OK ]
# slurmd
在控制節(jié)點(diǎn)上(slurm00)測(cè)試一下是否順利連接到計(jì)算結(jié)點(diǎn)(slurm01),并且簡(jiǎn)單運(yùn)行一個(gè)程序 /bin/hostname 看看效果吧:
# sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
debug* up infinite 1 idle slurm01
# srun -N1 /bin/hostname
slurm01