Slurm
Slurm 是高性能计算集群的出色工作调度工具。此外,当你需要同时运行多个程序并将它们排成队列,同时确保计算机或服务器不超载时,它也是本地台式机或单台服务器上的重要工具。此外,在与其他用户共享服务器或需要通宵或连续数周运行多个工作时,它也非常有用!在这里,我将向你展示如何在使用 ubuntu单台机器上快速设置 slurm。你将不再需要为运行多个程序而编写杂乱无章的脚本,以避免超出硬件限制或与同事争论谁的程序先运行。
让我们先用 apt 安装,对于基本的单机设置,只需要控制守护程序 slurmctld 和计算节点守护程序 slurmd 这两个软件包:
$ sudo apt update -y
$ sudo apt install slurmd slurmctld -y
接下来,我们需要创建 slurm.conf 文件,配置 slurm 队列的设置方式。这里我们使用一个非常简单的文件:(请根据你的机器规格调整 COMPUTE NODES 部分,例如,如果你有 10 个内核 CPU=10,内存为 32000MB RealMemory=32000 .
# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ClusterName=localcluster
SlurmctldHost=localhost
MpiDefault=none
ProctrackType=proctrack/linuxproc
ReturnToService=2
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm-llnl/slurmd
SlurmUser=slurm
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
TaskPlugin=task/none
#
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
#
#AccountingStoragePort=
AccountingStorageType=accounting_storage/none
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
#
# COMPUTE NODES
NodeName=localhost CPUs=1 RealMemory=500 State=UNKNOWN
PartitionName=LocalQ Nodes=ALL Default=YES MaxTime=INFINITE State=UP
# chmod 755 /etc/slurm-llnl/
现在让我们用 systemd 启动 slurm:
$ sudo systemctl start slurmctld
$ sudo systemctl start slurmd
最后,将机器设置为空闲状态,以便开始排队等待作业:
$ sudo scontrol update nodename=localhost state=idle
$ sinfo
partition avail timelimit nodes state nodelist
LocalQ* up infinite 1 idle localhost
如果成功,您就看到了上面的内容,很好,您已经启动并运行了 slurm。您现在有了一个名为 LocalQ 的队列(或 slurm 行话中的 “分区”),可以向其提交工作。如果遇到任何问题,可以查看 /var/log/slurm-llnl/slurmd.log 和 /var/log/slurm-llnl/slurmctld.log 中的日志进行调试。
现在,您已经有了一个正常运行的 slurm 队列,如果需要更改配置,只需编辑 slurm.conf,然后通过 systemd 重启 slurmctld 和 slurmd 即可。关于如何使用 slurm 的更多信息,网上有很多文章。只需谷歌搜索 “如何向 slurm 提交作业”,或访问 slurm 网站。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
- https://github.com/Artlands/Install-Slurm
- https://drtailor.medium.com/how-to-setup-slurm-on-ubuntu-20-04-for-single-node-work-scheduling-6cc909574365
- https://drtailor.medium.com/how-to-quickly-set-up-openpbs-on-ubuntu-20-04-for-single-node-workload-scheduling-704140d074e8
- https://slurm.schedmd.com/documentation.html
- https://github.com/openpbs/openpbs/blob/master/INSTALL
- https://medium.com/@satishdotpatel/setup-slurm-web-for-slurm-hpc-clusters-13a9873094a1
OpenPBS
OpenPBS 是高性能计算集群的工作调度工具。此外,当你需要同时运行多个程序并将它们排成队列,同时确保计算机或服务器不超载时,它也是本地桌面或单台服务器上的重要工具。此外,在与其他用户共享服务器或需要通宵或连续数周运行多个工作时,它也非常有用!在这里,我将向你展示如何在使用 ubuntu 20.04单台机器上快速设置 OpenPBS 。你将不再需要为运行多个程序而编写复杂的脚本,以避免超出硬件限制或与同事争论谁的程序先运行。
- 安装 postgresql
$ sudo apt install gcc make libtool libhwloc-dev libx11-dev \libxt-dev libedit-dev libical-dev ncurses-dev perl \postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \automake g++
$ sudo apt install expat libedit2 postgresql python3 postgresql-contrib sendmail-bin \sudo tcl tk libical3 postgresql-server-dev-all
- 下载 OpenPBS:
打开:https://www.openpbs.org/Download.aspx#download
点击:openpbs_23.06.06.ubuntu_20.04.zip
- 安装OpenPBS
$ unzip openpbs_23.06.06.ubuntu_20.04.zip
$ cd openpbs_23.06.06.ubuntu_20.04
$ sudo apt install ./openpbs-server_23.06.06-1_amd64.deb ./openpbs-devel_23.06.06-1_amd64.deb ./ openpbs-debuginfo_23.06.06-1_amd64.deb
$ sudo /opt/pbs/libexec/pbs_postinstall
# 现在应将 PBS_START_MOM 的值从 0 改为 1
$ sudo vi /etc/pbs.conf
PBS_EXEC=/opt/pbs
PBS_SERVER=noteboo
PBS_START_SERVER=1
PBS_START_SCHED=1
PBS_START_COMM=1
PBS_START_MOM=1
PBS_HOME=/var/spool/pbs
PBS_CORE_LIMIT=unlimited
PBS_SCP=/usr/bin/scp
$ sudo vi /etc/hosts
172.16.36.204 noteboo localhost
$ sudo chmod 4755 /opt/pbs/sbin/pbs_iff /opt/pbs/sbin/pbs_rcp
$ sudo systemctl start pbs.service
- 验证
现在,让我们使用 pbsnode -a 命令确认一切正常,本地计算机已注册到 PBS:
$ . /etc/profile.d/pbs.sh
$ qstat -B
Server Max Tot Que Run Hld Wat Trn Ext Status
---------------- ----- ----- ----- ----- ----- ----- ----- ----- -----------
noteboo 0 0 0 0 0 0 0 0 Active
$ pbsnodes -a
notebooMom = noteboontype = PBSstate = freepcpus = 16resources_available.arch = linuxresources_available.host = notebooresources_available.mem = 16052476kbresources_available.ncpus = 16resources_available.vnode = notebooresources_assigned.accelerator_memory = 0kbresources_assigned.hbmem = 0kbresources_assigned.mem = 0kbresources_assigned.naccelerators = 0resources_assigned.ncpus = 0resources_assigned.vmem = 0kbresv_enable = Truesharing = default_sharedlicense = llast_state_change_time = Sat Jan 18 14:16:17 2025last_used_time = Sat Jan 18 14:21:57 2025$ echo "sleep 60" | qsub
2.noteboo
$ qstat -anoteboo:Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
2.noteboo andrew workq STDIN 162200 1 1 -- -- R 00:00
现在您的服务器上已经有了一个正常运行的 OpenPBS 队列系统。如果您想通过 PBS 脚本提交作业,只需在谷歌上搜索 PBS 提交脚本示例,就会出现大量指南/示例。可在OpenPBS主页,了解更多信息 https://www.openpbs.org。