HPCCh4JobScheduleTorqueConfigPractice.docx
《HPCCh4JobScheduleTorqueConfigPractice.docx》由会员分享,可在线阅读,更多相关《HPCCh4JobScheduleTorqueConfigPractice.docx(16页珍藏版)》请在冰豆网上搜索。
HPCCh4JobScheduleTorqueConfigPractice
Torque安装调试实验
版本
状态
变化内容说明
编制
审核
批准
发布日期
V1.0
C
新增
闫伟
2012.08.16
注:
变化状态:
C—创建,M—修改,D—删除
目录
一、资源管理系统简介1
二、TORQUE软件架构简介2
三、实验环境2
3.1软件环境2
3.2实验拓扑3
3.3配置清单3
3.4预配置(至关重要)3
四、Headnode安装配置3
4.1下载TORQUE软件包3
4.2创建安装目录3
4.3编译安装3
4.4设置环境变量4
4.5将TORQUE加载到系统服务4
4.6serverdb初始化5
4.7修订nodes文件5
4.8修订工作目录权限6
五、ComputeNode安装配置6
5.1软件包安装6
5.2加载守护进程6
5.3配置守护进程信任关系6
5.4启动守护进程7
5.5修订../torque/spool/目录访问权限7
六、验证配置结果7
七、作业提交与管理7
7.1创建队列7
7.2编写作业脚本8
7.3验证作业提交结果及运行结果9
一、资源管理系统简介
Resourcesmanagersprovidethelow-levelfunctionalitytostart,hold,cancel,andmonitorjobs.Withoutthesecapabilities,ascheduleralonecannotcontroljobs.
WhileTORQUEisflexibleenoughtohandleschedulingaconferenceroom,itisprimarilyusedinbatchsystems.Batchsystemsareacollectionofcomputersandotherresources(networks,storagesystems,licenseservers,andsoforth)thatoperateunderthenotionthatthewholeisgreaterthanthesumoftheparts.Somebatchsystemsconsistofjustahandfulofmachinesrunningsingle-processorjobs,minimallymanagedbytheusersthemselves.Othersystemshavethousandsandthousandsofmachinesexecutingusers'jobssimultaneouslywhiletrackingsoftwarelicensesandaccesstohardwareequipmentandstoragesystems.
Poolingresourcesinabatchsystemtypicallyreducestechnicaladministrationofresourceswhileofferingauniformviewtousers.Onceconfiguredproperly,batchsystemsabstractawaymanyofthedetailsinvolvedwithrunningandmanagingjobs,allowinghigherresourceutilization.Forexample,userstypicallyonlyneedtospecifytheminimalconstraintsofajobanddonotneedtoknowtheindividualmachinenamesofeachhostonwhichtheyarerunning.Withthisuniformabstractedview,batchsystemscanexecutethousandsandthousandsofjobssimultaneously.(懒得翻译,看不懂去死)
二、TORQUE软件架构简介
TORQUE集群由一个headnode和多个ComputeNodes构成,headnode运行pbs_server守护进程,其他computenode则运行pbs_mom守护进程,用于提交和管理作业的客户端指令程序可以安装在任何主机上(可以是一台用户端PC,无需运行pbs_server或pbs_mom进程)。
headnode上还需要运行一个作业调度进程(schedulerdaemon),scheduler进程与pbs_server进程交互,以判定computenodes资源使用情况以及生成节点作业分配策略。
TORQUE集成一个简单的FIFO调度策略,同时也提供代码以帮助用户构建高级调度策略。
多数TORQUE用户都选择使用高级调度策略插件,例如Maui或Moab。
用户可以使用qsub指令将作业提交到pbs_server,当pbs_server收到一个新的作业时,该进程会通知scheduler进程,scheduler从集群中寻找可以分配用于计算该作业的节点资源,并将找到的节点清单发送给pbs_server进程。
psb_server进程根据scheduler提供的信息将待计算的作业提交到节点清单中的第一个节点并让该节点加载该作业,该节点被指定为该作业的主要执行者,由该节点负责调用清单中其他节点协同并行处理该作业,该节点称为MotherSuperior,协同执行该作业的其他节点则称为sistermoms。
三、实验环境
3.1软件环境
OS:
CentOS6.3x86_64
TORQUE:
4.1.0
3.2实验拓扑
3.3配置清单
角色
属性
软件清单
Headnode
Hostname=pbs_server,ip=192.168.100.130
TORQUE(pbs_server\pbs_sched\trqauthd)
ComputeNode
Hostname=pbs_mom_x,ip=192.168.100.13x
TORQUE(pbs_mom\trqauthd)
3.4预配置(至关重要)
创建一个非root帐号(本例中用admin),配置基于该帐号配置sshd服务,保证headnode和Computenode间可以用该帐号进行无密码互访(双向访问都使用密钥对,不需输密码)。
TORQUE提交作业的命令qsub不能以root帐号运行,故,该帐号将用作提交任务,同时TORQUE作业队列是和非root帐号做一对一绑定的,创建队列时也需要该帐号。
因未配置NIS服务,所有节点都需创建该帐号。
对于多用户共享的集群,需要创建多个此类帐号。
【7.2节运行qsub命令前,全部使用root帐号进行操作】
四、Headnode安装配置
选择集群中一台主机作为TORQUEHeadnode,该节点上通过运行pbs_server\pbs_sched\trqauth守护进程监视和控制集群中其他computenodes。
4.1下载TORQUE软件包
通过web浏览器登录到以上链接页面,寻找相应版本软件包下载链接,本试验中使用当前最新版本4.1.0,使用wget命令下载,得到如下文件:
torque-4.1.0.tar.gz
4.2创建安装目录
#mkdir/opt/torque
4.3编译安装
解压torque-4.1.0.tar.gz,进入解压目录,准备编译安装。
#./configure--prefix=/opt/torque
<等待>
#make
<等待>
#makeinstall
#######################################################################################
默认情况下,执行makeinstall后安装程序会自动创建/var/spool/torque,该路径是TORQUE的家目录,该家目录下有一系列子目录,包括server_priv/、server_logs/、mom_priv/、mom_logs/,以及TORQUE运行时需要调用的其他配置文件。
#######################################################################################
4.4设置环境变量
#vim/etc/bashrc
exportTORQUE=/opt/torque
exportLD_LIBRARY_PATH=$TORQUE/lib
exportPATH=$TORQUE/bin:
$TORQUE/sbin:
$PATH
使环境变量生效
#source/etc/bashrc
4.5将TORQUE加载到系统服务
TORQUE作为系统服务以便headnode重启后该进程自行启动,为可选步骤。
在TORQUE的安装源下已预设相关进程的配置文件,导入系统的/etc/init.d/路径下并通过chkconfig–add加载即可。
文件如下:
pbs_server、pbs_mom、pbs_sched
#cd../torque4.1.0/contrib/init.d///找到以上三个文件
#cptrqauthd/etc/init.d/
#chkconfig--addtrqauthd
#servicetrqauthdstart
#######################################################################################
trqauthd是TORQUE集群headnode和computenode都需要运行的守护进程,用于授权pbs_mom进程与pbs_server进程之间建立互信连接。
该进程已经启动就会驻留在系统内存,客户端程序利用该进程调用本机loopback接口的15005端口通信。
该进程支持多线程执行机制,可以处理大量并发请求。
#######################################################################################
#cppbs_sched/etc/init.d/
#chkconfig--addpbs_sched
#servicepbs_schedstart
#######################################################################################
pbs_sched是TORQUE集群中headnode的另外一个核心守护进程,用于监控computenode的运行状态,根据pbs_server传递过来的用户作业脚本要求在集群中寻找可用计算节点并反馈给pbs_server进程。
#######################################################################################
#cppbs_server/etc/init.d/
#chkconfig--addpbs_server
#servicepbs_serverstart
#######################################################################################
pbs_server是TORQUE集群中headnode的核心守护进程,用于接收用户提交的作业请求,根据pbs_sched进程提供的可用节点资源清单进行作业分发和回收。
#######################################################################################
#cppbs_mom/etc/init.d///该步骤可选,参看下面注释
#chkconfig--addpbs_mom
#servicepbs_momstart
#######################################################################################
headnode可以有双重身份,也可以通过运行pbs_mom参与计算,在大型集群中最好不要让headnode参与执行计算任务,这样会导致该节点CPU利用率过高影响用户操作该节点的响应速度。
#######################################################################################
4.6serverdb初始化
TORQUE加目录下包含pbs_server的配置文件以及相关信息,其中serverdb文件描述pbs_server配置属性以及队列信息,要运行pbs_server必须先对serverdb做初始化。
TORQUE官方推荐的初始化方法是运行./torque.setup脚本,该脚本文件在TORQUE安装包内提供
#./torque.setupadmin##此处需附带一个用户名
#######################################################################################
torque.setup脚本是通过调用pbs_server–t指令来初始化serverdb,附加的帐号将被指定为TORQUE的进程管理员和执行者。
该用户名不能为root。
#######################################################################################
初始化完成后重启pbs_server服务
#qterm//停用pbs_server
#servicepbs_serverstart//重新启用pbs_server
#servicepbs_schedrestart//重新启用pbs_sched
4.7修订nodes文件
TORQUE配置文件都存放在TORQUE_HOME环境下,2.1之后的版本TORQUE_HOME的默认路径是/var/spool/torque/。
pbs_server必须能够从网络中发现识别可以受控的computenodes,并将这些节点列入TORQUE_HOME/server_priv/nodes文件中。
通常只需使用一行代码标注这些computenode的主机名即可,当然,也可以为每个节点添加附加属性。
nodes文件语法格式;
node-name[:
ts][np=][gpus=][properties]
[:
ts]参数标记节点为timeshared,该类节点会被列入pbs_server的管控清单并汇报节点状态,但pbs_server不会给该类节点分发作业。
[np=]参数定义节点的处理核心数量,该参数是个虚拟数值,可以不严格按照节点的实际内核数量来设定。
如果pbs_server设定了auto_node_np属性,则np参数可以自动被server检测到。
设置命令为:
qmgr-csetserverauto_node_np=True
[gpus=]参数用于标记节点附加的GPU数量,数值也可以不严格按照节点GPU实际数量来填写。
[properties]参数允许用设定特殊的字符串对节点进行标记,字串必须以字母开头。
Example:
pbs_mom_1np=4
pbs_mom_2np=4gpus=1
pbs_mom_3np=4
4.8修订工作目录权限
详见5.5节。
五、ComputeNode安装配置
5.1软件包安装
在一个集群中Computenode数量通常很多,可以逐个节点进行源代码安装,安装路径及过程同pbs_server。
安装完成后设定TORQUE环境变量,过程与pbs_server设定相同。
(也可以在headnode上用makepackage命令生成自解压文件*.sh,然后拷贝的Computenode上解压运行,此处不做介绍。
)
5.2加载守护进程
安装完成后,
将/torque-4.1.0/contrib/init.d/pbs_mom文件拷贝到/etc/init.d下
#cpcontrib/init.d/pbs_mom/etc/init.d//文件复制
#chkconfig--addpbs_mom//将pbs_mom加载为系统进程
将/torque-4.1.0/contrib/init.d/trqauthd文件拷贝到/etc/init.d下
#cpcontrib/init.d/trqauthd/etc/init.d//文件复制
#chkconfig--addtrqauthd//将trqauthd加载为系统进程
5.3配置守护进程信任关系
Headnode要管理到集群中受控的Computenode,一方面在headnode上要修改nodes文件,添Computenode主机名,另一方面还要在Computenode上修改server_name文件,以建立pbs_mom和pbs_server进程的信任关系。
该文件初始化内容是本机的hostname,只需修改成headnode的主机名即可。
#vim/var/spool/torque/server_name
pbs_server
5.4启动守护进程
#servicetrqauthdstart//激活trqauthd进程
#servicestart//激活pbs_mom进程
5.5修订../torque/spool/目录访问权限
Headnode分发过来的作业执行过程中在每个节点都会生成运行结果和错误的日志文件(参考7.2节pbs脚本文件中###Outfiles内容),该临时文件最终会被computenode以scp的方式回传到headnode,由于提交作业时用的是非root帐号,会出现因帐号权限不足而无法访问目标目录或文件的情形,被调用暂存这些文件的目录是/var/spool/torque/spool/,需将其权限修改为1777。
#chmod1777/var/spool/torque/spool
computenode在任务执行结束时scp回传文件到headnode上提交作业的工作路径时同样会遇到非root帐号访问权限不够的问题,在headnode上要把提交作业的工作目录权限修改成1777。
(若headnode和computenode不能无密码互访也会失败)
#chmod1777/usr/app/example/job1///本例工作路径
六、验证配置结果
以上配置完成后,在headnode上可以查看到归其管理的Computenode状态,
通过pbsnodes–a命令查看配置是否成功,
#pbsnodes–a
pbs_mom_1
state=free
np=2
ntype=cluster
status=*****//大串字符
mom_service_port=15002
mom_manager_port=15003
GPUS=0
pbs_mom_2
state=free
np=2
ntype=cluster
status=*****//大串字符
mom_service_port=15002
mom_manager_port=15003
GPUS=0
七、作业提交与管理
7.1创建队列
TORQUE集群处理多用户并发提交多任务的机制是采用队列调度的方式,默认集成了FIFO这一最基本的调度策略,并自行创建了一个名为batch的队列,用户可以根据自身需要创建9个队列供多用户使用。
在运行pbs-Server的Headnode上通过qmgr命令创建队列,首先创建个队列名,然后配置其属性,详见下例:
[root@pbs_server~]#qmgr
createqueueq1//创建队列,队列名称q1
setqueueq1queue_type=Execution//队列类型为e,
//队列类型分为Execution和Route,e为执行,r为按属性转移任务到其他队列或节点
setqueueq1Priority=40//设定队列优先级,默认为0
setqueueq1resources_max.cput=96:
00:
00//资源占用时间上限,逾期终止
setqueueq1resources_min.cput=00:
00:
01//资源占用时间下限
setqueueq1resources_default.cput=96:
00:
00//默认占用资源时间
setqueueq1enabled=True//
setqueueq1started=True//
7.2编写作业脚本
TORQUE集群的通常需要通过编写脚本来提交作业,脚本中通过#PBS命令来编写,脚本可以使用用户平时运行程序时习惯使用的脚本语言。
当任务被提交后scheduler通过读取脚本中的#PBS指令确定作业的属性。
例如,当前有用户amdin登录到headnode,他将已编译好的作业“MPI_PI”文件放到/usr/app/examples/job1/下,该路径将作为该用户提交作业的工作目录。
该用户提交的作业将被拍入7.1节建立的“q1”队列,作业的运行结果将输出到job1.log文件,错误日志则保存到job1.err中,典型脚本如下:
#!
/bin/bash
###Jobname
#PBS-Njob1-1//该作业命名为job1-1
###Declarejobnon-rerunable
#PBS-rn//该作业不可重复执行
###Outputfiles//输出文件会