本文共 3791 字,大约阅读时间需要 12 分钟。
Torque(OpenPBS 的后继)是一个开源的资源管理系统,用于高性能计算集群的作业管理与调度,现在属于 AdaptiveComputing 公司,可到 http://www.adaptivecomputing.com/support/download-center/torque-download/ 下载。torque 由三个服务组成 pbs_server, pbs_mom, pbs_sched: pbs_mom 是客户端资源监视器,负责监视各客户节点(计算节点)的资源使用情况
pbs_sched 是任务调度器(torque 自带的这个调度器功能比较简单有限,经常不用它而搭配更强大的 maui)
可见,pbs_server 和 pbs_sched 都要装在管理节点(服务器)上,而 pbs_mom 要装到每一个计算节点上(如果管理节点不用于计算,可以不装)
这里以 torque 3.0.6 的安装为例 (目前最新的版本是 4.1.2)。
1. 确保安装了 readline, tk/tcl, pam 的开发文件
yum install readline-devel tk-devek tcl-devel pam-devel
2. 解包,配置: configure --enable-docs --with-rcp=scp --enable-syslog --enable-gui
其实,至少对 3.0.6 版,docs, scp 和 gui 都是默认的,只是若没有 tk/tcl,则 gui 装不了,如果没有 readline-devel, readline 功能也装不上。
3. 编译,安装: make && make install
需注意的是,这样只是在服务器端安装上了所有组件,但在计算节点上还要安装客户端,如果到每个机子上都编译一遍显然很麻烦,好在 torque 提供了多种解决方式,有三种:
<1>. 如果源码是放在共享目录(如NFS)下,那么可以直接到计算节点上执行如下命令即可
make install_mom install_clients
<2>. 可以在 make 编译完之后执行 make packages,他会生成如下6个安装包
torque-package-clients-linux-x86_64.sh torque-package-devel-linux-x86_64.sh
torque-package-doc-linux-x86_64.sh
torque-package-gui-linux-x86_64.sh
torque-package-mom-linux-x86_64.sh torque-package-server-linux-x86_64.sh
可以把 clients 和 mom 对应的两个包传到每个计算节点上,然后运行如下命令安装
torque-package-client-linux-x86_64.sh --install
torque-package-mom-linux-x86_64.sh --install
<3>. configure 之后可以不 make,直接 make rpm,会在 ~/rpmbuild/RPMS/x86_64/ 下生成如下rpm安装包,对与服务器节点,可以都安装,对于客户端,应该只安装 torque-client 和 torque 就行了。
torque-3.0.6-1.cri.x86_64.rpm
torque-client-3.0.6-1.cri.x86_64.rpm
torque-debuginfo-3.0.6-1.cri.x86_64.rpm
torque-devel-3.0.6-1.cri.x86_64.rpm
torque-scheduler-3.0.6-1.cri.x86_64.rpm
torque-server-3.0.6-1.cri.x86_64.rpm
4. 其实 上面并没有完全安装完毕,因为如果不用 rpm 方式装的话,还需要手动把服务启动脚本放到 /etc/init.d 下, 服务启动脚本在 contrib/init.d 下。服务器端把
contrib/init.d 下的 pbs_server, pbs_mom(视该节点是否作为计算节点而定), pbs_sched 拷到 /etc/init.d 下,并设置开机启动: chkconfig pbs_sched on (如果确定使用 torque 自带的调度器就开启它) chkconfig pbs_mom on (如果服务器节点也做计算就开启它) 而在计算节点上,只需将 contrib/init.d/pbs_mom 拷到 /etc/init.d 下并 至此才算安装完毕。程序文件装在了 /usr/local 下,配置则文件位于 /var/spool/torque 下 下面说下简单的配置过程:
1. 在安装目录下运行如下命令,将 root 设为 TORQUE 的管理账户
pbs_server -t create # 以初始化方式启动服务器,清除并重新生成
/var/spool/torque/server_priv 目录 qterm # 然后终止服务。这里只是为了初始化,配置好后再启动服务。
3. 配置 /var/spool/torque/server_priv/nodes 文件,指定哪些节点作为计算节点,比如
每行代表一个节点,np 为该节点的cpu核数目,这里服务器n01也作为计算节点。
4. 配置好 nodes 后,启动 pbs_serverr 服务 /etc/init.d/pbs_server start 之后使用 qnodes 命令就可以显示有哪些节点可用了。不过此时所有节点的状态都还是 down 呢,因为相应计算节点上的 pbs_mom 服务还没启动呢。
5. 计算节点的配置,首先设定服务器,将服务器名称写入 /var/spool/torque/server_name 文件中,这里是 n01,不过这步一般已经在安装的时候就已经是这样了,检查一下即可。然后其他配置内容写入文件 /var/spool/torque/mom_priv/config,比如:
$pbsserver n01 # note: hostname running pbs server
$logevent 255 # bitmap of which events to log
$usecp n01:/home /home # 指定使用 cp 而不是 rcp/scp 来复制文件的目录,一般针对nfs文件系统
$ideal_load 3 # 如果是四核节点,当 load average 小于3时状态变为 free
$max_load 3 # 如果是四核节点,当 load average 大于3时状态变为 busy
# load average 可用 uptime 命令查看,表示系统负载情况,一般N个物理核的系统满负载为N。
其他配置参数可参见使用手册。然后启动 pbs_mom 服务,再运行 qnodes 的话则可以看出三个节点状态都是 free 了。
6. 然后就可以创建一个队列了,比如叫 myqueue,进入 qmgr 交互界面,如下设置
create queue myqueue queue type=execution
set server default queue=myqueue
set queue myqueue started=true
set queue myqueue enabled=true
set server scheduling=true
然后可以提交一个命令试试看了,注意,要用普通用户提交命令,比如
然后 qstat 查看,就能看到这个任务了,只是一直在排队,没有运行,什么原因?
7. 原来是没有启动调度器 pbs_sched,没有调度,当然一直排队傻等了。开启 pbs_sched 后,再提交就会运行了。但发现只有服务器节点 n01 能提交任务,其他的则不行。如果需要在 n02 上提交任务,需要如下设置
qmtr -c 'set server submit_hosts +=n02'
不过,到目前为止还有一个奇怪的地方,就是使用 qstat 查看任务状态时,普通用户在任何节点上都能看,而 root 却只能在服务器节点上查看,如果 root 在计算节点上运行 qstat,没有任何输出,不知什么原因,难道是 bug?
1. 如果修改了 /var/spool/torque/mom_priv/config 的设置,要重启 pbs_mom 服务才有效。 2. 如果重启了 pbs_server,那么各节点上要重启 pbs_mom 才能正常工作。 转载地址:http://niuli.baihongyu.com/