科学计算, 生活

安装Slurm系统实现作业控制

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

一、安装Linux系统

有五个方案:

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

第一个方法使用虚拟机会比安装双系统或者子系统方便一些,又可以随时搬迁,参考博文:Ubuntu系统的安装。如果对 Docker 比较熟悉,可以考虑用第二种方法,实现最小 Linux 的环境。如果有条件的,可以采用第三个方法,即使用远端的 Linux 服务器。

二、使用Docker快速安装Slurm【推荐】

这里的 Docker 镜像参考这个:https://github.com/nathan-hess/docker-slurm,这个不是官方的 Docker 镜像文件,但安装挺方便的。也有其他的 Docker 镜像,这里暂不提及了,有需要可以网上自行搜索。

  • 拉取镜像:docker pull nathanhess/slurm:full-root
  • 启动容器:docker run -it nathanhess/slurm:full-root
  • 退出:exit
  • 查看容器:docker ps -a
  • 启动容器:docker start 容器ID
  • 进入容器:docker exec -it 容器ID /bin/bash

常用的命令可以参考:开源的应用容器引擎DockerLinux的常用命令超算中作业管理系统PBS/LSF/Slurm的常用命令

三、在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)以 root 身份新建空目录slurm-llnl:sudo mkdir /var/spool/slurm-llnl

(2)以root身份新建空目录slurm-llnl:sudo mkdir /var/run/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

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 可以参考:Centos7集群上搭建slurm作业管理系统。目前自己还没试过。

6,086 次浏览

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

发表评论

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

Captcha Code