掌桥专利:专业的专利平台
掌桥专利
首页

基于动态资源状态的并行流任务分配的方法和设备

文献发布时间:2024-01-17 01:13:28


基于动态资源状态的并行流任务分配的方法和设备

技术领域

本披露内容的各个方面涉及基于动态资源状态的并行流任务分配的方法和设备。

背景技术

当执行大规模流计算时,并行化可以提高同时执行的算术运算的执行效率,以充分利用比如中央处理单元(CPU)、内存等计算资源。进程可以是资源分配和调度的单独单位,并且线程可以是CPU调度的基本单位。线程可以是进程的子集。一个线程可能通常专注于处理一些特定的任务,并且可能不独立拥有系统资源,除了仅用于运行比如程序计数器的一些资源。

在示例应用中,一个任务管理器(作为一个进程)可以管理一个或多个任务。每个任务可以是一个线程,并且可以占用一个槽。每个槽的资源可以是整个任务管理器的资源的平均子集。槽之间不能有资源的竞争。用户可以在任务管理器中设置多个槽,使得用户可以确定任务彼此之间的隔离粒度。槽的数量可以设置为任务管理器下可用的CPU核数量,这样平均来说,每个槽平均包括一个CPU核。进一步地,在该应用中,执行图可以是对逻辑图进行转换以供在分布式运行时执行的结果的物理图。执行图的节点可以是任务,并且边可以指示数据流或数据集的输入/输出关系或分区。

在示例中,每个任务管理器可以有3个槽。当向任务管理器输入执行图时,可以根据并行度分配四个任务管理器,该并行度在整个图的阶段A中可以是四。每个流水线可以在单独的一个任务管理器上执行。执行图的每个执行顶点可以对应于单独的一个任务管理器的一个槽。如果没有足够的槽,则槽池可以向槽管理器发送请求,并且如果槽管理器确定集群中有足够的资源来满足这一需求,则槽管理器可以向任务管理器发送指派命令。然后,任务管理器可以向槽池提供槽。

上述示例可以实现执行图的并行执行,该执行图可以是流。然而,任务管理器中的一些槽仍然可能空闲,而并未指派给任何任务。集群中的资源可能没有得到充分利用。另外,执行顶点之间的数据交互可能增加线程切换的开销,并且增加进程间通信的压力。

发明内容

各实施例涉及一种基于动态资源状态的并行流任务分配的方法,该方法包括:基于用于执行要为服务应用执行的多个作业中的作业的计算资源与用于执行该多个作业的多个节点中的两个或更多个节点中可用的计算资源相匹配,确定用于执行该作业的计算资源与该多个节点中的该两个或更多个节点中的每个节点中可用的计算资源之间的相似度值;从该多个节点中的该两个或更多个节点中选择在单个节点中可用的计算资源与用于执行该作业的计算资源之间具有最低相似度值的单个节点;以及将该作业分配给所选单个节点,使得该单个节点执行与该作业相对应的任务。

该方法可以进一步包括,基于用于执行该作业的计算资源与该多个节点之一中可用的计算资源相匹配,将该作业分配给该多个节点中的这个节点,使得该多个节点中的这个节点执行该任务。

该作业队列可以以先进先出(FIFO)的方式保存该多个作业。

该方法可以进一步包括,基于用于该执行作业的计算资源与该多个节点中的每个节点中可用的计算资源不匹配,等待该动态资源状态被更新,该动态资源状态包括该多个节点中的每个节点中可用的计算资源的信息。

该方法可以进一步包括,基于用于执行该作业的计算资源与该多个节点中的两个或更多个节点中可用的计算资源相匹配,从该多个节点中的该两个或更多个节点中选择至少一个节点,在该至少一个节点中执行的任务数量最少。

该方法可以进一步包括,基于所选至少一个节点包括一个节点,将该作业分配给该一个节点,使得该一个节点执行该任务。

选择该单个节点包括基于所选至少一个节点包括多个节点,从该多个节点中选择具有最低相似度值的单个节点。

该方法可以进一步包括,通过从该多个节点中的相应一个节点中可用的计算资源中减少用于执行所分配的作业的计算资源来更新该动态资源状态。

该方法可以进一步包括,将该多个节点中的相应一个节点中可用的计算资源分配给所分配的作业。

该方法可以进一步包括为所分配的作业生成任务。

该方法可以进一步包括执行所生成的任务。

该方法可以进一步包括确定所执行的任务是否完成。

该方法可以进一步包括,基于确定完成该任务,释放所分配的计算资源。

该方法可以进一步包括,通过用该释放的计算资源增加该多个节点中该相应一个节点中可用的计算资源来更新该动态资源状态。

该方法可以进一步包括,更新该动态资源状态,以包括用于执行该作业的计算资源与在该多个节点中的该两个或更多个节点中的每一个节点中可用的计算资源之间的所确定相似度值的信息。

该相似度值可以是用于执行该作业的逻辑中央处理单元(CPU)的数量与该多个节点中的相应节点中可用的逻辑CPU的数量之间的差值,加上用于执行该作业的逻辑内存的大小与该相应节点中可用的逻辑内存的数量之间的差值。

用于执行该作业的计算资源可以包括逻辑中央处理单元(CPU)的数量和逻辑内存的大小,并且在该多个节点的每一个节点中可用的计算资源可以包括空闲逻辑CPU的数量和空闲逻辑内存的大小。

服务器可以被配置为执行该方法。

一种计算机程序元件,可以包括程序指令,这些程序指令在由一个或多个处理器执行时使该一个或多个处理器执行该方法。

一种计算机可读介质,可以包括程序指令,这些程序指令在由一个或多个处理器执行时使该一个或多个处理器执行该方法。

附图说明

当结合非限制性示例和附图考虑时,参考具体实施方式将更好地理解本发明,在附图中:

图1示出了展示包括智能手机和服务器的用于使用电子叫车服务的通信布置的图;

图2示出了根据实施例的基于动态资源状态的并行流任务分配的架构的图;

图3示出了展示根据实施例的基于动态资源状态的并行流任务分配的方法的流程图;

图4A至图4I示出了根据实施例的基于动态资源状态的并行流任务分配的示例的图;以及

图5示出了图1的服务器的框图,该服务器用于实施图2的架构。

具体实施方式

以下具体实施方式参考了附图,附图通过展示的方式示出了可以实践本披露内容的具体细节和实施例。足够详细地描述了这些实施例,以使本领域技术人员能够实践本披露内容。可以利用其他实施例并且可以在不脱离本披露内容的范围的情况下进行结构改变和逻辑改变。各实施例不一定是相互排斥的,因为一些实施例可以与一个或多个其他实施例组合以形成新的实施例。

在设备或方法中的一者的上下文中描述的实施例对于其他设备或方法是类似有效的。类似地,在设备的上下文中描述的实施例对于车辆或方法是类似有效的,反之亦然。

在实施例的上下文中描述的特征可以相应地适用于其他实施例中的相同或类似的特征。在实施例的上下文中描述的特征即使未在其他实施例中明确地描述也可以相应地适用于这些其他实施例。此外,如针对实施例的上下文中的特征所描述的添加和/或组合和/或替代可以相应地适用于其他实施例中的相同或类似的特征。

在各种实施例的上下文中,针对特征或元素所使用的冠词“一(a)”、“一个(an)”和“该(the)”包括对一个或多个特征或元素的提及。

如本文所使用的,术语“和/或”包括一个或多个相关联所列项中的任何和所有组合。

在下文中,将详细描述实施例。

通常在智能手机上使用的电子叫车app允许其用户通过他或她的智能手机针对行程来叫出租车或私人驾驶员。

图1示出了包括智能手机105和服务器115(计算机)的用于使用电子叫车服务的通信布置100的图。

智能手机105的屏幕示出了电子叫车app的图形用户界面(GUI)106,智能手机105的用户先前将该电子叫车app安装在其智能手机上并且打开(即,启动)以电子呼叫乘车(出租车或私人驾驶员)。

GUI 106包括用户位置附近的地图107,该app可以基于定位服务(例如基于GPS的定位服务)来确定该地图。进一步地,GUI 106包括出发点框108(其可以被设置为从定位服务获得的用户当前位置)和目的地框109(用户可以触摸以输入目的地(例如,打开可能的目的地列表))。也可能存在允许用户选择各种选项的菜单(未示出),这些选项例如支付方式(现金、信用卡、电子叫车服务的信用余额)。当用户选择目的地并且做出了任何必要的选项选择时,他或她可以触摸“寻找汽车”按钮110以发起对合适汽车的搜索。

为此,电子叫车app经由无线电连接与电子叫车服务的服务器115通信。服务器115可以查询服务器115的存储器或数据存储装置121,其具有已登记车辆111的当前位置的信息、关于这些车辆预计何时空闲的信息、关于交通堵塞的信息等。由此,服务器115的处理器选择最合适的车辆(如果可用,即,如果可以满足请求),并提供驾驶员到那里接载用户的时间、乘车价格以及需要多久到达目的地的估计。服务器115将该信息传送回智能手机105,并且智能手机105在GUI 106上显示该信息。然后,用户可以通过触摸对应的按钮来接受(即,预订)。如果用户接受,则服务器115通知车辆111中的所选车辆(或等效地,其驾驶员),即,服务器115已分配用于满足运输请求的车辆。

应当注意,尽管服务器115被描述为单个服务器,但是在实际应用中通常将由(例如,实施云服务的)多个服务器计算机的布置来提供其功能,例如用于为整个城市提供电子叫车服务的功能。因此,服务器115所提供的以下描述的功能可以理解为由服务器或服务器计算机的布置来提供。

数据存储装置121例如可以是由云存储提供商提供的基于云的系统120的一部分,以存储和访问可以用于做出决定的数据,比如乘客和车辆的位置信息、他们的历史信息(之前的预订和所走的路线)等。

服务器115与车辆111一起提供电子叫车服务,即形成运输系统。应当注意,虽然图1的示例涉及运送人员的电子叫车服务,但是可以类似地提供用于提供运输诸如新鲜食物和包裹等其他物品的运输服务的运输系统。

当用户预订运输任务时,服务器115可以向智能手机105提供运输任务完成的时间估计,例如,用户将在何时到达、食物将在何时被送交给用户等。

服务器115可以同时或并行接收电子叫车任务和运输任务的流,这两个任务都包括计算或算术运算。当这种情况发生时,服务器115可以通过查询存储在服务器115的存储器或数据存储装置121中的动态资源状态,将并行流的电子叫车任务和运输任务分配给其CPU和内存或其计算资源。具体地,并行流的计算任务的分配可以基于对计算资源集群中每个节点的计算能力的考虑。

本文描述的实施例可以充分利用集群中的空闲计算资源,同时确保服务的负载平衡并降低停机的风险。这些实施例还可以解决当并行执行任务时未考虑作业和节点资源的适应性以及服务负载平衡的问题。进一步地,这些实施例可以降低服务失败率并提高资源利用率。

图2示出了根据实施例的基于动态资源状态230的并行流任务分配的架构200的图。

参考图2,架构200可以包括流式应用程序接口(API)服务部分210、流水线服务部分215、作业管理器220、资源管理器225、动态资源状态230、以及任务管理器235、240、245和250。

流式API服务部分210从安装在智能手机(例如,图1的智能手机105)上的服务应用205(例如,电子叫车服务应用“GrabExpress”和运输服务应用“GrabTransport”)的集合接收并行任务流。因此,本文描述的实施例可以应用于使用并行流处理的电子服务公司的所有业务。流式API服务部分210将接收到的并行流解析成数据流。

流水线服务部分215将流被解析成的数据流流水线化为作业序列(操作链)。作业可以是单个算术运算符,也可以是一组多个算术运算符。流水线服务部分215输出每个单独的作业。

作业管理器220将每个单独的作业(其不被拆分成新作业)指派给包括在作业管理器220中的作业队列中的顺序位置。关于多个作业的数据已经在它们自己的任务中,彼此无关,并且可以独立执行。该作业队列以先进先出(FIFO)的方式保存传入的作业。作业可以被插入到作业队列的尾部。

作业管理器220进一步估计用于执行每个单独的作业的逻辑CPU(例如,核)的数量和逻辑内存的大小(以千兆字节(GB)为单位)。计算资源集群中多个节点中的单个节点上的逻辑CPU数量可以等于物理CPU数量乘以每个物理CPU的核数量再乘以超线程数量。

资源管理器225可以从包括在作业管理器220中的作业队列的头部获得每个所指派的作业,并且基于动态资源状态230将每个所获得的作业分配给节点或任务管理器235、240、245和250之一,以适应集群的计算资源。可以基于下文参考图3进一步描述的分配策略来进一步分配每个所获得的作业。动态资源状态230动态地(实时地)跟踪每个节点的空闲逻辑CPU的数量、空闲逻辑内存的大小(以GB为单位)、以及在这些节点中的相应一个节点上执行的任务的数量。具体地,资源管理器225扫描并读取动态资源状态230,以基于分配策略为每个作业定位适当的节点,并将作业中的相应一个作业分配给所定位的适当节点。

任务管理器235、240、245和250中的每一个都位于集群中的相应节点上。任务管理器235、240、245和250中的每一个执行分配给任务管理器235、240、245和250中的相应一个任务管理器的作业。任务管理器235、240、245和250中的每一个进一步向资源管理器225报告任务管理器235、240、245和250中相应一个任务管理器的空闲逻辑CPU的数量和空闲逻辑内存(计算资源)的大小。当新作业到达时,任务管理器235、240、245和250之一使用用于新作业的逻辑CPU的数量和逻辑内存的大小来生成新任务,并且递增在任务管理器235、240、245和250中的这个任务管理器处执行的任务数量。当任务管理器235、240、245和250中的这个任务管理器完成执行新任务时,任务管理器235、240、245和250中的这个任务管理器释放新任务所使用的计算资源,并向资源管理器225报告释放的计算资源的资源状态和减少的任务数量。

图3示出了展示根据实施例的基于动态资源状态230的并行流任务分配的方法300的流程图。

在操作305中,方法300包括资源管理器225或作业管理器220从要为服务应用执行的作业中获取作业,并将该作业插入作业队列的尾部。

在操作310中,方法300包括资源管理器225从作业队列的头部读取作业。作业进入和离开队列遵循FIFO规则。

在操作315中,方法300包括资源管理器225扫描动态资源状态230,以基于集群中的用于所读取作业的匹配节点满足或具有可用于执行作业的逻辑CPU数量和逻辑内存大小的标准来定位该匹配节点。

在操作320中,方法300包括资源管理器225确定是否存在匹配节点。基于确定存在匹配节点,方法300在操作325中继续。否则,方法300在操作330中继续。

在操作325中,方法300包括资源管理器225确定是否存在多个匹配节点。基于确定存在多个匹配节点,方法300在操作335中继续。否则,方法300在操作340中继续。

在操作330中,方法300包括资源管理器225在返回操作310之前等待接收更新信号。更新信号指示动态资源状态230被更新。

在操作335中,方法300包括资源管理器225选择被确定为存在的匹配节点。

在操作340中,方法300包括资源管理器225从多个匹配节点中选择其中执行的任务数量最少的一个或多个节点。这平衡了集群中所有节点的服务负载。

在操作345中,方法300包括资源管理器225确定是否选择了其中执行的任务数量最少的多个节点。基于确定选择了其中执行的任务数量最少的多个节点,方法300在操作350中继续。否则,方法300在操作355中继续。

在操作350中,方法300包括资源管理器225从其中执行的任务数量最少的多个节点中选择在所读取作业与这些节点中的相应一个节点之间具有最低相似度值的节点。该相似度值可以是用于执行所读取作业的逻辑CPU的数量与该相应节点中可用的逻辑CPU的数量之间的差值,加上用于执行所读取作业的逻辑内存的大小与该相应节点中可用的逻辑内存的数量之间的差值。相似度值越低,用于执行作业的计算资源与这些节点中的相应一个节点中的计算资源越相似。资源管理器225可以基于动态资源状态230和以下等式来计算所读取作业与每个节点之间的相似度值S:

S=(N

N表示在相应节点中可用的计算资源的数量或大小,R表示用于执行作业的计算资源的数量或大小,lcpu表示逻辑CPU的数量,并且内存表示逻辑内存的大小。

在操作355中,方法300包括资源管理器225更新动态资源状态230,以考虑正在使用的所选节点的计算资源(例如,逻辑CPU的数量和逻辑内存的大小)。方法300进一步包括资源管理器225生成更新信号,该更新信号指示动态资源状态230被更新,并且可以从包括在作业管理器220中的作业队列中读取作业。

在操作360中,方法300包括资源管理器225将作业从作业队列分配到所选节点。

在操作365中,方法300包括所选节点上的任务管理器235、240、245或250将计算资源分配给所分配的作业。

在操作370中,方法300包括任务管理器235、240、245或250基于分配给作业的计算资源为所分配的作业生成新任务。

在操作375中,方法300包括任务管理器235、240、245或250执行所生成的新任务。

在操作380中,方法300包括任务管理器235、240、245或250确定所执行的新任务是否完成。基于确定所执行的新任务完成,方法300在操作385中继续。否则,方法300返回到操作375。

在操作385中,方法300包括任务管理器235、240、245或250释放分配给作业的计算资源,并将释放的空闲计算资源报告给资源管理器225。

在操作390中,方法300包括资源管理器225更新动态资源状态230,以考虑所选节点释放的计算资源(例如,逻辑CPU的数量与逻辑内存的大小)。方法300进一步包括资源管理器225生成更新信号,该更新信号指示动态资源状态230被更新,并且可以从包括在作业管理器220中的作业队列中读取作业。

图3的方法300例如由如图5中所示的服务器115执行。

图4A至图4I示出了根据实施例的基于动态资源状态230的并行流任务分配的示例400的图。

参考图4A和图4B,计算资源集群中有四个节点,并且动态资源状态230中的空闲计算资源处于初始化状态。

参考图4A和图4C,包括在作业管理器220中的作业队列中的作业0使用1个逻辑CPU和1GB的逻辑内存。资源管理器225扫描动态资源状态230,并确定所有节点都匹配或包括足够的可用计算资源来用于执行作业0。然后,资源管理器225计算作业0与每个节点之间的相似度值,并选择与作业0具有最低相似度值1的任务管理器245相对应的节点2。资源管理器225将作业0分配给所选节点2(即,任务管理器245的槽(slot)),如阴影所示。资源管理器225通过从节点2的计算资源中减少分配给作业0的计算资源,并将节点2的任务数量增加1来更新动态资源状态230,如阴影所示。

参考图4A和图4D,作业队列中的作业1也使用1个逻辑CPU和1GB的逻辑内存。资源管理器225扫描动态资源状态230,并确定节点0、节点1和节点3匹配或包括足够的可用计算资源来用于执行作业1。然后,资源管理器225计算作业1与节点0、节点1和节点3中的每一个之间的相似度值,并选择与作业1具有最低相似度值3的任务管理器235相对应的节点0。资源管理器225将作业1分配给所选节点0(即,任务管理器235的槽),如阴影所示。资源管理器225通过从节点0的计算资源中减少分配给作业1的计算资源,并将节点0的任务数量增加1来更新动态资源状态230,如阴影所示。

参考图4A和图4E,作业队列中的作业2使用2个逻辑CPU和10GB的逻辑内存。资源管理器225扫描动态资源状态230,并确定只有节点3匹配或包括足够的可用计算资源来用于执行作业2。资源管理器225将作业2分配给节点3(即,任务管理器250的槽),如阴影所示。资源管理器225通过从节点3的计算资源中减少分配给作业2的计算资源,并将节点3的任务数量增加1来更新动态资源状态230,如阴影所示。

参考图4A和图4F,作业队列中的作业3使用1个逻辑CPU与2GB的逻辑内存。资源管理器225扫描动态资源状态230,并确定节点1与节点3匹配或包括足够的可用计算资源来用于执行作业3。资源管理器225选择与其中执行的任务数量最少的任务管理器240相对应的节点1。资源管理器225将作业3分配给节点1(即,任务管理器240的槽),如阴影所示。资源管理器225通过从节点1的计算资源中减少分配给作业3的计算资源,并将节点1的任务数量增加1来更新动态资源状态230,如阴影所示。

参考图4A、图4G、图4H和图4I,作业队列中的作业4使用2个逻辑CPU和8GB的逻辑内存。在图4G中,资源管理器225扫描动态资源状态230,并确定没有节点匹配或包括足够的可用计算资源来用于执行作业4。在图4H中,资源管理器225等待直到作业2的执行完成,并且分配给作业2的计算资源被释放并增回到节点3的计算资源,如所突显的。在图4I中,资源管理器225选择对应于任务管理器250的节点3,该节点是匹配或包括足够的可用计算资源以用于执行作业4的唯一节点。资源管理器225将作业4分配给节点3(即,任务管理器250的槽),如阴影所示。资源管理器225通过从节点3的计算资源中减少分配给作业4的计算资源,并将节点3的任务数量增加1来更新动态资源状态230,如阴影所示。

图5示出了图1的服务器115的框图,该服务器用于实施图2的架构200。

参考图5,服务器115可以是包括通信接口505、处理器510和存储器515的服务器计算机。

通信接口505可以充当用于硬件和/或软件接口,其可以例如在用户和/或外部设备与服务器115的其他部件之间传输命令和/或数据。通信接口505可以进一步建立服务器115与外部设备(比如图1的智能手机105)之间的通信。通信接口505可以通过无线或有线通信架构与网络连接,以与外部设备通信。通信接口505可以是有线或无线收发器、或用于发射和接收信号的任何其他部件。

处理器510可以包括CPU、图形处理器单元(GPU)、加速处理单元(APU)、集成众核(MIC)、现场可编程门阵列(FPGA)和/或数字信号处理器(DSP)中的一个或多个。处理器510可以是通用控制器,其执行对服务器115的其他部件中的任何一个或任何组合的控制,和/或执行与通信相关的操作或数据处理。处理器510可以执行存储在存储器515中的一个或多个程序。

存储器515可以包括易失性和/或非易失性存储器。存储器515存储信息,比如命令、数据、程序(一个或多个指令)、应用等中的一个或多个,这些信息与服务器115的至少一个其他部件相关,并且用于驱动和控制服务器115。例如,命令和/或数据可以形成操作系统(OS)。存储在存储器515中的信息可以由处理器510执行。存储器515可以进一步存储由处理器510执行的信息,以执行上面关于图1至图4I描述的功能和操作。

可以由一个或多个电路来执行本文描述的方法并实施本文描述的各种处理或计算单元以及设备和计算实体。在实施例中,“电路”可以理解为任何类型的逻辑实施实体,其可以是硬件、软件、固件或其任意组合。因此,在实施例中,“电路”可以是硬连线逻辑电路或可编程逻辑电路,诸如可编程处理器,例如微处理器。“电路”也可以是由处理器实施或执行的软件,例如,任何类型的计算机程序,例如使用虚拟机代码的计算机程序。根据替代性实施例,本文描述的各个功能的任何其他类型的实施方式也可以被理解为“电路”。

虽然已经参考特定实施例具体示出和描述了本披露内容,但是本领域技术人员应当理解,在不脱离如所附权利要求所限定的本发明的精神和范围的情况下,可以在其中进行形式和细节的各种变化。因此,本发明的范围由所附权利要求指示,并且因此旨在涵盖属于权利要求的等同物的含义和范围内的所有改变。

技术分类

06120116066202