分发调度机的资源调度方法、系统以及计算机设备与流程

文档序号:11250724阅读:694来源:国知局
分发调度机的资源调度方法、系统以及计算机设备与流程

本发明涉及计算机技术领域,特别是涉及一种分发调度机的资源调度方法、系统、以及计算机设备。



背景技术:

近年来,通用计算处理器如图形处理器(graphicprocessingunit,简称gpu)、现场可编程门阵列(field-programmablegatearray,简称fpga)等在硬件架构上已取得持续的高速发展,已演变为拥有强大的计算能力的高度并行、多线程及多处理核心的处理器,其采用不同于中央处理器(centralprocessingunit,cpu)的单指令多线程(singleinstructionmultiplethread,simt)体系结构,从而增加了编程的灵活性。目前通用计算处理器一般用于解决数据并行计算的问题,其已被广泛运用于视频转码、物理模拟、地球表层测绘以及网络安全等热门研究领域。

因此,如何充分利用通用计算处理器的并行计算能力来解决复杂运算的问题,已经成为当今通用计算处理器技术的研究热点之一,目前通常采用基于单主机多gpu卡或多fpga的调度方式对资源进行调度以完成复杂的计算任务,但是该方式存在计算能力有限且扩展性差等缺点。



技术实现要素:

基于此,有必要针对目前基于通用计算处理器进行资源调度以完成复杂计算任务的问题,提供一种分发调度机的资源调度方法、系统以及计算机设备。

一种分发调度机的资源调度方法,包括:

接收待执行任务;

根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源;

根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个。

在其中一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,包括:

根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长;

则根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个,包括:

根据多个任务执行机分别执行待执行任务的完成时长,将待执行任务派发至完成时长最短的任务执行机。

在其中一个实施例中,还包括:

周期性获取多个任务执行机的执行状态;

则根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长,包括:

根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长。

在其中一个实施例中,还包括:

根据待执行任务确定待执行任务的派发时长;

则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:

若任务执行机为负载状态,则确定任务执行机执行负载任务的第一执行时长;

根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;

根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行待执行任务的完成时长。

在其中一个实施例中,根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行待执行任务的完成时长,包括:

确定第一执行时长和派发时长中的较大值;

则任务执行机执行待执行任务的完成时长为所述较大值与第二执行时长之和。

在其中一个实施例中,确定任务执行机执行负载任务的第一执行时长,包括:

根据任务执行机执行任务的资源参考值和负载任务的任务队列计算任务执行机执行负载任务的第一执行时长。

在其中一个实施例中,根据任务执行机执行任务的资源参考值和负载任务的任务队列计算任务执行机执行负载任务的第一执行时长,包括:

根据任务执行机执行任务的资源参考值确定任务执行机执行当前任务的资源消耗值;

根据任务执行机执行当前任务的资源消耗计算任务执行机并发执行任务队列中多个任务的并发执行时长;

根据任务队列中多个任务的并发执行时长,确定并发时长最大值为任务执行机执行负载任务的第一执行时长。

在其中一个实施例中,还包括:

根据待执行任务确定待执行任务的派发时长;则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:

若任务执行机为空闲状态,则根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;

则任务执行机执行待执行任务的完成时长为第二执行时长以及派发时长之和。

在其中一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,包括:

根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种;

则根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个,包括:

根据多个任务执行机分别执行待执行任务的cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种,将待执行任务派发至cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种占用率最少的任务执行机。

在其中一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,包括:

根据多个任务执行机当前的cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种;

则根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个,包括:

根据多个任务执行机当前的cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种,将待执行任务派发至当前cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种占用率最少的任务执行机。

一种资源调度系统,包括任务分发调度机和多个任务执行机,其中,任务分发调度机用于接收待执行任务,并根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至所述多个任务执行机中的一个;

多个任务执行机用于执行任务分发调度机派发的待执行任务。

一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上方法的步骤。

一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如上方法的步骤。

上述资源调度方法、存储介质以及计算机设备,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,从而根据多个任务执行机分别执行待执行任务所需的资源派发待执行任务,以使资源最优的任务执行机执行该待执行任务,使得整个系统的计算资源(包括cpu以及通用计算处理器的资源)得以统一管理,并发挥最大效能。

附图说明

图1为一个实施例中资源调度系统的结构示意图;

图2为一个实施例中分发调度机的资源调度方法的流程图;

图3为一个实施例中分发调度机的资源调度方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

本发明实施例提供了一种资源调度系统,在本实施例中,多台计算机通过网络连接,组成资源调度系统,该多台计算机按照职责角色从逻辑上可分为任务分发调度机和任务执行机,其中任务分发调度机在同一时刻只能有一台,而任务执行机则可以有一台或多台。实际上一台物理计算机可以同时担当以上两个角色。在本实施例中,为了描述方便,如图1所示,假设该系统由一台任务分发调度机q和两台任务执行机e1和e2组成。任务分发调度机q可以实时监控任务执行机e1和e2,因此,当任务分发调度机q接收到待执行任务后,则根据待执行任务的输入数据确定任务执行机e1和e2分别执行该待执行任务所需的资源,从而根据任务执行机e1和e2分别执行该待执行任务所需的资源,派发待执行任务至所需资源最优的一个任务执行机中执行,以使执行该待执行任务耗时最短且系统利用率最高,使得整个系统达到最佳效能。

在一个实施例中,任务分发调度机通过监控各任务执行机,从而实时获取各任务执行机的执行能力和执行情况,其中,各任务执行机的执行能力可以是根据测试数据或实际运行过程中获取的基准参考值,即通过让单独一个任务(基准任务)在任务执行机上执行来获取,包括基准cpu及gpu的计算性能、根据各任务执行机执行该基准任务所消耗的资源,包括执行时间、cpu占用率、gpu占用率、内存大小以及显存大小等。举例来说,假设系统中有n种任务,显然,对于每一种任务来说,如果输入数据相同,其在某台任务执行机上执行的性能是基本固定的。通过前述的任务执行测试可以获知,对于n种任务中的某种任务x,当输入数据一定时(假设输入数据为dx),则该任务在任务执行机e1上执行所消耗的资源如下:执行时间为te1x,cpu占用率为oe1x,gpu占用率为goe1x,内存为mx,显存为gmx;该任务在任务执行机e2上执行所消耗的资源如下:执行时间为te2x,cpu占用率为oe2x,gpu占用率为goe2x,内存为mx,显存为gmx。

因此,当任务的输入数据不同时(例如数据量大小不同),可以通过算法分析和实际任务执行测试来获得以上指标随数据的不同而变化的规律。为了描述方便,在本实施例中假设以上指标是线性变化的,但cpu和gpu的占用率不变。因此,当任务的输入数据为d时,则可以根据任务的输入数据d和上述基准参考值估算出以上各项指标:假设该任务在任务执行机e1上的执行时间为te1x*d/dx,cpu占用率为oe1x,gpu占用率为goe1x,内存为mx*d/dx,显存为gmx*d/dx,该任务在任务执行机e2上的执行时间为te2x*d/dx,cpu占用率为oe2x,gpu占用率为goe2x,内存为mx*d/dx,显存为gmx*d/dx。

在本实施例中,系统中的每台任务执行机在初始化时均创建一个任务队列,当接收到任务分发调度机发送来的任务后,就把任务加入到队列中。因此,各任务执行机的执行情况则可以是各任务执行机执行各自任务队列的情况,即根据各任务执行机的任务队列中的任务的输入数据和基准参考值估算的各任务执行机执行各自任务队列中的任务所需要的资源,包括执行时间、cpu占用率、gpu占用率、内存大小以及显存大小等。

本发明实施例提供了一种分发调度机的资源调度方法,如图2所示,该方法可以包括如下步骤:

步骤s201,接收待执行任务。

步骤s202,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源。

步骤s203,根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个。

在本实施例中,任务分发调度机负责接收待执行任务,从而根据待执行任务的输入数据确定多个任务执行机分别执行该待执行任务所需要的资源。即可以是任务分发调度机根据待执行任务的输入数据估算将该待执行任务加入各任务执行机的任务队列后各任务执行机执行包括该待执行任务的任务队列所需要的资源,包括执行完成时长、cpu占用率、gpu占用率、内存大小以及显存大小等,进而派发待执行任务至所需资源最优的一个任务执行机中执行,如可以调度执行完成时长最短、系统利用率最高的任务执行机执行该待执行任务,从而使得整个系统达到最佳效能。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,具体可以是根据待执行任务的输入数据确定多个任务执行机分别执行该待执行任务的完成时长,从而将待执行任务派发至完成时长最短的任务执行机。

在一个实施例中,如图3所示,该分发调度机的资源调度方法还可以包括:

步骤s301,周期性获取多个任务执行机的执行状态。

在本实施例中,任务执行机的执行状态包括空闲状态和负载状态,负载状态表示该任务执行机有任务正在执行,空闲状态则表示该任务执行机目前没有需要执行的任务。任务执行机监控自己的状态并每隔一段时间(例如10毫秒)向任务分发调度机发送自己的状态,任务执行机还负责执行任务并返回任务执行结果,同时将本机的状态实时通知到任务分发调度机。任务分发调度机则负责接收并保存各个任务执行机的状态,从而根据待执行任务的输入数据和各任务执行机的执行状态确定各任务执行机分别执行该待执行任务的完成时长,并将待执行任务派发给完成时长最短的任务执行机执行。

在一个实施例中,当系统初始化完成后,任务分发调度机则可以开始接收任务并分发给任务执行机执行。当任务分发调度机接收到第一个待执行任务的时候,对于首次调度,此时各任务执行机的状态均为空闲状态,则任务分发调度机首先获取该待执行任务的输入数据d,根据输入数据d可以估算出该待执行任务在各任务执行机上的执行时间,即各任务执行机执行该待执行任务的第二执行时长。在本实施例中,还是以任务执行机e1和e2进行说明,假设根据输入数据h可以估算出该待执行任务分别在任务执行机e1和e2上的执行时间为te1和te2,且根据输入数据d的数据量除以系统的网络速度可以得出该待执行任务的派发时长tn,由此可知,任务执行机e1执行该待执行任务的完成时长tc1=te1+tn,任务执行机e2执行该待执行任务的完成时长tc2=te2+tn。如果tc1<tc2,则将该待执行任务派发至e1,如果tc1>tc2,则将该待执行任务派发至e2。

又由于在输入数据d一定的情况下,派发时长tn是固定的,因此,对于首次调度来说,只需要考虑任务执行机e1和e2分别执行该待执行任务的执行时间te1和te2的大小即可。

在一个实施例中,对于非首次调度,即任务执行机为负载状态的情况。当任务分发调度机接收到一项待执行任务时,首先获取该待执行任务的输入数据d,根据输入数据d估算该待执行任务分别在任务执行机e1和e2的执行时间te1和te2,即各任务执行机执行该待执行任务的第二执行时长。

并根据各任务执行机当前的负载任务估算其执行负载任务的第一执行时长,即估算任务执行机e1和e2执行各自任务队列的执行总时间tqe1和tqe2。在本实施例中,估算执行任务队列的执行总时间需要考虑并发执行,即,正在执行的任务x所需要的cpu占用率为ox,gpu占用率为gox,内存为mx,显存为gmx,假设任务执行机的总内存为m,显存总量为gm,则执行任务x的剩余资源为:cpu剩余占用率为1-ox,gpu剩余占用率为1-gox,剩余内存为m-mx,剩余显存为gm-gmx;如果剩余资源可供任务队列头部的一个或者几个任务执行,则应该将这些任务并发执行,因此,一个任务队列的执行总时间为该队列中所有并发执行的任务中所需时间最大的任务的执行时间。

然后根据输入数据d的数据量除以系统的网络速度得出该待执行任务的派发时长tn。因此,根据任务执行机e1和e2当前的负载任务估算e1和e2执行负载任务的第一执行时长即tqe1和tqe2、任务执行机e1和e2执行该待执行任务的第二执行时长即te1和te2以及该待执行任务的派发时长tn,可以估算出该待执行任务在e1的完成时长tc1=te1+(max(tqe1,tn)),该待执行任务在e2的完成时长tc2=te2+(max(tqe2,tn)),如果tc1<tc2,则将该待执行任务派发至e1,如果tc1>tc2,则将该待执行任务派发至e2。其中,max(tqe1,tn)表示取tqe1和tn中的较大值,max(tqe2,tn)表示取tqe2和tn中的较大值。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,具体可以是根据待执行任务的输入数据确定多个任务执行机分别执行该待执行任务的cpu占用率和/或gpu占用率,从而将待执行任务派发至需要cpu占用率和/或gpu占用率最少的任务执行机。

在本实施例中,任务分发调度机根据待执行任务的输入数据估算将该待执行任务加入各任务执行机的任务队列后各任务执行机执行包括该待执行任务的任务队列所需要的cpu占用率和/或gpu占用率,假设任务分发调度机经过估算后确定任务执行机e1执行包括该待执行任务的任务队列所需要的cpu占用率或gpu占用率为20%,任务执行机e2执行包括该待执行任务的任务队列所需要的cpu占用率或gpu占用率为30%,则任务分发调度机会优先将该待执行任务派发至任务执行机e1。当然,在某些场景下也可以同时考虑cpu占用率和gpu占用率,即将cpu占用率和gpu占用率综合考虑。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,具体可以是根据待执行任务的输入数据确定多个任务执行机分别执行该待执行任务的内存占用率和/或显存占用率,从而将待执行任务派发至内存占用率和/或显存占用率最少的任务执行机。

在本实施例中,任务分发调度机根据待执行任务的输入数据估算将该待执行任务加入各任务执行机的任务队列后各任务执行机执行包括该待执行任务的任务队列所需要的内存占用率和/或显存占用率,假设任务分发调度机经过估算后确定任务执行机e1执行包括该待执行任务的任务队列所需要的内存占用率或显存占用率为25%,任务执行机e2执行包括该待执行任务的任务队列所需要内存占用率或显存占用率为35%,则任务分发调度机会优先将该待执行任务派发至任务执行机e1。当然,在某些场景下也可以同时考虑内存占用率和显存占用率,即将内存占用率和显存占用率综合考虑。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,具体还可以是根据多个任务执行机的当前cpu占用率、gpu占用率、内存占用率、显存占用率中的至少一种,从而将待执行任务派发至当前cpu占用率、gpu占用率、内存占用率、显存占用率的至少一种占用率最少或者综合占用率最少的任务执行机。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下步骤:接收待执行任务;根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源;根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,包括:根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长;则根据多个任务执行机分别执行待执行任务所需的资源,派发所述待执行任务至多个任务执行机中的一个,包括:根据多个任务执行机分别执行待执行任务的完成时长,将待执行任务派发至完成时长最短的任务执行机。

在一个实施例中,还包括:周期性获取多个任务执行机的执行状态;则根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长,包括:根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长。

在一个实施例中,还包括:根据待执行任务确定待执行任务的派发时长;则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:若任务执行机为负载状态,则确定任务执行机执行负载任务的第一执行时长;根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行待执行任务的完成时长。

在一个实施例中,根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行所述待执行任务的完成时长,包括:确定第一执行时长和派发时长中的较大值;任务执行机执行待执行任务的完成时长则为该较大值与第二执行时长之和。

在一个实施例中,确定任务执行机执行负载任务的第一执行时长,包括:根据任务执行机执行任务的资源参考值和负载任务的任务队列计算任务执行机执行所述任务队列的第一执行时长。

在一个实施例中,根据任务执行机执行任务的资源参考值和所述负载任务的任务队列计算任务执行机执行所述任务队列的第一执行时长,包括:根据所述任务执行机执行任务的资源参考值确定所述任务执行机执行当前任务的资源消耗值;根据所述任务执行机执行当前任务的资源消耗计算所述任务执行机并发执行所述任务队列中多个任务的并发执行时长;根据任务队列中多个任务的并发执行时长,确定并发时长最大值为任务执行机执行所述负载任务的第一执行时长。

在一个实施例中,还包括:根据待执行任务确定待执行任务的派发时长;则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:若任务执行机为空闲状态,则根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;任务执行机执行待执行任务的完成时长则为第二执行时长以及派发时长之和。

本发明实施例还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如下步骤:接收待执行任务;根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源;根据多个任务执行机分别执行待执行任务所需的资源,派发待执行任务至多个任务执行机中的一个。

在一个实施例中,根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务所需的资源,包括:根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长;则根据多个任务执行机分别执行待执行任务所需的资源,派发所述待执行任务至多个任务执行机中的一个,包括:根据多个任务执行机分别执行待执行任务的完成时长,将待执行任务派发至完成时长最短的任务执行机。

在一个实施例中,还包括:周期性获取多个任务执行机的执行状态;则根据待执行任务的输入数据确定多个任务执行机分别执行待执行任务的完成时长,包括:根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长。

在一个实施例中,还包括:根据待执行任务确定待执行任务的派发时长;则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:若任务执行机为负载状态,则确定任务执行机执行负载任务的第一执行时长;根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行待执行任务的完成时长。

在一个实施例中,根据第一执行时长、第二执行时长以及待执行任务的派发时长计算任务执行机执行所述待执行任务的完成时长,包括:确定第一执行时长和派发时长中的较大值;任务执行机执行待执行任务的完成时长则为该较大值与第二执行时长之和。

在一个实施例中,确定任务执行机执行负载任务的第一执行时长,包括:根据任务执行机执行任务的资源参考值和负载任务的任务队列计算任务执行机执行所述任务队列的第一执行时长。

在一个实施例中,根据任务执行机执行任务的资源参考值和所述负载任务的任务队列计算任务执行机执行所述任务队列的第一执行时长,包括:根据所述任务执行机执行任务的资源参考值确定所述任务执行机执行当前任务的资源消耗值;根据所述任务执行机执行当前任务的资源消耗计算所述任务执行机并发执行所述任务队列中多个任务的并发执行时长;根据任务队列中多个任务的并发执行时长,确定并发时长最大值为任务执行机执行所述负载任务的第一执行时长。

在一个实施例中,还包括:根据待执行任务确定待执行任务的派发时长;则根据待执行任务的输入数据和多个任务执行机的执行状态确定多个任务执行机分别执行待执行任务的完成时长,包括:若任务执行机为空闲状态,则根据待执行任务的输入数据确定任务执行机执行待执行任务的第二执行时长;任务执行机执行待执行任务的完成时长则为第二执行时长以及派发时长之和。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1