【摘要】 本文介绍了基于集群技术的作业管理系统pbs,重点研究了pbs系统的体系结构、工作原理。着重从系统各进程的运行机制、安全策略、调度策略和通信策略等方面进行阐述。并分析讨论了pbs与网格计算环境的融合,最后给出实现方案。
【关键词】 集群技术;作业管理系统;pbs;调度策略;网格技术
the design of the effective distribution ways for grid resource based on cluster technology)
abstract:this paper introduced work management system pbs based on cluster technology,has studied the pbs system architecture and the principle of work with emphasis.especially carried on the elaboration for the processes running mechanism,security policy,scheduling policy and correspondence policy in this system.besides,the connection between pbs and the grid computation environment was discussed,finally the realization plan was given.
key words:cluster technology;job management system;pbs;scheduling policy;network technology
1 引 言
网格是一个集成的计算与资源环境,充分吸收各种计算资源,并将它们转化成一种随处可得的、可靠的、标准的同时还是经济的计算能力。WwW.133229.COm与传统的网络资源不同,网格资源具有异构性、动态性和自治性的特点[1]。
网格资源的这些特性给网格资源自身的管理带来了实现上的困难和不可控性。同时为了满足高性能计算的目的,必须提供高效的资源管理服务。网格系统的资源管理负责决定作业请求cpu服务等待时间、作业的内存分配、以及怎样平衡计算负载等多方面的问题。资源管理同时负责在所有提交给系统的作业之间分配资源(作业间资源管理)以及把资源绑定给由一个单一作业提出的多个请求(作业内资源管理)。如果没有作业间资源管理,资源将可能在用户间错误的分配,这对一些用户将失去公平性。糟糕的作业内资源管理将导致用户程序运行性能的下降,原因是程序请求到的资源可能早已超负荷或者根本就请求不到满足系统要求的资源。
由于存在的以上问题,网格资源的管理在网格计算环境中处于一个很重要的地位,也是网格研究的主要研究课题之一。目前我们对于网格计算环境底层的资源,主要是通过采用作业管理系统进行管理。
2 pbs作业管理系统分析
pbs(portable batch system)作业管理系统最初由nasa的ames研究中心开发,为了提供一个能满足异构计算网络需要的软件包,特别是满足高性能计算的需要。它力求提供对批处理的初始化和调度执行的控制,允许作业在不同主机间的路由。pbs的独立的调度模块允许系统管理员定义资源和每个作业可使用的数量。调度模块存有各个可用的排队作业、运行作业和系统资源使用状况信息。使用它提供的tcl、bacl、c三种过程语言,调度策略可以很容易被修改,以适应不同的计算需要和目标,即系统管理员可以方便地实现自己的调度策略。
对于pbs作业管理系统来说,它主要有以下特征:
·易用性:为所有的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。
·移植性:符合posix 1003.2标准,可以用于shell和批处理等各种环境。
·适配性:可以适配各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。
·灵活性:支持交互和批处理作业。
一个pbs作业管理系统主要有4个部分组成:控制台、服务进程、调度进程、执行进程(见图1)。
pbs的工作过程实际上就是服务进程、调度进程、执行进程这三个进程之间,相互通信相互调用的过程。三个进程分别执行各自的职能,同时为其他进程提供服务,共同完成作业的运行。在pbs工作过程中,首先由用户产生事件(这里指作业的提交),事件通知服务进程开始一个调度周期。然后服务器进程发送一个调度命令给作业调度进程,调度进程开始启动调度工作。在收到服务器进程的调度命令后,作业调度进程向执行进程请求可利用的资源信息。执行进程根据本地资源信息返回给作业调度器一个资源信息。其后,得到资源信息后,调度进程向服务器进程请求作业信息。服务器进程接收请求,并发送作业信息至作业调度进程,调度进程产生执行作业的策略。作业调度器发送执行作业请求至服务进程。最后,服务器进程接收请求后,发送作业至执行进程执行作业。
3 pbs与网格环境结合
网格计算环境为用户提供了强大的计算资源,将pbs融入到网格的计算环境中可以使pbs访问到更多的计算资源,使pbs的资源提供能力得到很大的增强,使用户可以调用不同的管理域的资源如同使用本地资源一样。同时pbs融入到网格计算环境也扩展了网格计算环境自身的计算资源。下面以pbs与目前全球重要的网格计算项目globus之间的结合,介绍它们之间资源调度、数据传输、安全认证等方面的解决方案。
globus项目是美国argonne国家实验室等科研单位的研发项目,发起于20世纪90年代中期。globus项目是目前全球重要的网格计算项目之一,其最初的目的是希望把美国境内的各个高性能计算中心通过高性能网络连接起来,方便美国的大学和研究机构使用,提高高性能计算机的使用效率。
pbs与globus的结合,主要目的是可以达到彼此计算资源的相互调用,pbs对globus资源调用的实现,可以为用户提供访问网格计算资源建立一个门户。用户通过提交作业,可以像调用pbs资源一样调用远端的不同管理域下的资源。globus则负责提供与底层不同资源管理者的接口,以及相应的数据传输、安全认证、资源调度等策略。globus对pbs资源调用的实现,则扩展了网格计算环境下底层的计算资源[2]。通过结合,目的是实现网格计算环境的基本模型(见图2)。
当pbs调用globus资源时,首先需要解决的是资源的发现,pbs要对globus资源进行调度使用,那么在提交的作业当中必须对作业的可用资源说明进行描述,使其可以寻找到globus的资源,并加以利用。为了达到资源指定的目的,在作业资源需求描述中我们加入特定的参数“-l site=globus:resource name”。这个参数仅仅是标记了作业对资源需求的期望,并未分配globus资源。其次需要提供一个资源请求信息的接收端口,申请得到globus资源的作业会像正常的pbs提交作业一样,将自己的资源请求发送到pbs服务器上等待服务进程的处理,之后调度进程会根据作业的资源请求将作业传送到与它资源匹配的执行节点,并由各节点的执行进程运行。为了提供一个专门的接收globus资源请求的端口,在启动服务进程的同时要启动一个 pbs_mom_globus进程。当调度器发现了作业特定的globus资源请求,直接将作业发送到pbs_mom_globus进程进行处理。为了可以利用globus资源,pbs作业必须以globus作业的形式进入到globus进行资源的利用,通过pbs_mom_globus进程将作业中pbs的参数全部映射成globus rsl的形式[3]。
在整个资源调度的过程中,pbs实际充当了网格计算环境的入口点,通过提交pbs作业可以实现对网格计算资源的调用,用户可以像使用本地资源一样去使用远端不同资源管理者下的资源。而globus作为一种中间件,由它来负责规划网络间通信的安全协议,并实现对不同的远端资源管理者的通信接口。此外, pbs通过文件stagein和stageout配合globus的gass服务来进行数据的传输,可以解决pbs与globus数据传输的问题。全局二级存储服务gass(global access to secondary storage)主要用来支持网格环境下的远程i/o问题,并针对网格计算环境中的文件访问模式进行了优化支持。
当globus调用pbs资源时,相对pbs对globus资源的调用要简单一些。gloubs在本地提交globus作业时,通过在命令行参数中添加pbs服务器的名称及路径来指定需要调用的pbs资源,并在命令结尾添加jobmanager-pbs参数开启gloubsy与pbs之间的端口。globus提交作业的请求被送到gram,gatekeeper判断作业需要调用的资源,并根据rsl描述解析出的任务分配参数传递给新创建的任务管理者。任务管理者接到需要调用pbs资源的请求,则将作业资源信息的描述发送到jobmanager-pbs端口,jobmanager-pbs端口会产生一个新的用pbs脚本语言描述资源信息的作业脚本。任务管理者将这个脚本发往pbs服务器进行执行。
4 pbs系统测试与分析
硬件环境的配置方面,首先要选择一组适合实验过程的主机搭建实验环境。出于对实验稳定性与兼容性的考虑,我们选取了8台硬件与软件配置完全一样的主机,硬件配置为:cpu pⅱ 400mhz 内存 128 sdram;操作系统为:linux9.0。这样便于对pbs系统整体性能测试。其次对于主机间的通信,为了提供一个快速稳定的网络环境,我们采用以太网的技术用5类双绞线和一台百兆交换机将这8台机器组成一个小型局域网环境,并进行了相应的网络设置。软件环境的配置主要是对pbs系统的安装和配置,主要包括:系统安装、服务器配置、执行节点配置、进程启动、建立作业队列、实验的内容是提交一个矩阵相乘的并行作业,矩阵运算在科学与工程计算中是最基本的核心问题之一,用它来进行测试具有代表性。本作业要完成a、b两个1000*1000矩阵相乘目的是为了对搭建的pbs系统环境进行测试,检验pbs系统的正确运转及相关性能的测试,并对实验结果进行分析[4]。
首先采用并行行列划分算法,通过mpi编写实现矩阵相乘的并行程序pjob.c(程序代码见附录)。并在linux下用mpicc pjob.c进行编译,生成a.out执行文件,将参与运算的矩阵文件a.dat、b.dat拷贝到本地。并在单机下直接运行命令./out,记录运行产生的结果。然后,编写作业提交脚本文件,在脚本中对作业进行资源需求的描述。之后,运行命令qsub parallel_job向pbs服务器提交作业,通过监控命令qstat可以看到作业已经分配到执行队列中处于执行状态,并且服务器分别将并行作业的子进程传输到各台执行节点上运行,8台执行节点都处于运行状态。各节点的并行程序的子进程运行结束后,在标准输出文件中产生运算结果,记录运行时间。再逐步减少执行节点的数目继续实验,直到只剩下单机运行,记录单机运行产生的结果及运行时间。
通过测试,获得了作业运行时间与节点数关系图。(见图3)可以看到,当增加执行节点的个数作业的执行能力有明显的提高呈现出反比关系的曲线。 为了进一步的分析,还可以在节点数不变的情况下,再选取一组512*512的矩阵进行运算,运算过程同1000*1000矩阵相乘一样。最后根据记录的运行结果显示,在不同数目的执行节点上运行的作业结果以及非pbs系统上运行作业的结果完全相同。验证pbs系统整体可以正常的运做。
图3 作业运行时间与节点数关系图
fig.3 connection betweon job time and node5 结束语
本文提出了一种适合集群环境下的高效资源分配与利用方案,并给出了详细的设计过程。深入分析了pbs系统的内部运行机制、安全机制、调度策略等方面问题,提出了改进方案。研究pbs系统与网格计算环境的融合问题,并将pbs集群计算环境融入到了网格计算环境,将pbs系统作为网格计算环境的低层资源,并通过globus对pbs系统进行了作业提交,测试了pbs在globus下的正常运转。
【参考文献】
[1]都志辉.网格计算[m].北京:清华大学出版社,2002:10.
[2]郑纬民等译.高性能集群计算[m].结构与系统(第一卷),北京:电子工业出版社,2001:6.
[3]pbs用户手册:《pbs administrator guide》[s].2000:4.
[4]李,罗家融,王华忠.基于beowulf的pc集群系统设计及并行编程的研究[j].微机算计信息,2005,8(3):64.