之前这篇博文“使用Python实现自动先后运行程序”,可以实现一次性排队运行多个任务,但这个方法不可以临时取消或者修改中间的某个任务,而且只是串行的,不能并行。这里通过Linux系统中的Slurm任务调度系统(PBS命令)实现作业的提交排队或并行运行,会更加灵活,缺点是环境的安装稍微麻烦了些。
一、安装Linux系统
有四个方案:
- 安装虚拟机【推荐】
- 使用远端的Linux服务器【推荐】
- 安装双系统
- 如果是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的常用命令。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】