TORQUE与OpenPBS、maui的关系TORQUE是OpenPBS的改进版本,用户提交的任务先在资源管理系统的等待队列排队,直到任务需要的资源(CPU类型、数量内存大小等)满足条件才能执行。它支持多种操作系统,支持不同类型节点的集群,提供CLI、GUI和CAPI用户接口,还支持批处理、并行、交互型作业。TORQUE在下面几个方面做了改进:(1)可扩展性:更满足大规模集群运算的需要,标准OpenPBS支持约300个节点,TORQUE可以支持超过1500个节点;(2)容错性:修正了大量bug,提供更多故障支持;(3)调度界面:为调度软件提供更多、更准确的信息;(4)易用性:更加人性化、易读的日志功能。TORQUE最重要的一个特点就是能使用内部调度模块。一般我们使用的是maui,它根据事先定义的集群调度策略决定等待队列中的任务在什么时间和哪些节点上运行,在满足不同用户需求和最大化整个集群利用率之间达到动态平衡,并且提供了高级预定、复杂调度策略、平均调度和各种管理、诊断集群的工具。它们两者的结合大大提高了作业调度的性能。目前存在几十种集群作业管理系统,颇具代表性和影响力的如OpenPBS、CONDOR、LSF、LOADLEVELER,其中OpenPBS、CONDOR是研究产品,LSF、LOADLEVELER是商业软件。比较各个系统都不同程度的存在优缺点,如OpenPBS和CONDOR同属于研究产品,OpenPBS提供了灵活的调度策略和用户的身份认证机制,但CONDOR则比较全面地实现了检查点的操作。通过分析比较,在本集群项目中选择OpenPBS作为集群作业管理系统,主要原因是OpenPBS是开源产品及OpenPBS目前来说对集群还是相对提供了很好的支持,但如果集群项目的并行处理,对于作业调度的执行时间和吞吐量有很高的要求,仍然需要在OpenPBS基础平台上对作业调度策略进行二次开发OpenPBS体系结构及工作原理PBS最初由NASA的Ames研究中心开发,目的是提供一个能满足异构计算网络需要的软件包,特别是满足高性能计算的需要。它提供TCL、BACL、C三种过程语言,其调度策略允许被修改,以适应不同的计算需要和目标。目前存在两种版本的PBS,分别是商业软件PBSPro和研究产品OpenPBS。2.1OpenPBS体系结构OpenPBS分别由Server,Scheduler和MOM构成,如图1所示,Server是系统与用户的接口,负责接收和修改用户的批处理作业,调用scheduler进行作业调度,并通知MOM执行作业;Scheduler通过与MOM通信获取各节点的状态,通过与server通信获取用户对作业执行的要求和所有的作业信息,并结合系统的调度策略给出合理的调度方案MOM负责控制作业的执行,与server进行实时通信,对作业执行情况进行修改和控制,并负责收集本节点状态和作业状态信息。整个系统只有一个server和scheduler,但每个节点有一个MOM。图1OpenPBS体系结构2.2OpenPBS作业调度执行过程OpenPBS系统中的作业执行主要依靠服务进程调度进程及执行进程,如图2所示,执行过程如下:图2OpenPBS作业调度执行过程(1)由客户产生事件,事件通知服务进程开始一个调度周期;(2)服务进程发送一个调度命令给作业调度器;(3)作业调度器向执行进程请求可用资源信息;(4)执行进程返回给作业调度器一个资源信息;(5)得到资源信息后,作业调度器向服务进程请求作业信息;(6)服务进程接收请求,并发送作业信息至作业调度器,产生执行作业的策略;(7)作业调度器发送执行作业请求至服务进程;(8)服务进程接收请求后,发送作业至执行进程执行作业。2.3OpenPBS默认FIFO存在的问题OpenPBS包括几种内置的调度器,默认的调度器是基于C的FIFO,如图3所示,但并非如同名字所示,不是一个严格意义上的FIFO,而是追求CPU的最大利用率。调度器循环扫描作业队列,执行第一个满足当前有效系统资源需求的作业,这种机制导致大作业需要的资源不能满足而阻止了其运行,使其可能长时间不能得到执行,从而产生饥饿现象。为了保证大作业的公平性,FIFO调度器实现了一种饥饿作业调度方法,当某一作业等待时间超过一定时间界限(如默认为24小时),即对该作业所需要的资源进行预约,即这些资源中的一部分成为可用时,不再分配给其它的作业,一直到预约的所有资源都已得到满足时,将该作业投入运行。在此期间,调度器不会在节点上运行别的作业。预约策略虽然解决了饥饿现象,但它导致了少量的节点资源空闲时间,产生了时间间隙,牺牲系统资源的利用率,降低了系统的吞吐率。同时FIFO调度策略不能保证大作业的公平性,增加系统的平均等待时间,此外,作业的执行顺序也是不可预见的。总之,OpenPBS默认的调度器FIFO的工作效率不是很理想的。图3PBS中FIFO调度器结构图3调度策略分析3.1调度决策分析目前调度决策变得很复杂,如调度器允许节点资源如内存、处理器和本地硬盘可以被单独调用,作业可以请求独特的服务和访问独特的函数等。造成影响调度决策的主要方面包括作业、节点、策略以及在作业运行过程中相互间的静态、动态或交互的支配关系。通常涉及到调度决策的元素如下:(1)有关作业的主要元素:信任度(用户、组、历史记录等);请求的队列类;资源需求(处理器、内存、交换区等);请求的walltime;作业状态。(2)有关节点的主要因素:非支配的节点属性(操作系统、体系结构、网络性能等);可支配的节点资源(可配置和有效的内存、交换区、处理器等);节点状态。(3)有关策略的主要因素:基于时间的资源访问策略;基于请求资源的优先级和资源访问权限;基于信任度的资源访问调度/节点分配方法3.2通常调度策略作业调度策略是调度环境的核心内容。作业选取策略就是如何从已提交的作业中选取合适的作业加以运行。各种基本的作业调度策略如下:(1)FIFO是最简单的调度策略。所有的作业根据到达队列的时间顺序执行。当队列中的下一个作业不能得到资源执行时,FIFO不会去调度后面的作业。(2)FirstFit根据作业到达队列的次序扫描队列中的作业,执行第一个系统资源能满足其资源需求的作业。与FIFO相比,不会由于一个资源需求大的作业被阻塞而影响其作业队列中后续作业的执行。(3)BestFit扫描整个队列,从中选取当前系统能满足的资源要求最大的作业投入运行。与FirsFit一样,它不会由于一个资源需求大的作业被阻塞而影响其作业队列后面的作业得以执行。(4)Greedy扫描整个队列,并将各个作业进行组合,从中选取当前系统能满足的资源要求最大的作业组投入运行。(5)Priority是一种比较通用的策略,体现了系统的公平性。首先,系统根据各种不同的参数(用户优先级、作业类型等)计算出作业的优先级,然后根据优先级对作业进行排列,生成作业队列,系统根据作业队列次序来决策是否运行该作业Priority通常和其他策略如FirstFit、BestFit等结合使用。(6)Reservation针对在FirstBit、BestFit等策略中的资源要求大的作业长时间不能得到运行的问题,使用预约的方法解决,即当一个作业在队列中等待的时间超过一定的值,对它所需要的资源进行预约,当需求资源中的一部分成为可用时,不再分配给其它的作业,一直到预约的所有资源都已得到满足时,将该作业投入运行。(7)Bickfilling解决了预约策略中的资源浪费,既充分利用预约策略中由于预约产生的时间空隙,通过计算预约形成的时间间隔,以不影响预约作业的按时运行为条件,从作业队列中选取合适的作业插入到这段时间段内运行,从而有效利用了系统资源,提高系统的利用率和吞吐率。4作业调度策略是作业管理系统的核心内容,好的作业管理系统可以有效地保证集群系统高效可靠的使用。由于OpenPBS最初并不是为集群系统设计的,导致在作业调度和节点分配方面缺少许多重要的特性,如不提供对预约、装填等调度策略的支持。为此,通过把多分区装填策略作为OpenPBS的一个扩展的调度策略,取代默认的FIFO,使其在集群系统中提供优秀的调度能力,允许用户运行更多的作业和更快的获得运行结果。在上述实验的基础上,可以通过设置队列的优先级和预约的优先度,为实时作业设立特殊分区等方法来进一步提高多分区调度策略的效率薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿羁膂莈蚅袇膁蒀蒈螃膀膀蚃虿腿节蒆羈芈莄蚁袄芈蒆蒄螀芇膆蚀蚆袃莈蒃蚂袂蒁螈羀袁膀薁袆袁芃螆螂袀莅蕿蚈衿蒇莂羇羈膇薇袃羇艿莀蝿羆蒂薆螅羅膁蒈蚁羅芄蚄罿羄莆蒇袅羃蒈蚂螁羂膈蒅蚇肁芀蚁薃肀莂蒃袂肀肂虿袈聿芄薂螄肈莇螇蚀肇葿薀罿肆腿莃袅肅芁薈螁膄莃莁蚇膄肃薇薃膃芅荿螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆芄薆袀腿蕿蒂衿芁莂螁袈羁薇蚇袇肃莀薃羆膅薆葿羆芈荿螇羅羇膁螃羄膀莇虿羃节芀薅羂羂蒅蒁羁肄芈螀羀膆蒃蚆肀芈芆薂聿羈蒂蒈肈肀芅袆肇芃薀螂肆莅莃蚈肅肅薈薄蚂膇莁蒀蚁艿薇蝿螀罿荿蚅蝿肁薅薁螈膄莈薇螈莆膀袆螇肆蒆螁螆膈艿蚇螅芀蒄薃螄羀芇葿袃肂蒃螈袂膄芅蚄袂芇蒁蚀袁肆