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

资源分配方法及装置

文献发布时间:2023-06-19 12:07:15


资源分配方法及装置

技术领域

本公开涉及云计算技术领域,具体而言,涉及一种资源分配方法及装置。

背景技术

Kubernetes(k8s)是一种自动化容器操作的开源平台,用于对容器进行自动化部署和复制,随时扩展或者收缩容器规模,将容器组织成组并提供容器间的负载均衡,提供容器弹性(如在容器失效时对失效的容器进行替换)等操作。当前的k8s架构中,通常包括由多个节点构成的集群;在各个节点中安装了k8s平台。其中一个节点作为k8s的主节点(Master),负责对集群内各个节点进行自动化容器操作;在Master中部署有调度器,调度器负责对集群内的计算资源进行统一分配。

调度器在对集群内的图形处理器(Graphics Processing Unit,GPU)进行统一分配时,存在GPU资源利用率较低的问题。

发明内容

本公开实施例至少提供一种资源分配方法及装置。

第一方面,本公开实施例提供一种资源分配方法,包括:获取目标任务的图形处理器GPU资源调用信息,其中,所述GPU资源调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

这样,在获取目标任务的GPU资源调用信息后,能够基于物理GPU状态信息,以及GPU资源调用信息,确定目标任务所徐的至少一个容器中每个容器的物理GPU资源分配信息,该物理GPU资源分配信息了包括分配的目标物理GPU的标识信息和目标物理GPU的资源使用量,进而以更细的粒度实现了对GPU资源的分配,减少对物理GPU资源的浪费。

一种可选实施方式中,所述GPU资源需求信息包括下述至少一种:GPU显存大小、GPU类型信息、以及拓扑敏感度信息。

这样,能够基于GPU资源需求信息更好的表征不同容器的GPU需求,以更细的粒度来实现对GPU资源的资源分配。

一种可选实施方式中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:基于物理GPU状态信息中包括的资源占用信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

这样,能够基于GPU资源需求信息更好的表征不同容器的GPU需求,以更细的粒度来实现对GPU资源的资源分配,同时,还能避免由于硬件之间兼容性差而造成的对目标任务的影响。

一种可选实施方式中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:响应于所述GPU资源需求信息包括的拓扑敏感度信息指示拓扑敏感,基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

这样,在拓扑敏感度信息指示拓扑敏感时,能够将同一节点中的物理GPU资源分给至少一个容器中的每个容器,避免由于在容器对拓扑敏感的情况下将不同容器分配至不同的物理节点,造成目标任务处理效率的下降。

一种可选实施方式中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,基于多个可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从多个所述可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

这样,能够充分的将各个物理节点中的GPU碎片资源利用起来,进一步提升GPU的利用率。

一种可选实施方式中,所述资源分配方法还包括:调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

第二方面,本公开实施例还提供一种资源分配装置,包括:获取模块,用于获取目标任务的图形处理器GPU资源调用信息,其中,所述GPU资源调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;分配模块,用于基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

一种可选实施方式中,所述GPU资源需求信息包括下述至少一种:GPU显存大小、GPU类型信息、以及拓扑敏感度信息。

一种可选实施方式中,所述分配模块,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:基于物理GPU状态信息中包括的资源占用信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,所述分配模块,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:响应于所述GPU资源需求信息包括的拓扑敏感度信息指示拓扑敏感,基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,所述分配模块,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,基于多个可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从多个所述可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,还包括:执行模块,用于调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

第三方面,本公开实施例还提供另外一种资源分配装置,包括:绑定器;所述绑定器用于:获取目标任务的GPU资源调用信息,其中,所述GPU调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

第四方面,还提供一种计算机设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器调用所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时执行第一方面或第一方面的任意可能实现方式中的步骤。

第五方面,还一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面或第一方面的任意可能实现方式中所述的资源分配方法的步骤。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种资源分配方法的流程图;

图2示出了本公开实施例所提供的将本公开实施例提供的资源分配方法应用于k8s中时的架构示意图;

图3示出了本公开实施例所提供的一种资源分配装置的示意图;

图4示出了本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。“和/或”用于表示在其所连接的两个对象之间选择一个或全部。例如“A和/或B”表示A、B或A+B。

本公开实施例可以应用于基于容器的资源系统,例如,k8s集群,其中,在一些实施例中,k8s的架构,包括:主节点Master、以及多个任务节点;其中,Master部署在集群的多个节点中的任一节点中,这里的节点包括:物理服务器和/或虚拟机。Master在对集群内的资源进行调用时,通常是以容器组pod为单位,一个pod中包括至少一个容器;一个计算任务通常由至少一个pod来执行;而一个计算任务对应的至少一个pod可以被部署在一个或多个节点中。

Master包括有调度器,调度器负责对集群内的计算资源进行统一调用。调度器在对集群内的GPU进行调用时,即使pod在执行计算任务时,所需要消耗的GPU资源无需整数个物理GPU,但仍会为pod申请整数个物理GPU,例如某pod在执行计算任务时,只需要消耗GPU中130%的计算资源,但调度器会为其分配两个物理GPU。而分配给该pod的物理GPU在被释放前,无法再被分配给其他的pod,从而造成了GPU资源的浪费。

本公开实施例提供一种资源分配方法,在获取目标任务的GPU资源调用信息后,能够基于物理GPU状态信息,以及GPU资源调用信息,确定目标任务所徐的至少一个容器中每个容器的物理GPU资源分配信息,该物理GPU资源分配信息了包括分配的目标物理GPU的标识信息和目标物理GPU的资源使用量,进而以更细的粒度实现了对GPU资源的分配,减少对物理GPU资源的浪费。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种机器人控制方法进行详细介绍,本公开实施例所提供的机器人控制方法的执行主体例如为k8s集群中的任一节点,也可以是该k8s集群。该资源分配方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。另外,也可以将该资源分配方法应用于其他对容器所需要的资源进行调度的场景或者架构。

参见图1所示,本公开实施例提供一种资源分配方法的流程图,该资源分配方法包括步骤S101~S102,其中:

S101:获取目标任务的图形处理器GPU资源调用信息,其中,所述GPU资源调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;

S102:基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

下面分别对上述S101~S102加以详细说明。

I:在上述S101中,根据该资源分配方法执行主体的不同,获取目标任务的GPU资源调用信息的方式也有所区别。

例如:若该资源分配方法的执行主体为k8s集群中的任一节点,该节点在获取目标任务的GPU资源调用信息时,是从Master中接收该GPU资源调用信息;若该资源分配方法的助兴主体为k8s集群,则k8s集群在获取目标任务的GPU资源调用信息,是从k8s内部生成。

在每个GPU资源需求信息中,包括下述至少一种:GPU显存大小、GPU类型信息、以及拓扑敏感度信息。

其中,GPU显存大小用于指示容器所需要的GPU的显存大小;一般地,该GPU显存大小可以等于整块物理GPU所拥有显存的整数倍;在另一种情况下,也可以不为整块物理GPU所拥有显存的整数倍,其根据容器的具体需求来具体确定。

GPU类型信息用于指示容器所需要的GPU类型,该类型例如为GPU型号、GUP厂商、GPU架构等信息中一种或者多种。

拓扑敏感度信息用于指示容器是否对GPU拓扑敏感;在拓扑敏感度信息指示拓扑敏感时,例如可以为同一目标任务所需要的多个容器分配同一节点上的物理GPU;在拓扑敏感度信息指示非拓扑敏感的情况下,例如可以为同一目标任务所需要的多个容器分配不同节点上的物理GPU,从而能够利用物理GPU的碎片资源,进一步提升各个节点中物理GPU的利用率。

II:在上述S102中,物理GPU状态信息例如包括:GPU的资源占用信息和类型信息。

其中资源占用信息用于指示物理GPU中已经分配给其他任务的计算资源的量。

在一些实施例中,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,例如基于物理GPU状态信息中包括的资源占用信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

在一些实施例中,在确定至少一个容器中的每个容器的物理GPU资源分配信息时,例如可以采用碎片最小化的策略来进行。

另外,在本公开另一实施例中,针对GPU资源需求信息包括拓扑敏感度信息的情况,在该拓扑敏感信息指示拓扑敏感的情况下:

基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

在该拓扑敏感信息指示非拓扑敏感的情况下:

响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,基于多个可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从多个所述可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

在本公开另一实施例中,在确定了至少一个容器中每个容器的物理GPU资源分配信息后,还包括:

调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

具体地,参见图2所示,本公开实施例以将该资源分配方法应用于k8s为例,对资源分配的过程加以详细说明:

在k8s集群中,包括主节点(Master)以及节多个从节点或任务节点(以下简称节点)。

Master部署有控制模块(controller)、应用程序接口服务模块(ApplicationProgram Interface server,API server)、以及调度器(scheduler)。

其中,controller用于接收任务指令,并基于该任务指令,创建执行目标任务所需要的容器,其中,执行目标任务所需要的容器至少有一个;在目标任务所需要的容器有多个的时候,多个容器会构成至少一个容器组(pod)。每个pod中,至少包括一个容器。在该种情况下,所创建的各个容器实际上只有一个名称或者标识,而未被分配具体的资源,如内存资源、GPU资源等。

API server用于节点与Master、controller与scheduler之间的数据的传递以及同步。

controller在创建了目标任务所需要的容器后,例如以GPU资源调用信息的形式将创建的容器标识、以及各个容器所需要的资源信息传递给API server;

API server在接收到controller传递的GPU资源调用信息后,将GPU资源调用信息同步至调度器的任务队列(Job Queue以及task Queue)中。

scheduler会周期性检测其任务队列中是否存在对应的GPU资源调用信息,并在任务队列中存在GPU资源调用信息后,基于集群中各个节点的资源状态信息、以及调度指令中携带的各个容器所需要的资源信息,按照预先确定的资源调度策略进行资源调度。

scheduler在进行资源调度的时候,首先要确定将集群中哪个节点中的资源分配给目标任务所需的各个容器。例如,在调度的资源为GPU时,则资源状态信息包括:各个节点中物理GPU的资源状态信息。

具体地,各个节点对应的物理GPU状态信息,通过下述两类信息来维护:

第一类:集群所维护的资源地图(resource map),在resource map中,保存有各个节点上报的资源的相关信息,例如针对资源为GPU资源的情况,在resource map中会保存有集群中各个节点的节点列表(Node List),在Node List中,存储有各个节点中物理GPU的相关信息GUPinfo,如GPU拓扑(topology)、结构(architecture)、GPU显存(memory)、GPU身份标识码(Identity,ID)等。该resource map为集群中各个节点将GPU资源向Master进行注册(register)而生成。

第二类:集群所维护的虚拟(Virtual,V)GPU信息,例如包括:vGPU的ID、与vGPU对应的物理GPU ID、与vGPU对应的物理GPU所在节点、vGPU的显存等。该vGPU信息是Master在对集群内部的资源进行调度、管理时所维护的;vGPU信息随着对应容器的创建而生成,并随着对应容器的消亡而删除。

scheduler在进行资源调度时,例如采取集体调度(gang scheduling)机制,基于预先确定的调度程序(scheduling procedure)从任务队列中获取GPU资源调用信息中的各项信息,例如pod信息(podinfo)、要创建的vGPU的各项信息。这里,由于是采用gangscheduling机制进行调度,gang scheduling是基于pod为粒度来执行,因此在调度资源时,是针对pod来实现的。podinfo中,包括了该pod所包括的各个容器的GPU资源需求信息。

scheduler在进行资源调度时,为目标任务的各个容器确定目标节点。scheduler在进行资源调度时是以pod为单位来进行,一个pod仅部署在一个节点中。scheduler为目标任务所确定的目标节点至少有一个。

在此时,若GPU资源调用信息中包括的GPU资源需求信息中携带了拓扑敏感度信息,且该拓扑敏感度指示信息指示拓扑敏感,则确定的目标节点仅有一个;若该拓扑敏感度指示信息指示非拓扑敏感,则可以根据当前集群内各个节点中物理GPU的物理GPU状态信息,为目标任务的至少一个容器确定至少一个目标节点。

scheduler在为目标任务确定了目标节点后,会生成对应的分配(allocate)请求,并通过API server,将生成的allocate请求发送给目标节点。其中,在allocate请求中,携带有vGPU的相关信息,例如vGPU的ID、显存大小、所属的容器的ID等。

针对接收到GPU资源调用信息的任一目标节点,该目标节点从Master获取目标任务的allocate请求。之后,目标节点基于本地的物理GPU状态信息以及allocate请求,确定要部署在该目标节点上的容器中每个容器的物理GPU资源分配信息。

具体地,在k8s集群中的任一节点中,部署有用于与Master进行数据交互的监听(kubelet)组件、设备插件(device plugin)、以及绑定器(binder)。

device plugin能够获取其所在节点中的各种资源的相关信息,例如物理GPU显存信息、物理GPU ID、物理GPU类型信息等,并向kubelet组件注册资源;kubelet组件将deviceplugin所注册的资源上报至Master,以使Master实现对资源地图的维护。另外,deviceplugin还承担其所在节点中各种资源的健康检查,例如当某物理GPU处于不健康状态时,device plugin会向Master上报该物理GPU的相关信息;Master在进行资源调度时,能够忽略处于不健康状态的物理GPU。

kubelet组件还能够接收Master发送的allocate请求,并将allocate请求通过device plugin传递至绑定器。绑定器也能够获知其所在的节点中物理GPU状态信息;绑定器在接收到allocate请求后,基于其所在节点中物理GPU的状态信息,以及allocate请求中携带的显存大小,从其所在节点中的物理GPU中,为该vGPU确定目标物理GPU的标识信息ID、以及目标物理GPU的资源使用量,并建立目标物理GPU的ID与vGPU的ID之间的绑定(bind)关系,生成GPU资源分配信息。

绑定器在生成GPU资源分配信息后,将生成的GPU资源分配信息发送给deviceplugin,通过device plugin将GPU资源分配信息注册到kubelet组件,kubelet组件将device plugin注册的GPU资源分配发送给Master。

Master在接收到物理GPU资源分配信息后,完成对部署在该节点中的容器的创建。之后,调用创建的容器,执行目标任务。

本公开实施例在获取目标任务的GPU资源调用信息后,能够基于物理GPU状态信息,以及GPU资源调用信息,确定目标任务所徐的至少一个容器中每个容器的物理GPU资源分配信息,该物理GPU资源分配信息了包括分配的目标物理GPU的标识信息和目标物理GPU的资源使用量,进而以更细的粒度实现了对GPU资源的分配,减少对物理GPU资源的浪费。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与资源分配方法对应的资源分配装置,由于本公开实施例中的装置解决问题的原理与本公开实施例中的资源分配方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图3所示,本公开实施例还提供的资源分配装置,包括:

获取模块31,用于获取目标任务的图形处理器GPU资源调用信息,其中,所述GPU资源调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;

分配模块32,用于基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

一种可选实施方式中,所述GPU资源需求信息包括下述至少一种:GPU显存大小、GPU类型信息、以及拓扑敏感度信息。

一种可选实施方式中,所述分配模块32,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:

基于物理GPU状态信息中包括的资源占用信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,所述分配模块32,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:

响应于所述GPU资源需求信息包括的拓扑敏感度信息指示拓扑敏感,基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,所述分配模块32,在基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息时,用于:

响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,基于多个可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从多个所述可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,还包括:执行模块33,用于调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

在另外一种情况下,本公开实施例还提供一种资源分配装置,包括:绑定器;

所述绑定器用于:获取目标任务的GPU资源调用信息,其中,所述GPU调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;

基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

在具体实施中,绑定器用于直接获取目标任务的GPU资源调用信息,并基于各个节点中的物理GPU状态信息、以及GPU资源调用信息,确定至少一个容器中每个容器的物理GPU资源分配信息。

本公开实施例中的绑定器在获取目标任务的GPU资源调用信息后,能够基于物理GPU状态信息以及GPU调用信息中包括的目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息,来为各个容器确定物理GPU资源分配信息,该物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量,进而能够在较之整片GPU更小的粒度上为目标任务的各个容器分配GPU,减少GPU资源的浪费。

一种可选实施方式中,所述GPU资源需求信息包括下述至少一种:GPU显存大小、GPU类型信息、拓扑敏感度信息。

一种可选实施方式中,所述绑定器,具体用于:基于物理GPU状态信息中包括的资源状态信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,还包括:调度器;

所述调度器,用于响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,确定将多个可用物理节点的GPU资源分配给所述目标任务所需的至少一个容器;

所述绑定器,具体用于基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

在本实施例中,调度器的作用是用于确定要将几个可用物理节点的GPU资源分配给目标任务。绑定器则是用于具体实现节点中物理GPU资源的分配。

一种可选实施方式中,调度器,响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,确定将多个可用物理节点的GPU资源分配给所述目标任务所需的至少一个容器;

所述绑定器,具体用于基于多个所述可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从所述多个可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可选实施方式中,调度器,还用于:调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

本公开实施例还提供了一种计算机设备40,如图4所示,为本公开实施例提供的计算机设备30结构示意图,包括:

处理器41、存储器42、和总线44;存储器42用于存储执行指令,包括内存421和外部存储器422;这里的内存421也称内存储器,用于暂时存放处理器41中的运算数据,以及与硬盘等外部存储器422交换的数据,处理器41通过内存421与外部存储器422进行数据交换,当所述计算机设备400运行时,所述处理器41与所述存储器42之间通过总线44通信,使得所述处理器41在用户态执行以下指令:

获取目标任务的图形处理器GPU资源调用信息,其中,所述GPU资源调用信息包括所述目标任务所需的至少一个容器的数量以及每个容器的GPU资源需求信息;

基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,所述物理GPU资源分配信息包括分配的目标物理GPU的标识信息和所述目标物理GPU的资源使用量。

一种可能的实施方式中,处理器41执行的指令中,所述GPU资源需求信息包括下述至少一种:GPU显存大小、GPU类型信息、以及拓扑敏感度信息。

一种可能的实施方式中,处理器41执行的指令中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:

基于物理GPU状态信息中包括的资源占用信息和类型信息、以及所述GPU资源需求信息中包含的GPU类型信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可能的实施方式中,处理器41执行的指令中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:

响应于所述GPU资源需求信息包括的拓扑敏感度信息指示拓扑敏感,基于所述物理GPU状态信息以及所述GPU资源调用信息,从同一个可用物理节点的物理GPU中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可能的实施方式中,处理器41执行的指令中,所述基于物理GPU状态信息以及所述GPU资源调用信息,确定所述至少一个容器中每个容器的物理GPU资源分配信息,包括:

响应于所述GPU资源需求信息包括的拓扑敏感度信息指示非拓扑敏感,基于多个可用物理节点中每个物理节点的所述物理GPU状态信息、以及与每个物理节点对应的容器的GPU资源需求信息,从多个所述可用物理节点的GPU资源中确定所述至少一个容器中每个容器的物理GPU资源分配信息。

一种可能的实施方式中,处理器41执行的指令中,所述资源分配方法还包括:

调度所述至少一个容器基于所述物理GPU资源分配信息执行所述目标任务。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的资源分配方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例所提供的资源分配方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的资源分配方法的步骤,具体可参见上述方法实施例,在此不再赘述。

本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 用于多播虚拟网络的资源分配方法及抗毁资源分配方法
  • 资源分配方法、资源分配装置、资源分配系统、存储介质
技术分类

06120113178312