說明:
- 目前Ubuntu18的apt管理器安裝默認只有slurm17,但在運行時會出現錯誤,如“srun: fatal: ../../../src/api/step_launch.c:1038 step_launch_state_destroy: pthread_mutex_destroy(): Device or resource busy”,判斷可能是源碼的問題,但由於apt只有slurm17,因此需要通過源碼安裝。log如下:
srun: fatal: ../../../src/api/step_launch.c:1038 step_launch_state_destroy: pthread_mutex_destroy(): Device or resource busy
slurm.pl: 1 / 40 failed, log is in projects/seame/exp/mono0a/log/acc.9.*.log
- 本文只包含單節點slurm控制節點和計算節點的安裝和配置。
環境:
- 主機:dell-PowerEdge-T630
- 系統:Ubuntu 18.04.2 LTS (GNU/Linux 4.18.0-25-generic x86_64)
源碼下載:
- 源碼下載頁面:https://www.schedmd.com/downloads.php
- Slurm 19.05:https://download.schedmd.com/slurm/slurm-19.05.1-2.tar.bz2
參考:
安裝:
step1:相關包的安裝:
$ apt-get update
$ apt-get install git gcc make ruby ruby-dev libpam0g-dev libmariadb-client-lgpl-dev libmysqlclient-dev $ gem install fpm
- 使用gem安裝fpm,fpm后面有對源碼打包的用處,不能少。
- 安裝munge,此處不詳述。
step2:克隆
mknoxnv的倉庫
$ cd /storage
$ git clone https://github.com/mknoxnv/ubuntu-slurm.git
step3:下載源碼包,編譯,安裝。
$ cd /storage
$ wget https://download.schedmd.com/slurm/slurm-19.05.1-2.tar.bz2
$ tar xvjf slurm-19.05.1-2.tar.bz2 $ cd slurm-19.05.1-2 $ ./configure --prefix=/tmp/slurm-build --sysconfdir=/etc/slurm --enable-pam --with-pam_dir=/lib/x86_64-linux-gnu/security/ --without-shared-libslurm $ make $ make contrib $ make install
此處實際上並沒有安裝成功,需要對之前安裝好的目錄/tmp/slurm-biuld使用fpm打包,再用dpkg安裝。
$ cd ..
$ fpm -s dir -t deb -v 1.0 -n slurm-19.05.1 --prefix=/usr -C /tmp/slurm-build . $ dpkg -i slurm-19.05.1_1.0_amd64.deb
step4:然后建立slurm用戶,修改相關目錄的權限:
$ useradd slurm
$ mkdir -p /etc/slurm /etc/slurm/prolog.d /etc/slurm/epilog.d /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm $ chown slurm /var/spool/slurm/ctld /var/spool/slurm/d /var/log/slurm
step5:服務相關文件配置
復制服務相關文件
$ cd /storage
$ cp ubuntu-slurm/slurmctld.service /etc/systemd/system/ $ cp ubuntu-slurm/slurmd.service /etc/systemd/system/ $ cp ubuntu-slurm/slurm.conf /etc/slurm
enable service and start service.
$ systemctl daemon-reload
$ systemctl enable slurmctld
$ systemctl start slurmctld
$ systemctl enable slurmd
$ systemctl start slurmd
在此處一般無法正常開啟服務,很大原因是配置文件沒有完成,或是參數沒有配置對。請看下一部分描述配置文件相關配置、配置寫法,以下的參數並不完全。
配置:
- 在當前情況下,ControlMachine需要寫機器名字。(也可以是IP)
- SlurmUser需要是slurm
- StateSaveLocation、SlurmdSpoolDir、SlurmctldPidFile、SlurmdPidFile、SlurmctldLogFile、SlurmdLogFile中的目錄需要跟前面建立的目錄一致,很多人有着不同的配置,有着不同的目錄,但是自己的當前情況要與配置文件一致。
- SelectType、SelectTypeParameters的配置可以參考官方手冊。https://slurm.schedmd.com/
- 計算節點的聲明:NodeName=dell-PowerEdge-T630 CPUs=56 Sockets=2 CoresPerSocket=14 ThreadsPerCore=2 State=UNKNOWN Gres=gpu:4,可以使用slurmd -C命令查看當前計算機的相關參數。
ClusterName=compute-cluster
ControlMachine=dell-PowerEdge-T630 SlurmUser=slurm SlurmctldPort=6817 SlurmdPort=6818 AuthType=auth/munge StateSaveLocation=/var/spool/slurm/ctld SlurmdSpoolDir=/var/spool/slurm/d SwitchType=switch/none MpiDefault=none SlurmctldPidFile=/var/run/slurmctld.pid SlurmdPidFile=/var/run/slurmd.pid PluginDir=/usr/lib/slurm ReturnToService=1 Proctracktype=proctrack/linuxproc CacheGroups=0 ReturnToService=2 SelectType=select/cons_res SelectTypeParameters=CR_Core,CR_ONE_TASK_PER_CORE,CR_CORE_DEFAULT_DIST_BLOCK TaskPlugin=task/affinity TaskPluginParam=Sched KillOnBadExit=1 # TIMERS SlurmctldTimeout=300 SlurmdTimeout=300 InactiveLimit=0 MinJobAge=300 KillWait=30 Waittime=0 # SCHEDULING SchedulerType=sched/backfill FastSchedule=1 # LOGGING SlurmctldDebug=3 SlurmctldLogFile=/var/log/slurmctld.log SlurmdDebug=3 SlurmdLogFile=/var/log/slurmd.log JobCompType=jobcomp/none # ACCOUNTING JobAcctGatherType=jobacct_gather/linux # COMPUTE NODES GresTypes=gpu NodeName=dell-PowerEdge-T630 CPUs=56 Sockets=2 CoresPerSocket=14 ThreadsPerCore=2 State=UNKNOWN Gres=gpu:4 PartitionName=mipitalk Nodes=ALL Default=YES MaxTime=INFINITE State=UP