TORQUE
TORQUE 是一个资源管理器,提供对批处理作业和分布式计算节点的控制。基本上,人们可以建立一个家庭或小型办公室 Linux 集群,并使用此软件排队作业。一个集群由一个主节点和多个计算节点组成。主节点运行 torque-server 守护进程,计算节点运行 torque-client 守护进程。主节点还运行一个调度器守护进程。
安装
必备条件
/etc/hosts
确保集群中所有计算机上的 /etc/hosts
文件都包含集群中每台计算机的主机名。例如,集群由 3 台计算机组成:mars、phobos 和 deimos。
192.168.0.20 mars 192.168.0.21 phobos 192.168.0.22 deimos
防火墙配置 (如果已安装)
确保为所有使用 TORQUE 的机器打开 TCP。
默认情况下,pbs_server (服务器) 和 pbs_mom (客户端) 使用 TCP 和 UDP 端口 15001-15004。如果配置了特权端口 (默认配置),pbs_mom (客户端) 还使用 UDP 端口 1023 及以下端口。
NFS
从技术上讲,不需要使用 NFS,但这样做可以简化整个过程。强烈建议在服务器或另一台机器上使用 NFS 共享,以简化共享通用构建磁盘空间的过程。
配置
服务器 (主节点) 配置
在主节点/调度器上按照以下步骤操作。
编辑 /var/spool/torque/server_name
以命名主节点。建议与 /etc/hostname
中的主机名匹配,以简化操作。
创建并配置 torque 服务器
# pbs_server -t create PBS_Server localhost.localdomain: Create mode and server database exists, do you wish to continue y/(n)?y
然后通过运行以下命令启动 trqauthd
# trqauthd
此处提供了一组最少的选项。调整第一行,将 “mars” 替换为在 /var/spool/torque/server_name
中输入的主机名
qmgr -c "set server acl_hosts = mars" qmgr -c "set server scheduling=true" qmgr -c "create queue batch queue_type=execution" qmgr -c "set queue batch started=true" qmgr -c "set queue batch enabled=true" qmgr -c "set queue batch resources_default.nodes=1" qmgr -c "set queue batch resources_default.walltime=3600" qmgr -c "set server default_queue=batch"
保留队列中已完成的作业一段时间可能会很有用。
qmgr -c "set server keep_completed = 86400"
这里,86400 秒 = 24 小时,之后作业将自动从队列中删除。可以使用 qstat 上的 -f
开关查看从队列中删除的作业的完整日志
qstat -f
使用此命令验证服务器配置
# qmgr -c 'p s'
编辑 /var/spool/torque/server_priv/nodes
,添加所有计算节点。同样,建议与 LAN 上计算机的主机名匹配。语法为 HOSTNAME np=x gpus=y properties
- HOSTNAME=计算机的主机名
- np=处理器数量
- gpus=GPU 数量
- properties=注释
仅主机名是必需的,所有其他字段都是可选的。
示例
mars np=4 phobos np=2 deimos np=2
- 可以在同一台计算机上同时运行服务器和客户端。
- 重新运行
pbs_server -t create
可能会删除此节点文件。
重启服务器,新的选项将被加载。
客户端 (计算节点) 配置
在集群中的每个计算节点上按照以下步骤操作。
编辑 /var/spool/torque/mom_priv/config
以包含一些基本信息来标识服务器
$pbsserver mars # note: this is the hostname of the headnode $logevent 255 # bitmap of which events to log
重启服务器
应该就是这样了。现在重启服务器,以便设置生效。
# killall -s 9 pbs_server # pbs_server
启动客户端
为了启动客户端,请在每个客户端上运行以下命令,包括作为客户端的服务器
# pbs_mom
验证集群状态
要检查集群的状态,请发出以下命令
$ pbsnodes -a
如果节点正常运行,则应指示它已准备好接收作业,并回显 state 为 free。如果节点无法工作,它将报告 down 状态。
示例输出
mars state = free np = 4 ntype = cluster status = rectime=1308479899,varattr=,jobs=0.localhost.localdomain,state=free,netload=1638547057, gres=,loadave=2.69,ncpus=4,physmem=8195892kb,availmem=7172508kb,totmem=8195892kb, idletime=24772,nusers=1,nsessions=5,sessions=1333 1349 1353 1388 9095, uname=Linux mars 2.6.39-ck #1 SMP PREEMPT Sat Jun 18 14:19:01 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 2 phobos state = free np = 2 ntype = cluster status = rectime=1308479933,varattr=,jobs=,state=free,netload=1085755815, gres=,loadave=2.84,ncpus=2,physmem=4019704kb,availmem=5753552kb,totmem=6116852kb, idletime=7324,nusers=2,nsessions=6,sessions=1565 1562 1691 1716 1737 1851, uname=Linux phobos 2.6.37-ck #1 SMP PREEMPT Sun Apr 3 17:16:35 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 1 deimos state = free np = 2 ntype = cluster status = rectime=1308479890,varattr=,jobs=2.localhost.localdomain,state=free,netload=527239670, gres=,loadave=0.52,ncpus=2,physmem=4057808kb,availmem=3955624kb,totmem=4057808kb, idletime=644,nusers=1,nsessions=1,sessions=865, uname=Linux deimos 2.6.39-ck #1 SMP PREEMPT Sat Jun 11 12:36:21 EDT 2011 x86_64,opsys=linux mom_service_port = 15002 mom_manager_port = 15003 gpus = 1
排队作业
通过 qsub 命令完成向集群排队作业。
一个简单的测试是简单地运行 sleep
$ echo "sleep 30" | qsub
通过下面描述的 qstat 命令检查队列的状态。此时,作业的状态将为“Q”,这意味着已排队。要启动它,请运行调度器
# pbs_sched
可以修改 torque-server systemd 守护进程以在启动时激活 pbs_sched。
qsub 的另一个用途是命名作业并排队脚本
$ qsub -N x264 /home/facade/bin/x264_HQ.sh
另一个示例可以使用包装器脚本自动批量创建和排队工作。
检查作业状态
qstat
用于检查工作状态。
$ qstat
Job id Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 13.localhost generic-i686.pbs facade 00:05:06 R batch 14.localhost atom-i686.pbs facade 00:03:09 R batch 15.localhost core2-i686.pbs facade 00:01:02 R batch 16.localhost k7-i686.pbs facade 0 Q batch 17.localhost k8-i686.pbs facade 0 Q batch 18.localhost k10-i686.pbs facade 0 Q batch 19.localhost p4-i686.pbs facade 0 Q batch 20.localhost pentm-i686.pbs facade 0 Q batch 21.localhost ...ic-x86_64.pbs facade 0 Q batch 22.localhost atom-x86_64.pbs facade 0 Q batch 23.localhost core2-x86_64.pbs facade 0 Q batch 24.localhost k8-x86_64.pbs facade 0 Q batch 25.localhost k10-x86_64.pbs facade 0 Q batch
附加 -n
开关以查看哪些节点正在执行哪些作业。
$ qstat -n
localhost.localdomain: 405.localhost.lo facade batch i686-generic 3035 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 406.localhost.lo facade batch i686-atom 5768 1 0 -- 01:00 C 00:46 phobos/1+phobos/0 407.localhost.lo facade batch i686-core2 22941 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 408.localhost.lo facade batch i686-k7 10152 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 409.localhost.lo facade batch i686-k8 29657 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 410.localhost.lo facade batch i686-k10 16838 1 0 -- 01:00 C 00:12 mars/3+mars/2+mars/1+mars/0 411.localhost.lo facade batch i686-p4 25340 1 0 -- 01:00 C 00:46 deimos/1+deimos/0 412.localhost.lo facade batch i686-pentm 12544 1 0 -- 01:00 R 00:20 phobos/1+phobos/0 413.localhost.lo facade batch x86_64-generic 4024 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 414.localhost.lo facade batch x86_64-atom 19330 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 415.localhost.lo facade batch x86_64-core2 2146 1 0 -- 01:00 C 00:13 mars/3+mars/2+mars/1+mars/0 416.localhost.lo facade batch x86_64-k8 17234 1 0 -- 01:00 R 00:11 mars/3+mars/2+mars/1+mars/0 417.localhost.lo facade batch x86_64-k10 -- 1 0 -- 01:00 Q -- --
参见
- 加州大学旧金山分校的 TORQUE 短课程 - 包含模板的优秀指南。
- TORQUE 管理员手册 - 很棒的资源,易于阅读。
- 波士顿学院的 Torque 用户指南 - 指南内容不多,但给出了最终用户如何使用集群的示例。对于只有一个用户提交工作的家庭集群来说,可能有点矫枉过正。
- TORQUE 邮件列表 - TORQUE 社区知识渊博,是一项关键资产。
- TORQUE 用户邮件列表存档 - 可搜索的 TORQUE 用户存档。