CN103336720B - 一种基于slurm的具有数据依赖关系的作业执行方法 - Google Patents
一种基于slurm的具有数据依赖关系的作业执行方法 Download PDFInfo
- Publication number
- CN103336720B CN103336720B CN201310239254.4A CN201310239254A CN103336720B CN 103336720 B CN103336720 B CN 103336720B CN 201310239254 A CN201310239254 A CN 201310239254A CN 103336720 B CN103336720 B CN 103336720B
- Authority
- CN
- China
- Prior art keywords
- node
- job
- computing node
- main controlled
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种基于SLURM的具有数据依赖关系的作业执行方法,通过在计算节点上新增主控守护程序slurmdagctld,使得具有数据依赖关系的作业执行方法的整个步骤智能化,用户不需要时刻监控作业的运行状况,在作业运行过程中将结果文件通过命令进行传送,用户只需要根据调度表编写文本文件,将此文本文件传送给用户选定的主控节点,具有数据依赖关系的作业就会通过设计者新增的主控守护进程slurmdagctld智能地执行,最后将最终执行结果返回到主控节点的命令窗口,或将最终执行结果保存到文件中供用户查看。在此智能执行的过程中,还能达到节能的效果。利用改进的sbcast命令将文件传送到指定的计算节点,这样可以减少网络通信量。
Description
技术领域
本发明涉及一种基于SLURM(SimpleLinuxUtilityResourceManagement)的具有数据依赖关系的作业执行方法
背景技术
SLURM资源管理系统是一种可用于大型集群的高度可伸缩和具有容错功能的集群管理器和作业调度系统。
SLURM实现的是一种非常传统的集群资源管理架构,如图2所示,此资源管理系统主要由控制进程、节点监控进程、命令工具等组成。如图3所示,控制进程slurmctld由节点管理器、分区管理器、作业管理器三部分组成,它是资源管理系统的中枢,运行在管理节点上,负责资源分配、作业调度、作业管理控制等。节点监控进程slurmd由节点及作业信息服务、远程执行、I/O服务、作业控制四部分组成,它运行在每个计算节点上,负责收集节点的资源状态并向控制进程报告。节点监控进程slurmd接受来自控制进程与用户命令的请求,进行作业步作业加载,作业取消等。命令工具包括一组供用户和管理员使用的命令,通过命令行可以对系统和作业进行管理,如查看和修改系统配置,查看、修改或者删除作业信息等。命令主要有:srun、sbcast、sinfo、squeue、scancel等。srun命令用于交互作业运行与作业加载;sbcast命令用于广播文件,利用高效通信机制将文件广播到计算节点;sinfo用于节点与分区状态查看;squeue用于作业队列状态与作业步信息查看;scancel用于作业取消与信号发送。
计算节点是资源分配的基本单位,它上面的资源包括处理器、内存、磁盘空间等,用户的作业在计算节点上运行。为了使用计算节点,用户需向资源管理系统提出资源分配请求,资源分配请求以作业的形式提交,进行排队和调度。在成功分配满足约束的资源后,用户即可在所分配的节点上加载作业。例如:用户在命令行窗口用srun命令加载作业,在srun的参数中指定资源分配的需求约束,以及要加载执行的计算作业及其控制参数:srun–N3–n3–multi-progmp.conf(用srun加载多程序作业;-N参数代表请求为作业至少分配的节点个数,其后的3代表至少分配的节点个数为3;-n参数代表指定要运行的作业数,其后的3代表作业数为3;–multi-prog参数代表运行每个作业有不同可执行程序及参数的作业,在此情况下,所指的可执行程序实际上是一个配置文件,其中指定了每个作业的可执行程序和参数,mp.conf即为配置文件)。资源管理系统为每个作业分配资源,并在分配的计算节点上运行作业。每个作业的运行结果可以直接显示在命令行窗口或保存在用户指定的文件中。运行结果文件保存在提供命令行窗口的计算节点上。计算节点和计算节点之间不存在通信,计算节点运行作业得到的运行结果不能直接传送给其他的计算节点,这样,如果某个计算节点需要其他计算节点运行的作业的运行结果,现有SLURM不存在一种机制将一个计算节点上的运行结果直接传送给另一个计算节点,只能将此运行结果先以文件的形式保存在硬件存储介质中,再通过命令的方式将此文件传送到相应计算节点。而通过命令的方式传送文件需要用户干预。所以现有SLURM只能调度相互独立的作业,即作业与作业之间不存在数据依赖关系。
通常,一个大型的作业在并行处理之前可以分成一组较小的子作业,通过分解一个大型作业为多个子作业,在多个处理器上并行执行子作业,可以减少作业的总执行时间即makespan。这些子作业之间存在代表优先约束的数据依赖关系,这种依赖关系表现在一个特定的子作业的执行需要其它子作业的运行结果作为输入。例如,如图4(a)所示将高斯消元算法分解成多个子作业,每个子作业Tk,j需要子作业Tk,k的运行结果即计算的ai,k的值作为输入来计算ai,j的值。图4(b)是矩阵大小为5时用高斯消元法求解划分的作业图的实例,子作业T2,3就需要子作业T2,2和T1,3的运行结果作为输入才能执行。
有数据依赖的作业可以用有向无环图(DirectedAcyclicGraph,DAG)表示,如图5所示,DAG的节点代表一个作业,边代表作业之间的优先约束关系,一个有向边连接两个节点,前一个节点称为父节点,后一个节点称为子节点,优先约束关系表现为一个节点不能在获得它的父节点的所有信息之前执行。节点和边都有权值,大部分情况下权值是估算出来的,一般根据特征信息,如数值运算、内存存取操作和消息传递原语等进行估计。节点的权值代表作业的计算量,边的权值代表作业之间的通信量,当两个作业在同一个计算节点上执行时,作业之间的通信量为零。将具有数据依赖关系的作业采用具体调度算法后可得到作业调度表,如图6所示,为图5中的作业在3个全互联的处理器上采用具体调度算法后得到的作业调度表(计算节点由高速网络连接,不考虑计算节点之间的通信时间)。根据作业调度表,用户可以编写作业运行文本文件,用于向资源管理系统提出资源分配请求,以便作业运行,加载用户的计算作业。
现有技术中,对于具有数据依赖关系的作业(或作业),用户只能分步骤的将作业通过命令加载到指定的计算节点。
在具有数据依赖关系的作业执行的过程中,用户必须时刻监控作业的运行状况,等待作业运行结束再将其运行结果文件通过命令的方式传送到其他计算节点,整个过程完全是人工完成的。
即使用户通过srun命令的选项--starttime指定每个作业的开始时间,将具有数据依赖关系的所有作业同时提交到SLURM资源管理系统中,也必须等待作业运行结束得到结果后再通过sbacast命令将结果传送到用户申请的计算节点上,不能改变用户通过人工实现的过程。而且,使用指定每个作业开始时间这种执行方式时,由于作业运行时间是估算的,当时间估算不准确时,会出现某个作业已开始运行,但其需要的其他作业的运行结果文件还没生成的情况,此时,这个作业会运行失败。
现有技术中的文件传输命令sbcast将文件传送到用户申请到的所有的计算节点,将文件传送到不需要此文件的作业所在的计算节点,占用了通信通道,浪费了能量;
所以现有技术不但需要用户时时监控作业的运行状况,考虑节能时,也需要用户人工实现。用指定作业开始时间的方式执行作业,也不能改变用户人工实现的过程,且不能保证具有数据依赖关系作业的正常运行。
发明内容
本发明提出一种基于SLURM的具有数据依赖关系的作业执行方法,为了克服现有技术中,现有SLURM资源管理系统不能对相互之间存在数据依赖关系的作业进行调度的不足,通过在计算节点上新增主控守护程序slurmdagctld,用于计算节点中的主控节点控制其他计算节点工作的方式,使得存在数据依赖关系的作业的执行更加高效、准确及节能。
一种基于SLURM的具有数据依赖关系的作业执行方法,用户依据设定的用于完成具有数据依赖关系作业需要的计算节点个数n,向SLURM资源管理系统申请需要的n+1个计算节点,用户依据设定的调度算法编写关于具有数据依赖关系的作业的文本文件,并将文本文件提交至SLURM资源管理系统,SLURM资源管理系统依据所述的文本文件将待执行的作业分配至各个计算节点,每个计算节点依据所述的文本文件,各自独立执行所分配的作业得到执行结果,包括如下步骤:
步骤1:在SLURM资源管理系统中的传送文件sbcast命令内新增传送设定文件至设定计算节点的内容,以用于将当前计算节点上的设定文件传送至设定计算节点;
步骤2:在SLURM资源管理系统现有的守护进程中,添加主控守护进程slurmdagctld;
步骤3:用户根据设定的需求向SLURM资源管理系统申请需要的计算节点个数,SLURM资源管理系统返回分配给用户的计算节点;
步骤4:用户选定申请所得到的计算节点中任意一个计算节点作为主控节点,其它计算节点即为非主控节点;
步骤5:用户依据设定的调度算法,并结合各个非主控节点的运算速度,获得待执行的具有数据依赖关系的作业的调度表,并根据调度表编写文本文件;
所述非主控节点的运算速度是用户根据非主控节点对应的计算节点,利用ganglia软件查询计算节点获得;
步骤6:用户通过sbcast命令将编写的文本文件传送至主控节点;
步骤7:主控节点启动新增的主控守护进程slurmdagctld;主控节点读取文本文件,根据文本文件为每个非主控节点建立各自的作业队列;主控节点按照建立的作业队列控制非主控节点工作或处于省电模式,非主控节点上的作业与其它非主控节点上的作业存在数据依赖关系时,主控节点利用sbcast命令将当前计算节点上的运行结果文件传送至当前计算节点的作业队列指定的计算节点,所有计算节点有序执行完用户提交的具有数据依赖关系的作业,得到具有数据依赖关系的作业的执行结果;
所述文本文件的内容包括计算节点名、作业号、作业开始时间、作业在设定计算节点上运行的命令、运行结果发送的设定计算节点名和作业号、作业运行时需要的其它作业运行结果所在的计算节点名和作业号;
所述每个非主控节点的作业队列通过主控节点读取文本文件形成,以作业的开始时间进行排序,由主控节点建立和删除;作业队列以每个作业的信息为单位,作业信息包括作业号、作业运行标记、作业开始时间、作业在设定计算节点上运行的命令、作业运行结果文件需要发送到的设定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果所在的计算节点名和IP地址,以及作业号和作业结果接收标记;
主控节点为每个非主控节点设置一个状态标记,计算节点处于省电模式时,此计算节点状态标记为0,计算节点处于性能模式时,此计算节点状态标记为1。
所述主控守护进程控制过程如下:
初始化主控节点需要查询的作业队列为所有非主控节点的作业队列,所有非主控节点均设置为性能模式;
步骤1)主控节点查询需要查询的计算节点作业队列中每个作业队列的排在队首的作业运行标记,若作业运行标记为1,则不做任何操作;若作业运行标记为0,则查询当前作业运行时需要的其它作业运行结果的作业结果接收标记是否都为1,若作业结果接收标记都为1,则主控节点依据文本文件中设定的作业在设定计算节点上运行的信息,发送指令使设定计算节点加载当前作业,并设置此作业的作业运行标记为1;否则,则主控节点通过命令使计算节点处于省电模式,并改变计算节点的状态标记为0;
若作业运行需要的其它作业结果接收标记为1,表示此作业运行需要的其它作业的运行结果已全部接收;
步骤2)当非主控节点上作业执行完成后的运行结果文件在主控节点上生成时,主控节点利用sbcast命令将当前计算节点上的运行结果文件传送至文本文件上设定的计算节点,并在作业队列中删除已执行完成的作业;并且,主控节点将接收到运行结果文件的计算节点的作业队列中需要该运行结果文件的作业的作业接收结果标记设置为1;
步骤3)若关于某个计算节点的作业队列为空,则主控节点通过发送控制命令使计算节点进入省电模式;
步骤4)主控节点将执行完作业的计算节点和接收了运行结果文件的计算节点的作业队列依次加入需要查询的作业队列,返回步骤1。
所述对命令sbcast进行扩增修改,具体包括以下步骤:
(1)修改包含sbcast命令的各个选项的函数实现的Opts.c文件中的解析命令行externvoidparse_command_line(intargc,char*argv[])函数,新增指定特定节点的选项-D,即在静态结构体矩阵staticstructoptionlong_options[]中新增矩阵元素{"destination",required_argument,0,'D'},并添加选项D的处理函数:slurm_addr_t*_destination(slurm_addr_t*node_addr);
(2)修改传送文件sbcast命令的主函数sbcast.c文件的main函数,若命令中存在-D参数,则将文件传送到-D参数后的地址,若不存在-D参数,则按现有的方式将文件传送到用户申请的其它所有计算节点。
所述主控守护进程根据文本文件为所有非主控节点维护一个作业队列,根据作业队列控制其它计算节点工作;
主控节点查询SLURM资源管理系统的配置文件slurm.conf(/etc/slurm-llnl/slurm.conf),将IP地址和计算节点名配对,为后续主控节点读取文本文件为每个计算节点创建作业队列提供信息;
主控节点读取文本文件,根据文本文件内容创建作业队列,主控节点为所有非主控节点维护一个作业队列,作业队列以每个作业的信息为单位,作业信息包括作业号、作业运行标记(初始化为0,作业被加载到计算节点后,主控节点将此作业运行标记改为1)、作业开始时间、作业在指定计算节点上运行的命令、作业运行结果文件需要发送到的设定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果所在的计算节点名和IP地址,以及作业号和作业结果接收标记(作业结果接收标记初始化为0,接收到此结果后主控节点将此作业结果接收标记改为1)。
同时,主控节点为每个非主控节点维护一个状态标记,计算节点处于省电模式时,此计算节点状态标记为0,计算节点处于性能模式时,此计算节点状态标记为1;非主控节点的状态标记的改变由主控节点完成,主控节点发送命令使计算节点处于省电模式时,将计算节点状态标记改为0,主控节点发送命令使计算节点处于性能模式时,将计算节点状态标记改为1。
有益效果
本发明提供了一种基于SLURM的具有数据依赖关系的作业执行方法,通过在计算节点上新增主控守护程序slurmdagctld,使得具有数据依赖关系的作业执行方法的整个步骤智能化,用户不需要时刻监控作业的运行状况,在作业运行过程中将结果文件通过命令进行传送,用户只需要根据调度表编写文本文件,将此文本文件传送给用户选定的主控节点,具有数据依赖关系的作业就会通过设计者新增的主控守护进程slurmdagctld智能地执行,最后将最终执行结果返回到主控节点的命令窗口,或将最终执行结果保存到文件中供用户查看。在此智能执行的过程中,还能达到节能的效果。利用改进的sbcast命令将文件传送到指定的计算节点,这样可以减少网络通信量。
附图说明
图1为SLURM资源管理环境下针对具有数据依据关系作业的调度方法结构示意图;
图2为现有的SLURM架构图;
图3为SLURM控制进程和节点监控进程组成结构;
图4矩阵大小为5是用高斯消元算法得到的子作业分解图,其中,(a)图为高斯消元算法,(b)图为矩阵大小为5时的作业图,Ti,j是子作业;
图5为包括8个具有数据依据关系的子作业的DAG模型图;
图6为图5中具有数据依据关系的8个子作业在3个处理器上的一种作业调度表;
图7为基础函数List结构示意图;
图8为本发明提出的针对具有数据依据关系作业的执行框架示例图。
具体实施方式
下面将结合附图和具体实施例对本发明做进一步说明。
现有技术中,对于具有数据依赖关系的作业,用户只能分步骤的将作业通过命令加载到指定的计算节点。
如对于图6的具有数据依赖关系作业的调度表的具体执行,用户需按如下步骤来执行作业:
步骤一:用户向SLURM资源管理系统申请3个计算节点。
步骤二:用户通过命令“srun–wP2–n1T0”将作业T0加载到计算节点P2。若用户考虑节能,此时用户通过命令“srun-wP0cpufreq-set–gpowersave”,使计算节点P0处于省电模式(CPU频率最低);通过命令“srun-wP1cpufreq-set–gpowersave”,使计算节点P1处于省电模式。
步骤三:作业T0运行结束后,用户将结果保存到文件text0中,通过命令sbacast将文件text0传送到用户申请的计算节点。
步骤三:若步骤一使计算节点P0和P1处于省电模式,则须通过命令“srun-wP0cpufreq-set–gperformance”使计算节点P0处于性能模式(CPU以最大频率运行),通过命令“srun-wP1cpufreq-set–gperformance”使计算节点P1处于性能模式;用户通过命令“srun–wP2–n1T4”将作业T4加载到计算节点P2,通过命令“srun–wP1–n1T1”将作业T1加载到计算节点P1,通过命令“srun–wP0–n1T3”将作业T3加载到计算节点P0。
步骤五:作业T1运行结束后,用户将结果保存到文件text1中,然后通过命令sbacast将文件text1传送到用户申请的计算节点。若考虑节能,此时用户通过命令“srun-wP1cpufreq-set–gpowersave”,使计算节点P1处于省电模式。
步骤六:作业T3运行结束后,用户将结果保存到文件text3中,然后通过命令sbacast将文件text3传送到用户申请的计算节点。
步骤七:作业T4运行结束后,用户将结果保存到文件text4中,然后通过命令sbacast将文件text4传送到用户申请的计算节点。文件传送结束后,用户通过命令“srun–wP2–n1T2”将作业T2加载到计算节点P2,用户通过命令“srun–wP0–n1T6”将作业T6加载到计算节点P0。
步骤八:作业T2运行结束后,用户将结果保存到文件text2中,然后通过命令sbacast将文件text2传送到用户申请的计算节点;用户通过命令“srun–wP2–n1T5”将作业T5加载到计算节点P2。
步骤九:作业T6运行结束后,用户将结果保存到文件text6中,然后通过命令sbacast将文件text6传送到用户申请的计算节点;
步骤十:作业T5运行结束后,用户将结果保存到文件text5中,然后通过命令sbacast将文件text5传送到用户申请的计算节点。
步骤十一:若步骤四使计算节点P1处于省电模式,则通过命令“srun-wP1cpufreq-set–gperformance”使计算节点P1处于性能模式,用户通过命令“srun–wP1–n1T7”将作业T7加载到计算节点P1。
步骤十二:作业T7运行结束后,用户可从命令窗口查看具有数据依赖关系作业的最终执行结果,或将结果保存到文件text7中供用户查看。
整个过程需要用户时时监控作业的运行状况。
本发明提出的一种基于SLURM的具有数据依赖关系的作业执行方法,整个执行框架示例图,如图8所示,用户依据设定的用于完成具有数据依赖关系作业需要的计算节点个数n,向SLURM资源管理系统申请需要的n+1个计算节点,用户依据设定的调度算法编写关于具有数据依赖关系的作业的文本文件,并将文本文件提交至SLURM资源管理系统,SLURM资源管理系统依据所述的文本文件将待执行的作业分配至各个计算节点,每个计算节点依据所述的文本文件,各自独立执行所分配的作业得到执行结果,包括如下步骤:
步骤1:修改SLURM资源管理系统中的传送文件sbcast命令,新增发送选项,包括传送设定文件至设定计算节点,用于将当前计算节点上的设定文件传送至设定计算节点;
目前sbcast命令的命令行选项有-C(压缩要传送的文件)、-f(如果目标文件已存在,则替换之)、-F(指定文件传送消息时的扇区宽度)、-p(保留原文件的修改时间,访问时间以及模式)、-s(指定文件广播时使用的块大小)、-t(指定消息超时的秒数)、-v(在sbcast命令执行过程中显示详细事件日志)、-V(显示sbcast命令版本信息)。
(1)修改包含sbcast命令的各个选项的函数实现的Opts.c文件中解析命令行externvoidparse_command_line(intargc,char*argv[])函数,新增选项-D(指定特定节点),即在静态结构体矩阵staticstructoptionlong_options[]中新增矩阵元素{"destination",required_argument,0,'D'},并添加此选项的处理函数:slurm_addr_t*_destination(slurm_addr_t*node_addr);
更改函数externvoidparse_command_line(intargc,char*argv[]);
并添加此选项的处理函数:slurm_addr_t*_destination(slurm_addr_t*node_addr);
case(int)'D':
params.destination=_destination(slurm_addr_t*node_addr);
break;
(2)修改sbcast.c文件的main函数,若命令中存在-D参数,则将文件传送到-D参数后的地址,若不存在-D参数,则按现有的方式将文件传送到用户申请的其它所有计算节点。
intmain(intargc,char*argv[])
步骤2:在SLURM资源管理系统现有的守护进程中,添加主控守护进程slurmdagctld;
新增主控守护进程slurmdagctld,用于往计算节点加载作业,往计算节点传送文件,且可控制计算节点的状态,调节计算节点的CPU频率,实现降低能耗的目的。
步骤3:用户根据设定的需求向SLURM资源管理系统申请需要的计算节点个数,SLURM资源管理系统返回分配给用户的计算节点名;
步骤4:根据申请得到的计算节点,用户选定其中任意一个计算节点作为主控节点,其它计算节点即为非主控节点;
步骤5:用户依据设定的调度算法,并结合申请到的计算节点及各非主控节点的运算速度,获得待执行的具有数据依赖关系的作业的调度表,并根据调度表编写文本文件;
所述非主控节点的运算速度是用户根据非主控节点的计算节点名,利用ganglia软件查询获得;
步骤6:用户通过sbcast命令将编写的文本文件传送至主控节点;
步骤7:主控节点启动新增的主控守护进程slurmdagctld;主控节点读取文本文件,为每个非主控节点根据文本文件建立作业队列;主控节点按照建立的作业队列控制其它计算节点工作或处于省电模式,非主控节点上的作业与其他非主控节点上的作业存在数据依赖关系时,主控节点根据非主控节点的作业队列中关于此作业的一项信息——运行结果文件需要发送到的指定计算节点IP地址,将运行结果传送至其他非主控节点,所有计算节点有序执行完用户提交的具有数据依赖关系的作业,得到具有数据依赖关系的作业的执行结果;
所述文本文件包括计算节点名、作业号、作业开始时间、作业在指定计算节点上运行的命令、运行结果发送的指定计算节点名和作业号、作业运行时需要的其它作业运行结果的计算节点名和作业号。
所述作业队列通过主控节点读取文本文件形成,主控节点为每个其它计算节点维护一个作业队列,作业队列以每个作业的信息为单位,作业信息包括作业号、作业运行标记、作业开始时间、作业在指定计算节点上运行的命令、作业运行结果文件需要发送到的设定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果的计算节点名和IP地址和作业号和作业结果接收标记。
同时,主控节点为每个其它计算节点维护一个状态标记数组,计算节点处于省电模式时,此计算节点状态标记为0,计算节点处于性能模式时,此计算节点状态标记为1。
作业队列的定义如下:
作业队列以每个作业的信息为单位,定义结构体list用于保存计算节点上需加载的作业的作业号、作业运行标记、作业开始时间、作业在指定计算节点上运行的命令、作业运行结果文件需要发送到的指定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果的计算节点名和IP地址和作业号和作业结果接收标记,list结构示意图如图7所示。
所述主控守护进程slurmdagctld根据文本文件为每个其它计算节点维护一个作业队列,根据作业队列控制其它计算节点工作,具体工作过程如下:
主控节点查询SLURM资源管理系统的配置文件slurm.conf(/etc/slurm-llnl/slurm.conf),将IP地址和计算节点名相对应,为后续主控节点读取文本文件为每个计算节点创建作业队列提供信息。
主控节点读取文本文件,根据文本文件内容创建作业队列,主控节点为每个其它计算节点维护一个作业队列,作业队列以每个作业的信息为单位,作业信息包括作业号、作业运行标记(初始化为0,作业被加载到计算节点后,主控节点将此作业运行标记改为1)、作业开始时间、作业在指定计算节点上运行的命令、作业运行结果文件需要发送到的指定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果的计算节点名和IP地址和作业号和作业结果接收标记(作业结果接收标记初始化为0,接收到此结果后主控节点将此作业结果接收标记改为1)。
同时,主控节点为每个其它计算节点维护一个状态标记数组,计算节点处于省电模式时,此计算节点状态标记为0,计算节点处于性能模式时,此计算节点状态标记为1。状态标记的改变由主控节点完成,主控节点发送命令使计算节点处于省电模式时,将计算节点状态标记改为0,主控节点发送命令使计算节点处于性能模式时,将计算节点状态标记改为1。
所述主控守护进程slurmdagctld的控制过程如下:
初始化主控节点需要查询的作业队列为所有作业队列;初始化所有其它计算节点都处于性能模式;
步骤1)主控节点查询需要查询的作业队列中每个作业队列的队头作业运行标记,若作业运行标记为1,则不做任何操作;若作业标记为0,则查询作业运行时需要的其他作业运行结果的作业结果接收标记是否都为1(都为1,表示此作业运行需要的其它作业的运行结果已全部接收),若作业结果接收标记都为1,则主控节点通过作业队列中关于此作业的一项信息——作业在指定计算节点上运行的命令,使计算节点加载此作业,并设置此作业的作业运行标记为1(表示作业已加载);否则,则主控节点向通过命令使计算节点处于省电模式,并改变计算节点的状态标记为0;
步骤2)当其它计算节点执行作业完成后的运行结果文件在主控节点上生成时,主控节点查询作业队列中已执行完成的作业的信息——运行结果文件需要发送到的计算节点地址以及作业号,通过改进型sbcast命令将运行结果文件传送到相应计算节点,并在作业队列中删除已执行完成的作业;并且,主控节点将信息中相应计算节点的作业队列中对应的作业中作业运行需要这个完成的作业的运行结果的接收标记改为1;
步骤3)若关于某个计算节点的作业队列为空,则主控节点通过使计算节点进入省电模式;
步骤4)主控节点将执行完作业的计算节点和接收了运行结果文件的计算节点的作业队列加入需要查询的作业队列,返回步骤1
用srun命令为用户申请其需要的计算节点。申请成功后,选定其中的一个计算节点为主控节点,启动其上的主控守护进程;
例如,用户被分配4个计算节点,计算节点名分别为P0,P1,P2,P3,选定P3为主控节点,启动计算节点P3上的主控守护进程,用户利用ganglia软件查询计算节点P0,P1,P2的运算速度,用户利用计算节点P0,P1,P2以及它们的运算速度信息将图5的具有数据依赖关系的作业通过设定的调度算法得到图6的调度表,用户根据图5和图6编写文本文件,文本文件按作业在计算节点上加载的计算节点名,作业号,作业运行开始时间,作业运行命令,作业运行结果文件需发送的目的计算节点名和作业号,作业开始运行时需要的其他作业的运行结果的作业号的顺序编写,每个作业一行,文本文件内容如下:
P2,T0,0,srun–wP2–n1T0>text0,{P0[T3],P0[T1],P1[T1],P2[T4,T2]},{}
P0,T3,11,srun–wP0–n1T3>text3,{P0[T6],P2[T5]},{P2[T0]}
P1,T1,11,srun–wP1–n1T1>text1,{P2[T5]},{P2[T0]}
P2,T4,11,srun–wP2–n1T4>text4,{P0[T6]},{P2[T0]}
P2,T2,26,srun–wP2–n1T2>text2,{P2[T5]},{P2[T0]}
P0,T6,26,srun–wP0–n1T6>text6,{P1[T7]},{P0[T3],P2[T4]}
P2,T5,38,srun–wP2–n1T5>text5,{P1[T7]},{P1[T1],P2[T2],P0[T3]}
P1,T7,47,srun–wP1–n1T7>text7,{},{P2[T5],P0[T6]}
用改进型sbcast命令将具有数据依据关系的作业依据设定的调度算法编写文本文件提交到主控节点。
针对上述实例,用户将文本文件通过命令sbcast传送给主控节点P3。主控守护进程读取文本文件,针对不同计算节点按照作业开始时间的先后顺序建立作业队列,为计算节点P0建立的作业队列中有作业T3和T6的信息,为计算节点P1建立的作业队列中有作业T1和T7的信息,为计算节点P2建立的作业队列中有作业T0,T4,T2和T5的信息。
步骤一:P3查看P0,P1,P2的作业队列,
P0作业队列队头为T3,T3需要T0的运行结果,而T3关于T0的标记位为0,此时不加载T3,P3使P0处于省电模式,改变P0状态标记为0;
P1作业队列队头为T1,T1需要T0的运行结果,而T1关于T0的标记位为0,此时不加载T1,P3使P1处于省电模式,改变P1状态标记为0;
P2作业队列的队头为T0,T0不需要其他任务的运行结果,P3使P2加载作业T0,改变T0运行标记为1;
步骤二:
在P2上的作业T0运行结束以后,得到运行结果文件text0,P3查询text0需发送到的计算节点的IP地址,得到P0、P1和P2的IP地址,P3将text0发送到P0、P1和P2,并将P0上作业队列中T3关于T0的标记改为1,将P1上作业队列中T1关于T0的标记改为1,将P2上作业队列中T4和T2关于T0的标记改为1。P3删除P2作业队列中关于T0的信息。
P3查询P0,P1,P2的作业队列,
P0作业队列队头为T3,T3需要T0的运行结果,T3关于T0的标记位为1,P0的状态标记为0,P3使P0处于性能模式,改变P0的状态标记为1,然后使P0运行作业T3;
P1作业队列队头为T1,T1需要T0的运行结果,T1关于T0的标记位为1,P1的状态标记为0,P3使P1处于性能模式,改变P1的状态标记为1,然后使P1运行作业T1;
P2作业队列队头为T4,T4需要T0的运行结果,T4关于T0的标记位为1,P2的状态标记为1,此时P3使P2运行作业T4;
步骤三:
在P1上的作业T1运行结束以后,得到运行结果文件text1,P3查询text1需发送到的计算节点的IP地址,得到P2的IP地址,P3将text1发送到P2,并将P2上作业队列中T5关于T1的标记改为1。P3删除P1作业队列中关于T1的信息。
P3查询P1,P2的作业队列,
P1作业队列队头为T7,T7需要T5和T6的运行结果,T7关于T5的标记位为0,T7关于T6的标记位为0,此时P1不需要加载运行作业,因为P1的状态标记为1,所以P3使P1处于省电模式,改变P1状态标记为0;
P2作业队列队头为T4,T4正在运行;
步骤四:
在P0上的作业T3运行结束以后,得到运行结果文件text3,P3查询text3需发送到的计算节点的IP地址,得到P0和P2的IP地址,P3将text3发送到P0和P2,并将P0上作业队列中T6关于T3的标记改为1,将P2上作业队列中T5关于T3的标记改为1,P3删除P0作业队列中关于T3的信息。
P3查询P0,P2的作业队列,
P0作业队列队头为T6,T6需要T3和T4的运行结果,T6关于T3的标记位为1,T6关于T4的标记位为0,P0的状态标记为1,此时P0不需要加载运行作业,因为P0的状态标记为1,所以P3使P0处于省电模式,改变P0状态标记为0;
P2作业队列队头为T4,T4正在运行;
步骤五:
在P2上的作业T4运行结束以后,得到运行结果文件text4,P3查询text4需发送到的计算节点的IP地址,得到P0的IP地址,P3将text4发送到P0,并将P0上作业队列中T6关于T4的标记改为1,P3删除P2作业队列中关于T4的信息。
P3查询P0,P2的作业队列,
P0作业队列队头为T6,T6需要T3和T4的运行结果,T6关于T3的标记位为1,T6关于T4的标记位为1,P0的状态标记为0,P3使P0处于性能模式,改变P0的状态标记为1,然后使P0运行作业T6;
P2作业队列队头为T2,T2需要T0的运行结果,T2关于T0的标记位为1,P2的状态标记为1,此时P3使P2运行作业T2;
步骤六:
在P2上的作业T2运行结束以后,得到运行结果文件text2,P3查询text2需发送到的计算节点的IP地址,得到P2的IP地址,P3将text2发送到P2,P3将P2上作业队列中T5关于T2的标记改为1。P3删除P2作业队列中关于T2的信息。
P3查询P2的作业队列,
P2作业队列队头为T5,T5需要T2的运行结果,T5关于T2的标记位为1,P2的状态标记为1,此时P3使P2运行作业T5;
步骤七:
在P0上的作业T6运行结束以后,得到运行结果文件text6,P3查询text6需发送到的计算节点的IP地址,得到P1的IP地址,P3将text6发送到P1,并将P1上作业队列中T7关于T6的标记改为1,P3删除P0作业队列中关于T6的信息。
P3查询P0,P1的作业队列,
P0作业队列为空,此时P3使P0处于省电模式;
P1作业队列队头为T7,T7需要T5和T6的运行结果,T7关于T5的标记位为0,T7关于T6的标记位为1,此时P1不需要加载运行作业,因为P1的状态标记为1,所以P3使P1处于省电模式,改变P1状态标记为0;
步骤八:
在P2上的作业T5运行结束以后,得到运行结果文件text5,P3查询text6需发送到的计算节点的IP地址,得到P1的IP地址,P3将text5发送到P1,并将P1上作业队列中T7关于T5的标记改为1P3删除P2作业队列中关于T5的信息。
P3查询P1,P2的作业队列,
P1作业队列队头为T7,T7需要T5和T6的运行结果,T7关于T5的标记位为1,T7关于T6的标记位为1,P1的状态标记为0,P3使P1处于性能模式,改变P1的状态标记为1,然后使P1运行作业T7;
P2作业队列为空,此时P3使P2处于省电模式,改变P2状态标记为0;
步骤九:
在P1上的作业T7运行结束以后,得到运行结果文件text7,文件text7即为具有数据依赖关系作业的最终执行结果。P3删除P1作业队列中关于T7的信息,此时P1作业队列为空,P3使P1处于省电模式。
Claims (3)
1.一种基于SLURM的具有数据依赖关系的作业执行方法,用户依据设定的用于完成具有数据依赖关系作业需要的计算节点个数n,向SLURM资源管理系统申请需要的n+1个计算节点,用户依据设定的调度算法编写关于具有数据依赖关系的作业的文本文件,并将文本文件提交至SLURM资源管理系统,SLURM资源管理系统依据所述的文本文件将待执行的作业分配至各个计算节点,每个计算节点依据所述的文本文件,各自独立执行所分配的作业得到执行结果,其特征在于,包括如下步骤:
步骤1:在SLURM资源管理系统中的传送文件sbcast命令内新增传送设定文件至设定计算节点的内容,以用于将当前计算节点上的设定文件传送至设定计算节点;
步骤2:在SLURM资源管理系统现有的守护进程中,添加主控守护进程slurmdagctld;
步骤3:用户根据设定的需求向SLURM资源管理系统申请需要的计算节点个数,SLURM资源管理系统返回分配给用户的计算节点;
步骤4:用户选定申请所得到的计算节点中任意一个计算节点作为主控节点,其它计算节点即为非主控节点;
步骤5:用户依据设定的调度算法,并结合各个非主控节点的运算速度,获得待执行的具有数据依赖关系的作业的调度表,并根据调度表编写文本文件;
所述非主控节点的运算速度是用户根据非主控节点对应的计算节点,利用ganglia软件查询计算节点获得;
步骤6:用户通过sbcast命令将编写的文本文件传送至主控节点;
步骤7:主控节点启动新增的主控守护进程slurmdagctld;主控节点读取文本文件,根据文本文件为每个非主控节点建立各自的作业队列;主控节点按照建立的作业队列控制非主控节点工作或处于省电模式,非主控节点上的作业与其它非主控节点上的作业存在数据依赖关系时,主控节点利用sbcast命令将当前计算节点上的运行结果文件传送至当前计算节点的作业队列指定的计算节点,所有计算节点有序执行完用户提交的具有数据依赖关系的作业,得到具有数据依赖关系的作业的执行结果;
所述文本文件的内容包括计算节点名、作业号、作业开始时间、作业在设定计算节点上运行的命令、运行结果发送的设定计算节点名和作业号、作业运行时需要的其它作业运行结果所在的计算节点名和作业号;
所述每个非主控节点的作业队列通过主控节点读取文本文件形成,以作业的开始时间进行排序,由主控节点建立和删除;作业队列以每个作业的信息为单位,作业信息包括作业号、作业运行标记、作业开始时间、作业在设定计算节点上运行的命令、作业运行结果文件需要发送到的设定计算节点名和IP地址和作业号、作业运行时需要的其它作业运行结果所在的计算节点名和IP地址,以及作业号和作业结果接收标记;
主控节点为每个非主控节点设置一个状态标记,计算节点处于省电模式时,此计算节点状态标记为0,计算节点处于性能模式时,此计算节点状态标记为1。
2.根据权利要求1所述的基于SLURM的具有数据依赖关系的作业执行方法,其特征在于,所述主控守护进程控制过程如下:
初始化主控节点需要查询的作业队列为所有非主控节点的作业队列,所有非主控节点均设置为性能模式;
步骤1)主控节点查询需要查询的计算节点作业队列中每个作业队列的排在队首的作业运行标记,若作业运行标记为1,则不做任何操作;若作业运行标记为0,则查询当前作业运行时需要的其它作业运行结果的作业结果接收标记是否都为1,若作业结果接收标记都为1,则主控节点依据文本文件中设定的作业在设定计算节点上运行的信息,发送指令使设定计算节点加载当前作业,并设置此作业的作业运行标记为1;否则,则主控节点通过命令使计算节点处于省电模式,并改变计算节点的状态标记为0;
若作业运行需要的其它作业结果接收标记为1,表示此作业运行需要的其它作业的运行结果已全部接收;
步骤2)当非主控节点上作业执行完成后的运行结果文件在主控节点上生成时,主控节点利用sbcast命令将当前计算节点上的运行结果文件传送至文本文件上设定的计算节点,并在作业队列中删除已执行完成的作业;并且,主控节点将接收到运行结果文件的计算节点的作业队列中需要该运行结果文件的作业的作业接收结果标记设置为1;
步骤3)若关于某个计算节点的作业队列为空,则主控节点通过发送控制命令使计算节点进入省电模式;
步骤4)主控节点将执行完作业的计算节点和接收了运行结果文件的计算节点的作业队列依次加入需要查询的作业队列,返回步骤1)。
3.根据权利要求2所述的基于SLURM的具有数据依赖关系的作业执行方法,其特征在于,对命令sbcast进行扩增修改,具体包括以下步骤:
(1)修改包含sbcast命令的各个选项的函数实现的Opts.c文件中的解析命令行externvoidparse_command_line(intargc,char*argv[])函数,新增指定特定节点的选项D,即在静态结构体矩阵staticstructoptionlong_options[]中新增矩阵元素{"destination",required_argument,0,'D'},并添加选项D的处理函数:slurm_addr_t*_destination(slurm_addr_t*node_addr);
(2)修改传送文件sbcast命令的主函数sbcast.c文件的main函数,若命令中存在D参数,则将文件传送到D参数后的地址,若不存在D参数,则按现有的方式将文件传送到用户申请的其它所有计算节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239254.4A CN103336720B (zh) | 2013-06-17 | 2013-06-17 | 一种基于slurm的具有数据依赖关系的作业执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239254.4A CN103336720B (zh) | 2013-06-17 | 2013-06-17 | 一种基于slurm的具有数据依赖关系的作业执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336720A CN103336720A (zh) | 2013-10-02 |
CN103336720B true CN103336720B (zh) | 2016-07-06 |
Family
ID=49244894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310239254.4A Active CN103336720B (zh) | 2013-06-17 | 2013-06-17 | 一种基于slurm的具有数据依赖关系的作业执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336720B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593192B (zh) * | 2013-11-19 | 2016-08-17 | 湖南大学 | 一种基于slurm调度的算法集成与评测系统及方法 |
CN107870949B (zh) * | 2016-09-28 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据分析作业依赖关系生成方法和系统 |
CN110991041B (zh) * | 2019-12-03 | 2024-01-26 | 北京仿真中心 | 一种基于高性能计算系统的自动化多专业协同仿真方法 |
CN111142849B (zh) * | 2019-12-10 | 2023-07-14 | 贝壳技术有限公司 | 流程处理方法、装置、存储介质及处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4308241B2 (ja) * | 2006-11-10 | 2009-08-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム |
CN102012840A (zh) * | 2010-12-23 | 2011-04-13 | 中国农业银行股份有限公司 | 一种数据的批量调度方法和系统 |
CN103049326B (zh) * | 2013-01-16 | 2015-04-15 | 浪潮(北京)电子信息产业有限公司 | 在作业管理与调度系统中管理作业程序的方法和系统 |
CN103118134B (zh) * | 2013-02-28 | 2015-09-02 | 浙江大学 | 一种面向任务级的大数据分发质量保障方法及装置 |
-
2013
- 2013-06-17 CN CN201310239254.4A patent/CN103336720B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103336720A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309946B (zh) | 多媒体文件处理方法、装置及系统 | |
Huedo et al. | A modular meta-scheduling architecture for interfacing with pre-WS and WS Grid resource management services | |
CN100428167C (zh) | 计算机系统、服务器以及作业执行控制方法 | |
Cui et al. | A reinforcement learning-based mixed job scheduler scheme for grid or IaaS cloud | |
US8898274B2 (en) | Grid proxy architecture for network resources | |
US20080229320A1 (en) | Method, an apparatus and a system for controlling of parallel execution of services | |
US11110601B2 (en) | Scheduling robots for robotic process automation | |
EP1408407A2 (en) | Method and apparatus for task allocation in a distributed computing environment | |
US8046759B2 (en) | Resource allocation method and system | |
US20050188087A1 (en) | Parallel processing system | |
CN103336720B (zh) | 一种基于slurm的具有数据依赖关系的作业执行方法 | |
CN101645022A (zh) | 用于多个集群的作业调度管理系统及方法 | |
US8271988B2 (en) | System-generated resource management profiles | |
US20100121904A1 (en) | Resource reservations in a multiprocessor computing environment | |
US20030135617A1 (en) | Intelligent system control agent | |
Selvi et al. | Resource allocation issues and challenges in cloud computing | |
JP2011170679A (ja) | 仮想計算機システムおよびその資源配分制御方法 | |
JP6326062B2 (ja) | 異なる環境どうし間でのジョブ実行依頼のトランスペアレントなルーティング | |
CN106843890B (zh) | 基于智能决策的传感器网络、节点及其运行方法 | |
CN115102851B (zh) | 一种面向hpc与ai融合计算的融合平台及其资源管理方法 | |
US20100122261A1 (en) | Application level placement scheduler in a multiprocessor computing environment | |
CN115237547B (zh) | 一种非侵入式hpc计算集群的统一容器集群托管系统和方法 | |
CN109450913A (zh) | 一种基于策略的多节点注册调度方法 | |
Durairaj et al. | MOM-VMP: multi-objective mayfly optimization algorithm for VM placement supported by principal component analysis (PCA) in cloud data center | |
US20100122254A1 (en) | Batch and application scheduler interface layer in a multiprocessor computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |