科学计算, 生活

安装Slurm系统(PBS命令)实现作业控制

之前这篇博文“使用Python实现自动先后运行程序”,可以实现一次性排队运行多个任务,但这个方法不可以临时取消或者修改中间的某个任务,而且只是串行的,不能并行。这里通过Linux系统中的Slurm任务调度系统(PBS命令)实现作业的提交排队或并行运行,会更加灵活,缺点是环境的安装稍微麻烦了些。

一、安装Linux系统

有四个方案:

  1. 安装虚拟机【推荐】
  2. 使用远端的Linux服务器【推荐】
  3. 安装双系统
  4. 如果是Win10系统也可以安装Linux子系统

推荐使用第一个方法,即安装虚拟机,这个安装会比双系统方便,又可以随时搬迁,参考博文:Ubuntu系统的安装。如果有条件的可以采用第二个方法,即使用远端的Linux服务器。

二、基于Ubuntu系统安装Slurm

任务调度系统有多个版本,这里选择安装Slurm,参考链接:请比较PBS,Platform LSF,SLURM,TORQUE,SGE的异同和优缺点?

这是Slurm官网的安装说明:https://slurm.schedmd.com/quickstart_admin.html,会稍微有点麻烦。

以下安装方法参考链接:Ubuntu 18.04/Mint 19 单机安装Slurm,仅适用于Ubuntu系统。另外,也可参考:Ubuntu服务器安装配置slurm (Ubuntu 22.04 LTS)

目前,个人在Ubuntu 18.04.1 LTS版本上测试成功。其他版本不一定能安装成功。

这里为了图方便,防止安装后启动错误,全程用root身份安装,尤其是在slurm.conf文件中,填写为:SlurmdUser=root,因此安装后Slurm只支持root用户使用。

1. 安装命令:

sudo apt install slurm-wlm slurm-wlm-doc -y 

2. 通过以下命令安装slurm-wlm-torque包,可实现用pbs的命令来控制Slurm,例如pbsnodes、qstat、qsub等pbs命令,前提是完成后续的配置操作,这里提前安装这个。

sudo apt install slurm-wlm-torque

3. 查看版本和信息:

slurmd -V
slurmd -C

4. 进入目录:

cd /etc/slurm-llnl

以root身份通过vim命令新建slurm.conf文件:

sudo vim slurm.conf

将以下内容填入slurm.conf文件中(修改ControlMachine、NodeName、Nodes为"slurmd -C"命令后的计算机名字;修改CPUs个数):

# 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.
#
ControlMachine=计算机名字
#ControlAddr=
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-#
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
#SlurmUser=slurm
SlurmdUser=root
StateSaveLocation=/var/spool/slurm-llnl
SwitchType=switch/none
TaskPlugin=task/none
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
FastSchedule=1
#SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=cluster
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=3
#SlurmctldLogFile=
#SlurmdDebug=3
#SlurmdLogFile=
#
#
# COMPUTE NODES
NodeName=计算机名字 CPUs=8 State=UNKNOWN
PartitionName=debug Nodes=计算机名字 Default=YES MaxTime=INFINITE State=UP

5. 新建文件夹操作:

(1)进入目录:

cd /var/spool/

以root身份新建空目录slurm-llnl:

sudo mkdir slurm-llnl

(2)进入目录:

cd /var/run/

以root身份新建空目录slurm-llnl:

sudo mkdir slurm-llnl

6. 在常用目录下,新建slurm.sh文件:

vim slurm.sh

填入以下命令集合后保存:

#!/bin/bash
/usr/sbin/create-munge-key
service munge restart
service slurmctld restart
service slurmd restart

以root身份运行(每次开机都需要通过该命令组合启动服务):

sudo sh slurm.sh

或者

#!/bin/bash
/usr/sbin/create-munge-key
systemctl restart munge
systemctl restart slurmctld
systemctl restart slurmd

服务启动后,pbs的各种命令就可以使用了。通过systemctl status slurmctld和systemctl status slurmd可查看状态。

7. 如果配置出现问题,节点不小心处于down或者offline状态。在更新配置后,如果重启服务后还不能恢复,可以试着用下面这个命令:

scontrol update NodeName=<node> State=RESUME

三、基于CentOS系统安装Slurm

在CentOS系统上安装Slurm可参考:Centos7集群上搭建slurm作业管理系统。自己还没试过。

四、提交任务

参考:Linux的常用命令超算中作业管理系统PBS/LSF/Slurm的常用命令

5,957 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code