文档库 最新最全的文档下载
当前位置:文档库 › HPC_Ch4_Job-Schedule_Torque_Config_Practice

HPC_Ch4_Job-Schedule_Torque_Config_Practice

HPC_Ch4_Job-Schedule_Torque_Config_Practice
HPC_Ch4_Job-Schedule_Torque_Config_Practice

Torque安装调试实验

注:变化状态:C—创建, M—修改,D—删除

目录

一、资源管理系统简介 (1)

二、TORQUE软件架构简介 (2)

三、实验环境 (2)

3.1软件环境 (2)

3.2实验拓扑 (3)

3.3配置清单 (3)

3.4预配置(至关重要) (3)

四、Head node 安装配置 (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)

五、Compute Node安装配置 (6)

5.1软件包安装 (6)

5.2加载守护进程 (6)

5.3配置守护进程信任关系 (6)

5.4启动守护进程 (6)

5.5修订../torque/spool/目录访问权限 (7)

六、验证配置结果 (7)

七、作业提交与管理 (7)

7.1 创建队列 (7)

7.2 编写作业脚本 (8)

7.3 验证作业提交结果及运行结果 (9)

一、资源管理系统简介

Resources managers provide the low- level functionality to start, hold,cancel, and monitor jobs. Without these capabilities, a scheduler alone cannot control jobs.

While TORQUE is flexible enough to handle scheduling a conference room, it is primarily used in batchsystems. Batch systems are a collection of computers and other resources (networks, storage systems,license servers, and so forth) that operate under the notion that the whole is greater than the sum of theparts. Some batch systems consist of just a handful of machines

running single-processor jobs, minimallymanaged by the users themselves. Other systems have thousands and thousands of machines executingusers' jobs simultaneously while tracking software licenses and access to hardware equipment and storagesystems.

Pooling resources in a batch system typically reduces technical administration of resources while offering auniform view to users. Once configured properly, batch systems abstract away many of the details involvedwith running and managing jobs, allowing higher resource utilization. For example, users typically only needto specify the minimal constraints of

a jo

b and do not need to know the individual machine names of eachhost on which they are

running. With this uniform abstracted view, batch systems can execute thousands andthousands of jobs simultaneously.(懒得翻译,看不懂去死)

二、TORQUE软件架构简介

TORQUE集群由一个head node和多个Compute Nodes构成,head node 运行 pbs_server 守护进程,其他compute node则运行 pbs_mom守护进程,用于提交和管理作业的客户端指令程序可以安装在任何主机上(可以是一台用户端PC,无需运行pbs_server或pbs_mom进程)。head node上还需要运行一个作业调度进程(scheduler daemon),scheduler进程与pbs_server进程交互,以判定compute nodes资源使用情况以及生成节点作业分配策略。

TORQUE集成一个简单的FIFO调度策略,同时也提供代码以帮助用户构建高级调度策略。多数TORQUE用户都选择使用高级调度策略插件,例如 Maui 或Moab。

用户可以使用qsub指令将作业提交到pbs_server,当pbs_server收到一个新的作业时,该进程会通知scheduler进程,scheduler从集群中寻找可以分配用于计算该作业的节点资源,并将找到的节点清单发送给pbs_server进程。psb_server进程根据scheduler提供的信息将待计算的作业提交到节点清单中的第一个节点并让该节点加载该作业,该节点被指定为该作业的主要执行者,由该节点负责调用清单中其他节点协同并行处理该作业,该节点称为Mother Superior ,协同执行该作业的其他节点则称为 sister moms。

三、实验环境

3.1软件环境

OS:CentOS 6.3 x86_64

TORQUE:4.1.0

3.2实验拓扑

pbs_mom pbs_mom pbs_mom

3.3配置清单

3.4预配置(至关重要)

创建一个非root帐号(本例中用admin),配置基于该帐号配置sshd服务,保证head node和Compute node间可以用该帐号进行无密码互访(双向访问都使用密钥对,不需输密码)。TORQUE提交作业的命令qsub 不能以root帐号运行,故,该帐号将用作提交任务,同时TORQUE作业队列是和非root帐号做一对一绑定的,创建队列时也需要该帐号。因未配置NIS服务,所有节点都需创建该帐号。对于多用户共享的集群,需要创建多个此类帐号。【7.2节运行qsub命令前,全部使用root帐号进行操作】

四、Head node 安装配置

选择集群中一台主机作为TORQUE Head node,该节点上通过运行pbs_server\pbs_sched\trqauth守护进程监视和控制集群中其他compute nodes。

4.1下载TORQUE软件包

https://www.wendangku.net/doc/cc18297983.html,/resources/downloads/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

<等待>

#make install

#######################################################################################默认情况下,执行make install 后安装程序会自动创建 /var/spool/torque,该路径是TORQUE的家目录,该家目录下有一系列子目录,包括server_priv/、server_logs/、mom_priv/、mom_logs/,以及TORQUE运行时需要调用的其他配置文件。

####################################################################################### 4.4设置环境变量

#vim /etc/bashrc

export TORQUE=/opt/torque

export LD_LIBRARY_PATH=$TORQUE/lib

export PATH=$TORQUE/bin:$TORQUE/sbin:$PATH

使环境变量生效

#source /etc/bashrc

4.5将TORQUE加载到系统服务

TORQUE作为系统服务以便head node重启后该进程自行启动,为可选步骤。在TORQUE的安装源下已预设相关进程的配置文件,导入系统的/etc/init.d/路径下并通过chkconfig–add加载即可。文件如下:pbs_server、pbs_mom、pbs_sched

#cd ../torque4.1.0/contrib/init.d/ //找到以上三个文件

#cptrqauthd /etc/init.d/

#chkconfig --add trqauthd

#service trqauthd start

####################################################################################### trqauthd是TORQUE集群head node和compute node都需要运行的守护进程,用于授权pbs_mom进程与pbs_server进程之间建立互信连接。该进程已经启动就会驻留在系统内存,客户端程序利用该进程调用本机loopback接口的15005端口通信。该进程支持多线程执行机制,可以处理大量并发请求。

#######################################################################################

#cppbs_sched /etc/init.d/

#chkconfig --add pbs_sched

#service pbs_sched start

####################################################################################### pbs_sched是TORQUE集群中head node的另外一个核心守护进程,用于监控compute node的运行状态,根据pbs_server传递过来的用户作业脚本要求在集群中寻找可用计算节点并反馈给pbs_server 进程。

#######################################################################################

#cppbs_server /etc/init.d/

#chkconfig --add pbs_server

#service pbs_server start

####################################################################################### pbs_server是TORQUE集群中head node的核心守护进程,用于接收用户提交的作业请求,根据pbs_sched进程提供的可用节点资源清单进行作业分发和回收。

#######################################################################################

#cppbs_mom /etc/init.d/ //该步骤可选,参看下面注释

#chkconfig --add pbs_mom

#service pbs_mom start

####################################################################################### head node可以有双重身份,也可以通过运行pbs_mom参与计算,在大型集群中最好不要让head node 参与执行计算任务,这样会导致该节点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

#service pbs_server start//重新启用pbs_server

#service pbs_schedrestart //重新启用pbs_sched

4.7修订nodes文件

TORQUE配置文件都存放在TORQUE_HOME环境下,2.1之后的版本TORQUE_HOME的默认路径是/var/spool/torque/。pbs_server必须能够从网络中发现识别可以受控的compute nodes,并将这些节点列入TORQUE_HOME/server_priv/nodes文件中。通常只需使用一行代码标注这些compute node 的主机名即可,当然,也可以为每个节点添加附加属性。

nodes 文件语法格式;

node-name[:ts] [np=] [gpus=] [properties]

[:ts]参数标记节点为timeshared,该类节点会被列入pbs_server的管控清单并汇报节点状态,但

pbs_server不会给该类节点分发作业。

[np=]参数定义节点的处理核心数量,该参数是个虚拟数值,可以不严格按照节点的实际内核数量来设定。如果pbs_server设定了auto_node_np 属性,则np参数可以自动被server检测到。设置命令为:qmgr -c set server auto_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节。

五、Compute Node安装配置

5.1软件包安装

在一个集群中Compute node数量通常很多,可以逐个节点进行源代码安装,安装路径及过程同pbs_server。安装完成后设定TORQUE环境变量,过程与pbs_server设定相同。

(也可以在head node上用make package 命令生成自解压文件*.sh,然后拷贝的Compute node上解压运行,此处不做介绍。)

5.2加载守护进程

安装完成后,

将/torque-4.1.0/contrib/init.d/pbs_mom文件拷贝到 /etc/init.d下

#cpcontrib/init.d/pbs_mom /etc/init.d //文件复制

#chkconfig --add pbs_mom //将pbs_mom加载为系统进程

将/torque-4.1.0/contrib/init.d/trqauthd文件拷贝到 /etc/init.d下

#cpcontrib/init.d/trqauthd /etc/init.d //文件复制

#chkconfig --add trqauthd //将trqauthd加载为系统进程

5.3配置守护进程信任关系

Head node要管理到集群中受控的Compute node,一方面在head node上要修改nodes文件,添Compute node 主机名,另一方面还要在Compute node上修改server_name文件,以建立pbs_mom和pbs_server 进程的信任关系。

该文件初始化内容是本机的hostname,只需修改成head node的主机名即可。

#vim /var/spool/torque/server_name

pbs_server

5.4启动守护进程

#service trqauthd start//激活trqauthd进程

#service start //激活pbs_mom进程

5.5修订../torque/spool/目录访问权限

Head node 分发过来的作业执行过程中在每个节点都会生成运行结果和错误的日志文件(参考7.2节pbs脚本文件中###Out files 内容),该临时文件最终会被compute node 以scp的方式回传到head node,由于提交作业时用的是非root帐号,会出现因帐号权限不足而无法访问目标目录或文件的情形,被调用暂存这些文件的目录是/var/spool/torque/spool/,需将其权限修改为1777。

#chmod 1777 /var/spool/torque/spool

compute node 在任务执行结束时scp回传文件到head node上提交作业的工作路径时同样会遇到非root帐号访问权限不够的问题,在head node上要把提交作业的工作目录权限修改成1777。(若head node 和compute node不能无密码互访也会失败)

#chmod 1777 /usr/app/example/job1/ //本例工作路径

六、验证配置结果

以上配置完成后,在head node上可以查看到归其管理的Compute node状态,

通过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的Head node上通过qmgr命令创建队列,首先创建个队列名,然后配置其属性,详见下例:

[root@pbs_server ~]# qmgr

create queue q1//创建队列,队列名称q1

set queue q1queue_type = Execution //队列类型为e,

//队列类型分为 Execution 和Route,e为执行,r为按属性转移任务到其他队列或节点set queue q1 Priority = 40 //设定队列优先级,默认为0

set queue q1resources_max.cput = 96:00:00//资源占用时间上限,逾期终止

set queue q1resources_min.cput = 00:00:01//资源占用时间下限

set queue q1resources_default.cput = 96:00:00//默认占用资源时间

set queue q1 enabled = True //

set queue q1started = True //

7.2编写作业脚本

TORQUE集群的通常需要通过编写脚本来提交作业,脚本中通过#PBS命令来编写,脚本可以使用用户平时运行程序时习惯使用的脚本语言。当任务被提交后scheduler通过读取脚本中的#PBS指令确定作业的属性。

例如,当前有用户amdin登录到head node,他将已编译好的作业“MPI_PI”文件放到/usr/app/examples/job1/下,该路径将作为该用户提交作业的工作目录。该用户提交的作业将被拍入7.1节建立的“q1”队列,作业的运行结果将输出到job1.log文件,错误日志则保存到job1.err中,典型脚本如下:

#!/bin/bash

### Job name

#PBS -N job1-1//该作业命名为job1-1

### Declare job non-rerunable

#PBS -r n//该作业不可重复执行

### Output files //输出文件会在运行任务时自动生成到工作目录下

#PBS -e job1.err //定义错误信息输出文件

#PBS -o job1.log //定义作业运行结果输出文件

### Mail to user

#PBS -m abe//a:异常终止发mail通知b:作业开始时发e:完成时发

//-m参数若不定义则默认为 a

### Queue name (one of the created queues)

#PBS -q q1//定义作业加载的队列

### Number of nodes

#PBS -l nodes=1:ppn=2 //作业需调用的节点和每个节点的处理器(核心)数量

### This jobs's working directory

echo Working directory is $PBS_O_WORKDIR //方便查看工作目录,非必须

cd $PBS_O_WORKDIR //进入作业文件所在目录,该步必须包含

echo Running on host $PBS_NODEFILE

echo cat $PBS_NODEFILE//显示该任务在哪些节点执行,非必须

echo This job runs on the following processors:

echo cat $PBS_NODEFILE

//以上信息都会被打印输出到job1.log中### Run the parallel MPI excutable file

mpirun -v -machinefile $PBS_NODEFILE -np2 MPI_PI //执行MPI程序

脚本可以随意保存成一个任意后缀的文件,本例保存为job1.script

通过qsub命令提交作业,可以看到该作业生成的ID号,多个任务会分别获得各自的ID

#su admin //必须切换到非root帐号才能运行qsub提交任务

#qsub job1.script

56.pbs_server

7.3验证作业提交结果及运行结果

compute node查看top

执行作业时,Compute node通过top命令可以看到来自head nodescript中指定运行的任务。本例中执行的程序是MPI_PI,可以看到该进程在每个节点上被加载两条。

head node 上查看qstat

使用qstat–a 可以查看全部作业运行状态,state 有:

- Q 正在排队

- R 正在运行)

- E 执行完毕正在退出队列

- H 被挂起

- T 正被转移到其他节点

- W 正在等待执行时间的到来

- C 任务已完成,执行时间短语定义的队列default cput

#qstat–a

qstat–f 查看任务具体运行日志

#qstat–f 12

查看输出文件

作业完成后将在工作路径下看到自动生成的job1.err和job1.log两个文件#cat job1.log //查看作业执行结果

#cat job1.err //若出错则看到错误日志

相关文档