著录项信息
专利名称 | 一种消息传递接口任务和资源调度系统及方法 |
申请号 | CN201210410403.4 | 申请日期 | 2012-10-24 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-05-07 | 公开/公告号 | CN103780655A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/08 | IPC分类号 | H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 阿里巴巴集团控股有限公司 | 申请人地址 | 英属开曼群岛大开曼资本大厦一座四层847号邮箱
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 阿里巴巴集团控股有限公司 | 当前权利人 | 阿里巴巴集团控股有限公司 |
发明人 | 彭渊 |
代理机构 | 北京安信方达知识产权代理有限公司 | 代理人 | 栗若木 |
摘要
本发明提供了一种消息传递接口任务和资源调度系统及方法,所述系统包括MPI调度器(101);所述MPI调度器(101),用于基于待执行的MPI任务的资源需求进行MPI任务和资源调度,所述MPI任务使用MPI任务包的形式,所述MPI任务包括MPI运行程序和运行配置信息,所述运行配置信息包括MIP任务的资源需求。本发明的系统不同于Torque的操作系统任务管理工具,它是一个专门为MPI任务和资源调度设计的MPI调度系统,可以基于待执行的MPI任务的资源需求进行有效的MPI任务和资源的调度。
1.一种消息传递接口MPI任务和资源调度系统,其特征在于,
所述系统包括MPI调度器(101),所述MPI调度器(101)有多个,包括MPI主调度器和MPI备调度器;初始化时多个MPI调度器同时竞争一个分布式锁,竞争到者为MPI主调度器,未竞争到者为MPI备调度器;所述MPI主调度器用于在运行正常时执行调度;所述MPI备调度器用于在所述MPI主调度器故障时竞争分布式锁,在竞争到分布式锁后作为MPI主调度器继续执行调度;
所述MPI调度器(101),用于基于待执行的MPI任务的资源需求进行MPI任务和资源调度,所述MPI任务使用MPI任务包的形式,所述MPI任务包括MPI运行程序和运行配置信息,所述运行配置信息包括MPI任务的资源需求;所述资源调度是管理多台计算机的资源,根据MPI任务请求的资源进行分配,完成任务后再回收资源重利用。
2.如权利要求1所述的系统,其特征在于:
所述系统还包括集群计算机上设置的MPI任务执行器(102);
所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度,包括:在有待执行的MPI任务且集群计算机可用资源能够支持该待执行的MPI任务的资源需求时,将所述MPI任务下发至一台或多台计算机上的MPI任务执行器(102);
所述MPI任务执行器(102),用于执行下发的MPI任务。
3.如权利要求2所述的系统,其特征在于:
所述系统还包括资源池(103);
所述MPI任务执行器(102),还用于向所述资源池(103)注册所在计算机的资源,及在所在计算机的资源的状态变化时更新资源池(103)中记录的相应资源的状态;
所述资源池(103),用于记录集群计算机资源的实时信息,包括集群中各计算机具有的资源及其状态;
所述MPI调度器(101)是根据所述资源池(103)记录的集群计算机资源的实时信息获知所述集群计算机可用资源。
4.如权利要求1或2或3所述的系统,其特征在于:
所述系统还包括:任务队列模块(105),用于以队列方式存放MPI任务;
所述MPI调度器(101)是从所述任务队列模块(105)的任务队列检测到待执行的MPI任务。
5.如权利要求4所述的系统,其特征在于:
所述系统还包括:任务包生成模块(104),用于生成符合任务包规范的MPI任务包并提交至所述任务队列模块(105)。
6.如权利要求4所述的系统,其特征在于:
所述MPI任务执行器(102)还用于将执行的MPI任务的状态实时上报至所述MPI调度器(101);
所述MPI调度器(101)还用于在下发MPI任务时,将任务队列中所述MPI任务的状态更新为任务执行中,在接收MPI任务执行器(102)上报的MPI任务状态后,更新任务队列中所述MPI任务的状态。
7.如权利要求6所述的系统,其特征在于:
所述系统还包括:监控管理模块(106),用于查看所述任务队列中的MPI任务及状态,取消所述任务队列中一个或多个MPI任务,及查看MPI任务的处理日志。
8.如权利要求4所述的系统,其特征在于:
所述MPI调度器(101)还用于在检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间时,通知MPI任务执行器(102)终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止;
所述MPI任务执行器(102)还可用于在收到终止MPI任务的通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。
9.如权利要求2或3或5或6或7或8所述的系统,其特征在于:
所述MPI调度器(101)下发MPI任务时同时还向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求;
所述MPI任务执行器(102)执行下发的MPI任务,包括:各计算机上的MPI任务执行器(102)隔离出所述MPI任务需求的本机资源并在此资源下执行所述MPI任务。
10.一种消息传递接口MPI任务和资源调度方法,包括:
MPI调度器(101)确定待执行的MPI任务的资源需求;
所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度;
其中,所述MPI任务使用MPI任务包的形式,所述MPI任务包括MPI运行程序和运行配置信息,所述运行配置信息包括MPI任务的资源需求;所述资源调度是管理多台计算机的资源,根据MPI任务请求的资源进行分配,完成任务后再回收资源重利用;
初始化时,多个MPI调度器(101)同时竞争一个分布式锁,竞争到者为MPI主调度器,未竞争到者为MPI备调度器;
MPI主调度器运行正常时执行调度;
MPI备调度器在MPI主调度器故障时竞争分布式锁,竞争到分布式锁后成为MPI主调度器继续执行调度。
11.如权利要求10所述的方法,其特征在于:
所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度,包括:
MPI调度器(101)确定有待执行的MPI任务,且集群计算机可用资源能够支持该待执行MPI任务的资源需求时,将所述MPI任务下发至一台或多台计算机上的MPI任务执行器(102);
所述方法还包括:
MPI任务执行器(102)执行下发的MPI任务。
12.如权利要求11所述的方法,其特征在于:
还包括:所述MPI任务执行器(102)向资源池(103)注册所在计算机的资源,并在所在计算机的资源的状态变化时更新资源池(103)中记录的相应资源的状态;
所述MPI调度器(101)是根据所述资源池(103)记录的集群计算机资源的实时信息获知所述集群计算机可用资源。
13.如权利要求11或12所述的方法,其特征在于,还包括:
任务队列模块(105)以队列方式存放MPI任务,MPI任务的初始状态设为待执行;
所述MPI调度器(101)是从所述任务队列模块(105)的任务队列检测到待执行的MPI任务,在下发MPI任务时还将任务队列中所述MPI任务的状态更新为任务执行中;
所述MPI任务执行器(102)将执行的MPI任务的状态实时上报至MPI调度器(101);
所述MPI调度器(101)接收到MPI任务执行器(102)上报的MPI任务状态后,更新任务队列中所述MPI任务的状态。
14.如权利要求13所述的方法,其特征在于,还包括:
所述MPI调度器(101)检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间时,通知MPI任务执行器(102)终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止;
所述MPI任务执行器(102)收到终止MPI任务的通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。
15.如权利要求13所述的方法,其特征在于,还包括:
通过监控管理模块(106)查看所述任务队列中的MPI任务及状态,取消所述任务队列中一个或多个MPI任务,及查看MPI任务的处理日志。
16.如权利要求11或12或15所述的方法,其特征在于,还包括:
所述MPI调度器(101)下发MPI任务时同时向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求;
执行所述MPI任务的所述计算机上的MPI任务执行器(102)隔离出所述MPI任务需求的本机资源,并在此资源下执行所述MPI任务。
一种消息传递接口任务和资源调度系统及方法\n技术领域\n[0001] 本发明涉及消息传递接口(MPI,Message Passing Interface)处理技术,尤其涉及MPI任务和资源调度系统及方法。\n背景技术\n[0002] MPI标准是消息传递并行程序设计的标准之一,是一个规范或者是库,目前最新版本为MPI-2(1997年发布),MPI标准能完成并行机的进程间通讯,当前的实现版本有MPICH2和开放MPI(OpenMPI),目前广泛用于互联网企业的广告算法和迭代算法,大型互联网公司都有成百上千的MPI计算集群。\n[0003] 比如其他大型互联网公司的MPI集群的资源调度做法是通过便携式批处理系统(PBS,Portable Batch System)方式进行任务和资源调度。PBS最初由美国国家航空航天局(NASA,National Aeronautics and SpaceAdministration)的Ames研究中心开发,主要为了提供一个能满足异构计算网络需要的软件包,用于灵活的批处理,特别是满足高性能计算的需要,如集群系统、超级计算机和大规模并行系统。PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业,如MPI、并行虚拟机(PVM,Parallel Virtual Machine)、高性能公式翻译器(HPF,HighPerformance Fortran(Formula Translator))、Mozilla公用授权(MPL,MozillaPublic License)。其中,PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。PBS目前包括开放PBS(OpenPBS)、PBS专业版(PBSPro,PBS Professional)和托尔克(Torque)三个主要分支。其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发;PBS pro是PBS的商业版本,功能最为丰富;Torque是Clustering公司接过OpenPBS并给与的后续支持的一个开源版本。\n[0004] 由于MPI任务的运行需要执行MPIRUN命令,但是MPIRUN只能保证在一台机器上进行MPI任务执行,而不能多台计算机MPI任务并行执行,并且,如果同时100个MPI任务需执行MPIRUN,那么会同时启动100个进程争夺资源,这样CPU时间片会轮流分配给各个任务,从而影响所有任务的正常作业。\n[0005] Torque做任务管理系统的情况下,当多个用户使用同一个计算资源时,每个用户用Torque脚本提交自己的任务,由Torque对这些任务进行管理和资源的分配,提供对批处理作业和分散的计算节点的控制。通过Torque命令提供任务的提交、队列管理、启动、超时中止、任务运行状态查看等。\n[0006] 由于Torque是一个类似WINDOWS任务管理器的作业管理系统,它不是一个可编程化专业的计算调度框架,它需要人工输入命令的方式提交任务,然后以进程启动的方式执行,如果任务超时便杀死,它更像一个操作系统的任务管理工具,针对任务的启动和查看状态的进程管理,但不能有效地进行MPI任务和资源的调度。\n[0007] 发明人经研究发现:\n[0008] 任务调度上,Torque方式下没有一个调度器角色的概念,在启动MPI任务后,不能够实时检测各任务的运行状态并针对异常和任务完成状态作出处理和响应。当有异常产生时,基于Torque的任务工具无法容错,只能全盘终止,再重新计算,而且也无法检测到任务总体完成状况。\n[0009] 资源调度上,Torque方式下无法进行计算机的CPU、内存、网络等资源的隔离和分配,根据MPI任务需要的资源进行资源隔离和分配并且将剩余的资源用于其他任务,例如一个任务需要2个CPU,80G内存,Torque方式下则无法隔离出符合此要求的资源用于完成该任务并将剩余的资源用于其他任务。Torque方式无法做到资源隔离和分配,就不能达到较高的资源利用率,容易造成浪费。\n[0010] 另外,Torque方式下通过命令提交MPI任务,但是只当成普通的操作系统进程任务,由于需要大量的命令参数来输入这些运行时的必要条件,造成移植性扩充性差,操作复杂。\n发明内容\n[0011] 本发明要解决的技术问题是提供一种更为有效的消息传递接口任务和资源调度系统及方法。\n[0012] 为了解决上述技术问题,本发明提供了一种消息传递接口(MPI)任务和资源调度系统,所述系统包括MPI调度器(101);所述MPI调度器(101),用于基于待执行的MPI任务的资源需求进行MPI任务和资源调度,所述MPI任务使用MPI任务包的形式,所述MPI任务包括MPI运行程序和运行配置信息,所述运行配置信息包括MIP任务的资源需求。\n[0013] 进一步地,上述系统还可以具有以下特点:\n[0014] 所述系统还包括集群计算机上设置的MPI任务执行器(102);\n[0015] 所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度,包括:在有待执行的MPI任务且集群计算机可用资源能够支持该待执行的MPI任务的资源需求时,将所述MPI任务下发至一台或多台计算机上的MPI任务执行器(102);\n[0016] 所述MPI任务执行器(102),用于执行下发的MPI任务。\n[0017] 进一步地,上述系统还可以具有以下特点:\n[0018] 所述系统还包括资源池(103);\n[0019] 所述MPI任务执行器(102),还用于向所述资源池(103)注册所在计算机的资源,及在所在计算机的资源的状态变化时更新资源池(103)中记录的相应资源的状态;\n[0020] 所述资源池(103),用于记录集群计算机资源的实时信息,包括集群中各计算机具有的资源及其状态;\n[0021] 所述MPI调度器(101)是根据所述资源池(103)记录的集群计算机资源的实时信息获知所述集群计算机可用资源。\n[0022] 进一步地,上述系统还可以具有以下特点:\n[0023] 所述系统还包括:任务队列模块(105),用于以队列方式存放MPI任务;\n[0024] 所述MPI调度器(101)是从所述任务队列模块(105)的任务队列检测到待执行的MPI任务。\n[0025] 进一步地,上述系统还可以具有以下特点:\n[0026] 所述系统还包括:任务包生成模块(104),用于生成符合任务包规范的MPI任务包并提交至所述任务队列模块(105)。\n[0027] 进一步地,上述系统还可以具有以下特点:\n[0028] 所述MPI任务执行器(102)还用于将执行的MPI任务的状态实时上报至所述MPI调度器(101);\n[0029] 所述MPI调度器(101)还用于在下发MPI任务时,将任务队列中所述MPI任务的状态更新为任务执行中,在接收MPI任务执行器(102)上报的MPI任务状态后,更新任务队列中所述MPI任务的状态。\n[0030] 进一步地,上述系统还可以具有以下特点:\n[0031] 所述系统还包括:监控管理模块(106),用于查看所述任务队列中的MPI任务及状态,取消所述任务队列中一个或多个MPI任务,及查看MPI任务的处理日志。\n[0032] 进一步地,上述系统还可以具有以下特点:\n[0033] 所述MPI调度器(101)还用于在检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间时,通知MPI任务执行器(102)终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止;\n[0034] 所述MPI任务执行器(102)还可用于在收到终止MPI任务的通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。\n[0035] 进一步地,上述系统还可以具有以下特点:\n[0036] 所述MPI调度器(101)有多个,包括MPI主调度器和MPI备调度器;\n[0037] 所述MPI主调度器,用于在运行正常时执行调度;\n[0038] 所述MPI备调度器,用于在所述MPI主调度器故障时竞争分布式锁,在竞争到分布式锁后作为MPI主调度器继续执行调度。\n[0039] 进一步地,上述系统还可以具有以下特点:\n[0040] 所述MPI调度器(101)下发MPI任务时同时还向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求;\n[0041] 所述MPI任务执行器(102)执行下发的MPI任务,包括:各计算机上的MPI任务执行器(102)隔离出所述MPI任务需求的本机资源并在此资源下执行所述MPI任务。\n[0042] 为了解决上述技术问题,本发明还提供了一种消息传递接口(MPI)任务和资源调度方法,包括:MPI调度器(101)确定待执行的MPI任务的资源需求;所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度;其中,所述MPI任务使用MPI任务包的形式,所述MPI任务包括MPI运行程序和运行配置信息,所述运行配置信息包括MIP任务的资源需求。\n[0043] 进一步地,上述方法还可以具有以下特点:\n[0044] 所述MPI调度器(101)基于待执行的MPI任务的资源需求进行MPI任务和资源调度,包括:\n[0045] MPI调度器(101)确定有待执行的MPI任务,且集群计算机可用资源能够支持该待执行MPI任务的资源需求时,将所述MPI任务下发至一台或多台计算机上的MPI任务执行器(102);\n[0046] 所述方法还包括:\n[0047] MPI任务执行器(102)执行下发的MPI任务。\n[0048] 进一步地,上述方法还可以具有以下特点:\n[0049] 还包括:所述MPI任务执行器(102)向资源池(103)注册所在计算机的资源,并在所在计算机的资源的状态变化时更新资源池(103)中记录的相应资源的状态;\n[0050] 所述MPI调度器(101)是根据所述资源池(103)记录的集群计算机资源的实时信息获知所述集群计算机可用资源。\n[0051] 进一步地,上述方法还可以具有以下特点:\n[0052] 任务队列模块(105)以队列方式存放MPI任务,MPI任务的初始状态设为待执行;\n[0053] 所述MPI调度器(101)是从所述任务队列模块(105)的任务队列检测到待执行的MPI任务,在下发MPI任务时还将任务队列中所述MPI任务的状态更新为任务执行中;\n[0054] 所述MPI任务执行器(102)将执行的MPI任务的状态实时上报至MPI调度器(101);\n[0055] 所述MPI调度器(101)接收到MPI任务执行器(102)上报的MPI任务状态后,更新任务队列中所述MPI任务的状态。\n[0056] 进一步地,上述方法还可以具有以下特点:\n[0057] 所述MPI调度器(101)检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间时,通知MPI任务执行器(102)终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止;\n[0058] 所述MPI任务执行器(102)收到终止MPI任务的通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。\n[0059] 进一步地,上述方法还可以具有以下特点:\n[0060] 通过监控管理模块(106)查看所述任务队列中的MPI任务及状态,取消所述任务队列中一个或多个MPI任务,及查看MPI任务的处理日志。\n[0061] 进一步地,上述方法还可以具有以下特点:\n[0062] 所述MPI调度器(101)下发MPI任务时同时向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求;\n[0063] 执行所述MPI任务的所述计算机上的MPI任务执行器(102)隔离出所述MPI任务需求的本机资源,并在此资源下执行所述MPI任务。\n[0064] 进一步地,上述方法还可以具有以下特点:\n[0065] 初始化时,多个MPI调度器(101)同时竞争一个分布式锁,竞争到者为MPI主调度器,未竞争到者为MPI备调度器;\n[0066] MPI主调度器运行正常时执行调度;\n[0067] MPI备调度器在MPI主调度器故障时竞争分布式锁,竞争到分布式锁后成为MPI主调度器继续执行调度。\n[0068] 上述方案不同于Torque的操作系统任务管理工具,它是一个专门为MPI任务和资源调度设计的MPI调度系统,可以基于待执行的MPI任务的资源需求进行有效的MPI任务和资源的调度。\n附图说明\n[0069] 图1是本发明实施例一中MPI任务和资源调度系统的结构图;\n[0070] 图2是本发明实施例二中MPI任务和资源调度方法的流程图;\n[0071] 图3是本发明实施例三中MPI任务和资源调度系统的结构图;\n[0072] 图4是本发明实施例四竞争主调度器的过程的流程图;\n[0073] 图5是本发明实施例四任务队列生成及任务状态更新的过程的流程图;\n[0074] 图6是本发明实施例四任务执行超时终止的过程的流程图。\n具体实施方式\n[0075] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。\n[0076] 实施例一\n[0077] 如图1所示,本实施例MPI任务和资源调度系统包括MPI调度器101、MPI任务执行器\n102和资源池103。\n[0078] MPI调度器101,用于基于待执行的MPI任务的资源需求进行MPI任务和资源调度。\n本实施例中,在有待执行的MPI任务且资源池103中记录的集群计算机可用资源能够支持该待执行的MPI任务的资源需求时,将所述MPI任务下发至一台或多台计算机上的MPI任务执行器102。特别地,本实施例的MPI任务采用MPI任务包的形式,包括MPI运行程序和运行配置信息,还可包括依赖程序。运行配置信息包括MIP任务的资源需求如运行所述MPI任务要占用的CPU、内存等资源,还可以包括优先级配置、超时时间、启动时间、计算数据下载信息、账号信息和安全权限等信息中一种或多种。\n[0079] MPI任务执行器102,设置于集群计算机上,用于执行下发的MPI任务。较佳地,MPI调度器101下发MPI任务时同时向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求,各计算机上的MPI任务执行器隔离出所需的本机资源并在此资源下执行MPI任务。具体可使用操作系统或虚拟机的资源隔离技术,比如linux体系的linux容器(LXC,LinuXcontainers)和控制组(Cgroup,Control group)。MPI任务执行器102还用于向资源池103注册所在计算机的资源如CPU、内存等,及在所在计算机的资源的状态变化时更新资源池103中记录的相应资源的状态;如,在执行MPI任务时将分配给所述MPI任务的资源的状态更新为占用,在释放资源(如MPI任务完成或终止)后将资源池103中相应的资源的状态更新为可用。\n[0080] 资源池103,用于记录集群计算机资源的实时信息,如集群中各计算机具有的资源(CPU、内存、硬盘等)及其状态。资源池103可以保存于设备的内存里,也可以持久保存在文件数据里。\n[0081] 本实施例中,MPI任务包的运行配置信息中设置有MPI任务的资源需求信息,调度时可以根据此资源需求信息为MPI任务分配适当的资源,提高调度的效率、有效性和准确性,使系统资源得到合理的利用。MPI调度器101为一个MPI任务分配的资源有可能是多台计算机的资源,也就是多台计算机并行执行一个MPI任务,这种方式与现有的Torque不同,可以更好地实现资源分配。而计算机隔离出符合要求的资源来执行MPI任务,剩余的资源可用于其他任务,可以提高资源利用率。\n[0082] 实施例二\n[0083] 本实施例的MPI任务和资源调度方法基于实施例一的MPI任务和资源调度系统,系统初始时,集群中各计算机上的MPI任务执行器会获取所在计算机具有的资源并发送到资源池103进行注册。如图2所示,该方法包括:\n[0084] 步骤110,MPI调度器101确定有待执行的MPI任务,且资源池103中记录的集群计算机可用资源能够支持该待执行MPI任务的资源需求;\n[0085] 本实施例的MPI任务为MPI任务包(MPI运行压缩包)的形式,其中包含的信息与实施例一相同,也包含了MIP任务的资源需求。\n[0086] 步骤120,MPI调度器101将所述MPI任务下发至一台或多台计算机上的MPI任务执行器102;\n[0087] 本步骤中,MPI调度器101下发MPI任务时可以同时向执行所述MPI任务的每台计算机发送所述MPI任务对该计算机的资源需求。\n[0088] 步骤130,MPI任务执行器102执行下发的MPI任务;\n[0089] 较佳地,各计算机上的MPI任务执行器102可以隔离出所需的本机资源并在此资源下执行MPI任务。\n[0090] 步骤140,MPI任务执行器102在所在计算机的资源的状态变化时更新资源池103中记录的相应资源的状态。\n[0091] 例如,MPI任务执行器102在执行MPI任务时将分配给所述MPI任务的资源的状态更新为占用,在释放资源(如执行完MPI任务或终止执行MPI任务)后将资源池103中相应的资源的状态更新为可用。\n[0092] 本实施例调度时可以根据MPI任务的资源需求信息为MPI任务分配适当的资源,提高调度的效率、有效性和准确性。也可以多台计算机并行执行一个MPI任务,也可以隔离出符合要求的资源来执行MPI任务,提高资源利用率。\n[0093] 实施例三\n[0094] 如图3所示,本实施例MPI任务和资源调度系统除包括MPI调度器101、MPI任务执行器102和资源池103外,还包括任务包生成模块104、任务队列模块105和监控管理模块106。\n其中,MPI调度器101、MPI任务执行器102和资源池103具有实施一中相应模块的功能外,还具有一些增强的功能。\n[0095] 本实施例中,MPI调度器101有多个。初始化时,多个MPI调度器同时竞争一个分布式锁,竞争到者为MPI主调度器,未竞争到者为MPI备调度器。MPI主调度器用于在运行正常时执行调度;MPI备调度器用于在MPI主调度器故障时竞争分布式锁,竞争到分布式锁后成为MPI主调度器继续执行调度。MPI调度器101是本系统的核心组件,本实施例的MPI调度器采用主备结构,可以避免单点故障,满足对可靠性的更高要求。\n[0096] 本实施例中,MPI调度器101还用于在下发MPI任务时,将任务队列中所述MPI任务的状态更新为任务执行中,在接收MPI任务执行器102上报的MPI任务状态后,更新任务队列中所述MPI任务的状态,如任务执行完成、任务执行异常等。此外,MPI调度器101还可用于在检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间时,通知MPI任务执行器102终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止。\n[0097] 本实施例中,MPI任务执行器102还用于在执行MPI任务的过程中将MPI任务状态如任务执行完成、任务执行异常等实时上报至MPI调度器101。MPI任务执行器102还可用于在收到MPI调度器101终止MPI任务的通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。\n[0098] 任务包生成模块104,用于生成符合任务包规范的MPI任务包并提交,提交的方式可以是命令行、管理界面等。采用任务包生成模块生成MPI任务包可以提高任务包生成的效率。\n[0099] 任务队列模块105,用于以队列方式存放提交的MPI任务,可以先入先出的方式或者按照MPI任务的优先级设置任务队列,MPI任务的初始状态可设为待执行。MPI调度器101检测此任务队列中是否有待执行的MPI任务。本实施例以任务队列的方式等待调度器获取资源后执行,而不是全部任务同时运行争抢资源,可以提高任务管理的可控性和管理的有效性。任务队列模块105还用于实时记录任务队列中MPI任务的状态。\n[0100] 监控管理模块106,用于查看任务队列中MPI任务的信息,如MPI任务的名称、数量和状态(如待执行、执行完成、执行异常、任务终止等),还可根据用户命令取消任务队列中待执行的一个或多个MPI任务,查看MPI任务的处理日志等。本模块支持命令行和界面操作,对任务执行的关键环节(如执行完成、执行异常、任务终止等)可以发出事件响应。\n[0101] 本实施例调度系统可实时检查MPI任务的并行执行状况并及时处理,克服了Torque方式下出现任务异常时只能全盘中止重新计算的缺陷,可以及时停止异常的任务,并不影响其它正常任务,提高系统的纠错能力。\n[0102] 实施例四\n[0103] 本实施例的MPI任务和资源调度方法基于实施例三的MPI任务和资源调度系统,其方法包含了实施例二中的MPI任务和资源调度方法,在其基础上,增加了以下的处理过程:\n[0104] 竞争主调度器的过程,如图4所示,包括:\n[0105] 步骤210,初始化时,多个MPI调度器同时竞争一个分布式锁,竞争到者为MPI主调度器,未竞争到者为MPI备调度器;\n[0106] 步骤220,MPI主调度器运行正常时执行调度;\n[0107] 步骤230,MPI备调度器在MPI主调度器故障时竞争分布式锁,竞争到分布式锁后成为MPI主调度器继续执行调度。\n[0108] MPI调度器101是本系统的核心组件,本实施例的MPI调度器采用主备结构,可以避免单点故障,满足对可靠性的更高要求。\n[0109] 任务队列生成及任务状态更新的过程,如图5所示,包括:\n[0110] 步骤310,任务队列模块105以队列方式存放任务包生成模块104提交的MPI任务,MPI任务的初始状态设为待执行;\n[0111] 本步骤中,可以先入先出的方式或者按照MPI任务的优先级设置队列。以排队的方式等待获取资源进行执行,而不是全部任务同时运行争抢资源,可以提高任务管理的可控性和管理有效性。\n[0112] 步骤320,MPI调度器101检测到任务队列中有待执行的MPI任务且集群计算机可用资源支持所述MPI任务的资源需求时,向一台或多台计算机下发任务,并将任务队列中所述MPI任务的状态更新为任务执行中;\n[0113] 步骤330,MPI任务执行器102将执行的MPI任务的状态实时上报至MPI调度器101;\n[0114] 上述任务状态如可以是任务执行完成、任务执行异常等。\n[0115] 步骤340,MPI调度器101接收到MPI任务执行器102上报的MPI任务状态后,更新任务队列中所述MPI任务的状态。\n[0116] 为方便对队列任务信息的实时监控,本方法还可以通过监控管理模块106查看任务队列中MPI任务的数量、状态(包括等待状况、执行状况、例如等待中、已完成、中止等);取消任务队列中一个或多个MPI任务包;查看MPI任务的处理日志。\n[0117] 任务执行超时终止的过程,包括:\n[0118] 步骤410,MPI调度器101检测到MPI任务运行时长超过所述MPI任务的运行配置信息中的超时时间;\n[0119] 步骤420,MPI调度器101通知MPI任务执行器102终止所述MPI任务,并更新任务队列中所述MPI任务的状态为任务已终止;\n[0120] 步骤430,MPI任务执行器102收到所述通知后,终止所述MPI任务的执行并释放所述MPI任务所占用的资源。\n[0121] 本实施例方法可实时检查MPI任务的并行执行状况并及时处理,克服了Torque方式下出现任务异常时只能全盘中止重新计算的缺陷,可以及时停止异常的任务,并不影响其它正常任务,提高系统的纠错能力。\n[0122] 应用示例\n[0123] 下面以广告机器学习这一应用场景下的MPI任务和资源调度为例,对本发明的上述实施例进行示例性的说明。\n[0124] 对于网上购物网站的搜索关键字广告算法场景中,通常需要针对关键字进行复杂的机器学习算法,通过相关模型分析出某些指标,这个过程需要反复迭代,即要进行多则上千少则上百轮的计算,每一轮的结果又是下一轮计算的所需条件,由于该类型算法对资源的消耗很大,而目前广告算法的MPI集群中的计算机有限,每日各种类型的机器学习分析算法任务都需要提交任务进行计算,那么任务多,资源少,必须有一套任务和资源调度框架进行合理的管理和分配。\n[0125] 假设集群中有200台计算机,每台资源为CPU24核,内存80g,硬盘1000g;有三个MPI任务需要提交到该集群完成计算,三个任务的资源需求依次为:\n[0126] MPI任务一:CPU24核*60,内存80g*60,硬盘200g*60;\n[0127] MPI任务二:CPU24核*80,内存80g*80,硬盘500g*80;\n[0128] MPI任务三:CPU24核*70,内存80g*70,硬盘400g*70。\n[0129] 基于上述实施例三和四的MPI任务和资源调度系统进行调度时,先通过任务包生成模块104针对每个计算任务分别构建MPI任务,MPI任务使用MPI任务包的形式,MPI任务包为MPI运行压缩包,其中包括MPI运行程序(包括MPI实现的机器学习算法代码)、依赖程序及运行配置信息,运行配置信息包括本计算任务的资源需求。任务包生成模块104将生成的三个MPI任务提交到任务队列模块105,提交的方式可以是命令行方式或者是管理界面方式。\n[0130] 任务队列模块105以队列方式存放收到的MPI任务,MPI任务的运行配置信息中不包括MPI任务优先级信息时以先入先出的方式设置任务队列,MPI任务的运行配置信息中包括MPI任务优先级信息时按照MPI任务的优先级设置任务队列。\n[0131] 当集群计算机启动时,每台机器上的MPI任务执行器102向资源池103注册所属计算机的资源,并在所在计算机的资源的状态变化时更新资源池103中相应资源的状态,例如在执行MPI任务时更新此计算机的资源为被占用状态,在执行完或终止执行MPI任务时更新此计算机的资源为可用状态。资源池103记录集群计算机资源的实时信息,如集群中计算机的CPU信息、内存信息、硬盘信息。资源池103还可以根据计算机的使用情况更新资源信息。\n[0132] MPI调度器101检测任务队列,检测到待执行的MPI任务一,从资源池103获知当前可用资源的情况,确定能够支持此MPI任务的资源需求,将MPI任务一发送到集群中的60台计算机进行执行,此60台计算机的MPI任务执行器隔离出MPI任务所需的资源并在此资源下并行执行MPI任务一中的MPI机器学习算法逻辑,占用60台机器上的CPU、内存、硬盘资源进行迭代计算,MPI任务执行器102即时将资源池103中该60台计算机的资源更新为被占用状态。\n[0133] MPI调度器101继续检测任务队列,检测到待执行的MPI任务二,从资源池103获知当前可用资源的情况,确定能够支持此MPI任务的资源需求,将MPI任务二发送到集群中的除上述60台计算机之外的80台计算机进行执行,此80台计算机的MPI任务执行器隔离出MPI任务所需的资源并在此资源下并行执行MPI任务二中的MPI机器学习算法逻辑,占用80台机器上的CPU、内存、硬盘资源进行迭代计算,MPI任务执行器即时更新资源池103中该80台计算机的资源为被占用状态。\n[0134] MPI调度器101继续检测任务队列,检测到待执行的MPI任务三,发现此任务的所需资源为70台机器的CPU和内存,从资源池103获知当前可用资源总体上无法满足MPI任务三的资源需求(可用CPU和内存无法满足需求,可用的硬盘能满足要求),于是暂不执行MPI任务三。\n[0135] MPI任务一正常完成后,相应的60台计算机中的MPI任务执行器102释放所占用的资源,更新资源池中相应资源的状态为可用,并上报MPI调度器。MPI调度器101将任务队列中MPI任务一的状态更新任务执行完成。\n[0136] MPI任务二在执行过程中发生异常,相应的80台计算机中的MPI任务执行器102释放资源,更新资源池中相应资源的状态,并上报MPI调度器101。MPI调度器101将任务队列中MPI任务二的状态更新为任务执行异常。\n[0137] MPI任务一执行完成后,MPI调度器101从资源池103获知当前可用资源能够支持MPI任务三的资源需求,将MPI任务三发送到集群中的70台计算机进行执行,此70台计算机的MPI任务执行器隔离出MPI任务所需的资源并在此资源下并行执行第三MPI任务中的MPI机器学习算法逻辑,占用70台机器上的CPU、内存、硬盘资源进行迭代计算,MPI任务执行器即时更新资源池103中该70台计算机的资源为被占用状态。\n[0138] MPI任务三的运行配置信息中还包括超时时间,MPI调度器101在MPI任务三执行时长超过配置的该超时时间时,通知相应70台计算机的MPI任务执行器102终止执行所述MPI任务。70台计算机的MPI任务执行器终止执行MPI任务三,释放其占用的资源,更新资源池中相应资源的状态为可用。\n[0139] MPI任务的开发人员可以通过监控管理模块106查看任务队列中MPI任务的数量、状态等信息,还可以取消任务队列中的一个或多个MPI任务;查看MPI任务的处理日志。\n[0140] 上述MPI任务和资源调度系统和方法,在资源调度上,可以管理多台计算机的CPU、内存等资源,根据MPI任务请求的资源进行分配,完成任务后再回收资源重利用;在任务调度上,可以实现MPI任务的提交,队列等候,优先策略和调度分发到不同计算机执行。改进了基于Torque的操作系统作业管理工具的做法,并区别于其他大型互联网公司的类似问题解决。\n[0141] 当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。\n[0142] 本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
法律信息
- 2018-03-06
- 2014-06-04
实质审查的生效
IPC(主分类): H04L 29/08
专利申请号: 201210410403.4
申请日: 2012.10.24
- 2014-05-07
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-10-20
|
2010-05-24
| | |
2
| | 暂无 |
2008-09-16
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |