CN114942846A - Gpu资源调度方法、装置、设备及存储介质 - Google Patents

Gpu资源调度方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114942846A
CN114942846A CN202210579693.9A CN202210579693A CN114942846A CN 114942846 A CN114942846 A CN 114942846A CN 202210579693 A CN202210579693 A CN 202210579693A CN 114942846 A CN114942846 A CN 114942846A
Authority
CN
China
Prior art keywords
gpu
target container
information
resource
cluster
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.)
Pending
Application number
CN202210579693.9A
Other languages
English (en)
Inventor
刘文杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN202210579693.9A priority Critical patent/CN114942846A/zh
Publication of CN114942846A publication Critical patent/CN114942846A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及云技术领域,公开了一种GPU资源调度方法、装置、设备及存储介质。该方法包括:获取目标容器对GPU资源的注册信息,并根据注册信息,创建目标容器在GPU资源中模拟卡槽的套接信息;基于套接信息,将目标容器在K8S集群上进行虚拟化处理,得到目标容器在K8S集群对应的节点资源信息;根据节点资源信息,对GPU资源进行划分,并通过K8S集群将划分的GPU资源分配给目标容器;获取在K8S集群上对目标容器的操作指令,并参照套接信息,在目标容器分配到的GPU资源中调度操作指令对应的GPU资源。本发明实现了多个容器共享一个GPU卡的资源,提升了GPU资源需求使用的灵活性。

Description

GPU资源调度方法、装置、设备及存储介质
技术领域
本发明涉及云技术领域,尤其涉及一种GPU资源调度方法、装置、设备及存储介质。
背景技术
随着业务的持续增长,为了维持业务的稳定、可靠,对应用服务的维护管理、弹性扩展等有了越来越大的挑战,为了应对持续多变的运维管理和开发需求,众多业务都选择将服务容器化然后托管K8S(Kubernetes,容器集群管理系统)进行容器集群管理,依赖K8S,可以灵活易用而又高效安全的管理容器,也可以支持开发版本快速迭代上线,其中,依赖GPU的密集型计算服务更是如此。
由于K8S节点原生无法像管理CPU和内存资源一样管理GPU资源,所以需要依赖第三方官方设备插件,例如主流AMD和NVIDIA的设备插件,但是依赖这些有如下限制:1)设定GPUs资源需求时只能指定limits,无法像CPU和内存那样设定requests请求量和limit限制量,意味着GPU资源无法灵活调配,申请多少即使用多少;2)目前限定容器间无法共享GPU,也不可以过量分配,也即一个GPU只能属于一个容器。总而言之,即GPU资源的分配调用效率较低的问题。
发明内容
本发明的主要目的在于解决GPU资源的分配调用效率较低的问题的技术问题。
本发明第一方面提供了一种GPU资源调度方法,包括:获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
可选的,在本发明第一方面的第一种实现方式中,所述根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息包括:根据所述注册信息,确定所述目标容器在所述GPU资源中待注册的显存容量以及模拟卡槽的注册名称;按照预置格式,采用所述注册名称创建所述目标容器在所述GPU资源中的套接字,并基于所述套接字和所述显存容量生成套接信息。
可选的,在本发明第一方面的第二种实现方式中,所述基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息包括:确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息。
可选的,在本发明第一方面的第三种实现方式中,所述根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息包括:根据分配的节点资源,将各进程分配到的对应GPU卡的节点资源在所述K8S集群中与所述套接信息进行绑定;基于绑定的结果,生成所述目标容器在所述K8S集群中的节点资源信息。
可选的,在本发明第一方面的第四种实现方式中,在所述根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器之后,还包括:监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源。
可选的,在本发明第一方面的第五种实现方式中,所述参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源包括:参照所述套接信息,确定所述操作指令指向的模拟卡槽,并通过所述模拟卡槽,将所述操作指令发送至所述目标容器分配到的GPU资源对应的GPU分区;采用所述操作指令遍历所述GPU分区,并基于遍历的结果,确定所述操作指令所操作的GPU资源;将所述操作指令所操作的GPU资源调度至所述目标容器。
本发明第二方面提供了一种GPU资源调度装置,包括:创建模块,用于获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;虚拟化模块,用于基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;划分模块,用于根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;调度模块,用于获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
可选的,在本发明第二方面的第一种实现方式中,所述创建模块包括:确定单元,用于根据所述注册信息,确定所述目标容器在所述GPU资源中待注册的显存容量以及模拟卡槽的注册名称;创建单元,用于按照预置格式,采用所述注册名称创建所述目标容器在所述GPU资源中的套接字,并基于所述套接字和所述显存容量生成套接信息。
可选的,在本发明第二方面的第二种实现方式中,所述虚拟化模块包括:统计单元,用于确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;分配单元,用于确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;生成单元,用于根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息。
可选的,在本发明第二方面的第三种实现方式中,所述生成单元还用于:根据分配的节点资源,将各进程分配到的对应GPU卡的节点资源在所述K8S集群中与所述套接信息进行绑定;基于绑定的结果,生成所述目标容器在所述K8S集群中的节点资源信息。
可选的,在本发明第二方面的第四种实现方式中,所述GPU资源调度装置还包括重启模块,用于:监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源。
可选的,在本发明第二方面的第五种实现方式中,所述调度模块包括:发送单元,用于参照所述套接信息,确定所述操作指令指向的模拟卡槽,并通过所述模拟卡槽,将所述操作指令发送至所述目标容器分配到的GPU资源对应的GPU分区;遍历单元,用于采用所述操作指令遍历所述GPU分区,并基于遍历的结果,确定所述操作指令所操作的GPU资源;调度单元,用于将所述操作指令所操作的GPU资源调度至所述目标容器。
本发明第三方面提供了一种GPU资源调度设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述GPU资源调度设备执行上述的GPU资源调度方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的GPU资源调度方法。
本发明提供的技术方案中,通过针对目标容器,在GPU资源中模拟卡槽创建生成套接信息,使得容器可以在模拟卡槽共享同一个GPU卡的资源,或者将容器的多个进程分配到多个GPU卡中;接着可以基于套接信息,将目标容器在K8S集群上进行虚拟化处理,即可得到目标容器在K8S集群对应的节点资源信息,对来GPU资源进行划分并分配给目标容器;后续在获取到对目标容器的操作指令,可以按照参照套接信息,在目标容器分配到的GPU资源中调度操作指令对应的GPU资源,以实现了多个容器共享一个GPU卡的资源,提升了GPU资源需求使用的灵活性。
附图说明
图1为本发明实施例中GPU资源调度方法的第一个实施例示意图;
图2为本发明实施例中GPU资源调度方法的第二个实施例示意图;
图3为本发明实施例中GPU资源调度方法的第三个实施例示意图;
图4为本发明实施例中GPU资源调度装置的一个实施例示意图;
图5为本发明实施例中GPU资源调度装置的另一个实施例示意图;
图6为本发明实施例中GPU资源调度设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种GPU资源调度方法、装置、设备及存储介质,获取目标容器对GPU资源的注册信息,并根据注册信息,创建目标容器在GPU资源中模拟卡槽的套接信息;基于套接信息,将目标容器在K8S集群上进行虚拟化处理,得到目标容器在K8S集群对应的节点资源信息;根据节点资源信息,对GPU资源进行划分,并通过K8S集群将划分的GPU资源分配给目标容器;获取在K8S集群上对目标容器的操作指令,并参照套接信息,在目标容器分配到的GPU资源中调度操作指令对应的GPU资源。本发明实现了多个容器共享一个GPU卡的资源,提升了GPU资源需求使用的灵活性。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中GPU资源调度方法的第一个实施例包括:
101、获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
可以理解的是,本发明的执行主体可以为GPU资源调度装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
本实施例中,在K8S集群和GPU资源之间,增加本GPU资源调度服务器对应的设备插件,后续K8S集群在调度GPU资源时,通过本设备插件进行调度即可。在此先创建目标容器对接GPU资源的套接信息,后续K8S集群则具体通过本设备插件上的套接信息来调度GPU资源。
具体的,在需要对目标容器进行GPU资源注册时,获取其注册信息,包括目标容器所在设备的基础信息,比如目标容器对GPU卡所需的显存容量、卡槽路径和容量序列号等,来确定需要的GPU资源区域,并以预先设置的格式来创建模拟卡槽的套接信息,比如“GPU卡槽”-“容量序列号”,即可确定GPU资源接口和分配区域。
102、基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;
本实施例中,以模拟卡槽的套接信息来对接目标容器需求的GPU资源,然后再以此将目标容器向K8S集群注册,因为用户实际通过K8S来操控GPU资源,故需要将目标容器在K8S集群上进行虚拟化,通过套接信息中的虚拟套接字来衔接K8S集群控制目标容器时,具体需要操作的GPU资源对应的虚拟卡槽,实现虚拟套接字到真实物理GPU硬件的转换。
另外,在目标容器向K8S集群进行虚拟化时,虽然套接信息通过模拟卡槽进行创建,但此处并非为物理卡槽,只以路径命名来模拟,故申请时可以以显存容量,通过套接字来申请ResourceName,故当目标容器的服务在K8S集群申请GPU资源时以显存容量的GPU资源来申请而不是GPU卡数量的GPU资源,并将目标容器虚拟化的各个进程在GPU资源的注册表示为节点资源信息。
103、根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
本实施例中,节点资源信息包含:K8S集群节点(node),以节点名(node_name)给出;K8S集群pod资源(pod),以pod名(pod_name)给出;K8S集群容器资源(container),以容器名(container_name)给出;K8S集群内pod对应内网ip(cluster_ip),以虚拟ip(virtual_ip_host)给出;GPU资源(gpu_resource),以GPU编号(id)、cuda核心数(cuda_core)和cuda存储(cuda_memory)给出;内存(memory),以大小(如108Gi)给出;卷存储(volume),以大小(如500Gi)给出。其中,各个节点对应的pod与对应目标容器的套接字关联,pod可以根据套接字指定GPU资源实现划分、分配和调用,故此处利用节点资源可以实现通过K8S集群对GPU资源的划分和分配给目标容器。
104、获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
本实施例中,在实现目标容器通过套接信息在K8S上注册所需的GPU资源后,在K8S集群上对目标容器进行操作,以对GPU资源进行操作时,实际上是通过创建的套接字段间接对GPU资源进行调度,同时确定服务在GPU卡上执行时,按照分配到目标容器的GPU资源进行执行,实现目标容器在GPU资源的局部调度,在同一张GPU卡上分配到GPU资源的其他容器,也可以调度相应的GPU资源,实现多个容器共享同一张GPU卡上的GPU资源。
本发明实施例中,通过针对目标容器,在GPU资源中模拟卡槽创建生成套接信息,使得容器可以在模拟卡槽共享同一个GPU卡的资源,或者将容器的多个进程分配到多个GPU卡中;接着可以基于套接信息,将目标容器在K8S集群上进行虚拟化处理,即可得到目标容器在K8S集群对应的节点资源信息,对来GPU资源进行划分并分配给目标容器;后续在获取到对目标容器的操作指令,可以按照参照套接信息,在目标容器分配到的GPU资源中调度操作指令对应的GPU资源,以实现了多个容器共享一个GPU卡的资源,提升了GPU资源需求使用的灵活性。
请参阅图2,本发明实施例中GPU资源调度方法的第二个实施例包括:
201、获取目标容器对GPU资源的注册信息,并根据所述注册信息,确定所述目标容器在所述GPU资源中待注册的显存容量以及模拟卡槽的注册名称;
202、按照预置格式,采用所述注册名称创建所述目标容器在所述GPU资源中的套接字,并基于所述套接字和所述显存容量生成套接信息;
本实施例中,执行GPU供应商的特定初始化可以确定目标容器所在设备的基础信息,可以包括GPU卡的显存容量;在确定显存容量后(单位G),即可创建对应数量的套接字(具体为虚拟Unix套接字),格式可参考“GPU卡槽路径”-“序号”,并以预设格式表示该虚拟Unix套接字是否被使用,虚拟化一层以实现一张GPU卡的资源细化;
通过套接字关联GPU资源的显存容量,来确定对应虚拟卡槽的显存占用,并一起封装套套接信息中。当需要通过扩展本GPU资源调度服务器的插件设备调度GPU资源的模拟卡槽时,就可以通过虚拟Unix套接字获取具体需要操作的模拟卡槽,对所需的GPU资源进行调整,以实现虚拟Unix套接字到真实物理GPU硬件的转换。
203、确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;
204、确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;
205、根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息;
本实施例中,在分配资源时优先将虚拟Unix套接字中“GPU卡槽路径”部分相同的分配在一起,如果无法分配到同一张GPU卡上,则可以将所需的GPU资源拆分到多张GPU卡。目标容易包括一个或多个进程,组成进程信息,此处即将多个进程分配到多长个GPU卡上,实现GPU资源的分配。
另外,在将多个进程分配到多长个GPU卡上时,将每个进程对GPU资源申请的限制对应拆分,确保申请到的GPU卡上的GPU资源能足量分配。具体可以通过硬件产商的驱动确定目标容器中每个进程对GPU显存资源的使用量(即显存需求量),随机选择K8S集群关联的各张GPU卡对应数量的节点资源。
具体的,当在K8S集群上注册目标容器所需的GPU资源时,可以通过gRPC服务在K8S进行注册,除了Unix虚拟套接字外,还包括本设备插件API版本以及基于Unix虚拟套接字定义的ResourceName,其中ResourceName是公布在K8S进行GPU资源管理的名字。
206、根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
207、获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
本发明实施例中,通过将物理GPU卡转换为“GPU卡槽路径”-“序号”格式的虚拟Unix套接字在K8S中注册,将单个GPU卡划分为更细粒度的资源来进行分配管理,使得K8S集群管理单个GPU卡可以在容器之间共享,以及提升GPU卡的资源分配灵活度。
请参阅图3,本发明实施例中GPU资源调度方法的第三个实施例包括:
301、获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
302、确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;
303、确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;
304、根据分配的节点资源,将各进程分配到的对应GPU卡的节点资源在所述K8S集群中与所述套接信息进行绑定;
305、基于绑定的结果,生成所述目标容器在所述K8S集群中的节点资源信息;
本实施例中,将目标容器中每个进程分配到的节点资源,与给该目标容器的虚拟Unix套接字进行关联并绑定,生成节点资源信息。除此之外,还可以将其进程标识为已使用,确保资源申请量少于等于申请限制,同时也能保证节点资源的GPU资源总和申请少于管理的虚拟Unix套接字总数。
需注意的是,此处的目标容器的数量可以为1个容器也可以为多个容器,此处不作具体限定,即可以为一个容器包括多个进程,也可以为一个容器为一个进程,同时为多个容器对应的进程进行GPU资源的分配。
306、根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
本实施例中,实现对目标容器的GPU资源分配后,为了保证每次目标容器中每个进程对GPU资源申请量少于其所分配到的GPU资源,可以对GPU中每个pod的GPU显存使用量,即可监测对应进程的显存使用量,当单个pod的GPU显存使用量超过进程在K8S集群注册时的limit设定(显存需求量),则自动对该pod发出重启策略,以确保GPU卡虚拟化后多个占用进程的隔离,pod关联套接字,即对对应目标容器的各进程的GPU资源重新分配。具体步骤如下所示:
1)监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;
2)若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源;
另外,还可将监控每个进程的GPU服务的资源使用,以符合prometheus的格式,并输出每个pod的GPU显存使用数据。
307、获取在K8S集群上对所述目标容器的操作指令;
308、参照所述套接信息,确定所述操作指令指向的模拟卡槽,并通过所述模拟卡槽,将所述操作指令发送至所述目标容器分配到的GPU资源对应的GPU分区;
309、采用所述操作指令遍历所述GPU分区,并基于遍历的结果,确定所述操作指令所操作的GPU资源;
310、将所述操作指令所操作的GPU资源调度至所述目标容器。
本实施例中,通过套接信息来模拟卡槽的路径指向,并获取对应卡槽划分的GPU分区,多个容器可以选取对应的GPU分区以共享同一张GPU卡中的GPU资源。然后在操作指令指向目标容器分配的GPU分区后,即可根据操作指令内的标识,来调度该GPU分区中的GPU资源。
具体的,在K8S集群对目标容器进行操作之前,需要启动GPU资源调动服务,首先执行初始化的设置,同时使用前面生成的的Unix虚拟套接字启动gRPC服务,调用路径可以为/var/lib/kubelet/device-plugins/,再向K8S集群注册自身,调用路径可以为/var/lib/kubelet/device-plugins/kubelet.sock,而后以服务模型运行,并持续监控运行状况及向K8S集群报告。
本发明实施例中,通过对K8S集群的pod的显存使用超过GPU资源用量限制后执行重启策略,确保使用同一GPU卡的多个pod的资源虚拟隔离,保证为各pod提供足量的显存限制下的GPU资源;同时,输出各pod的GPU显存使用量,提高K8S集群管理下的各GPU资源调度的稳定性。
上面对本发明实施例中GPU资源调度方法进行了描述,下面对本发明实施例中GPU资源调度装置进行描述,请参阅图4,本发明实施例中GPU资源调度装置一个实施例包括:
创建模块401,用于获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
虚拟化模块402,用于基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;
划分模块403,用于根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
调度模块404,用于获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
本发明实施例中,通过针对目标容器,在GPU资源中模拟卡槽创建生成套接信息,使得容器可以在模拟卡槽共享同一个GPU卡的资源,或者将容器的多个进程分配到多个GPU卡中;接着可以基于套接信息,将目标容器在K8S集群上进行虚拟化处理,即可得到目标容器在K8S集群对应的节点资源信息,对来GPU资源进行划分并分配给目标容器;后续在获取到对目标容器的操作指令,可以按照参照套接信息,在目标容器分配到的GPU资源中调度操作指令对应的GPU资源,以实现了多个容器共享一个GPU卡的资源,提升了GPU资源需求使用的灵活性。
请参阅图5,本发明实施例中GPU资源调度装置的另一个实施例包括:
创建模块401,用于获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
虚拟化模块402,用于基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;
划分模块403,用于根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
调度模块404,用于获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
具体的,所述创建模块401包括:
确定单元4011,用于根据所述注册信息,确定所述目标容器在所述GPU资源中待注册的显存容量以及模拟卡槽的注册名称;
创建单元4012,用于按照预置格式,采用所述注册名称创建所述目标容器在所述GPU资源中的套接字,并基于所述套接字和所述显存容量生成套接信息。
具体的,所述虚拟化模块402包括:
统计单元4021,用于确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;
分配单元4022,用于确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;
生成单元4023,用于根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息。
具体的,所述生成单元4023还用于:
根据分配的节点资源,将各进程分配到的对应GPU卡的节点资源在所述K8S集群中与所述套接信息进行绑定;
基于绑定的结果,生成所述目标容器在所述K8S集群中的节点资源信息。
具体的,所述GPU资源调度装置还包括重启模块405,用于:
监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;
若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源。
具体的,所述调度模块404包括:
发送单元4041,用于参照所述套接信息,确定所述操作指令指向的模拟卡槽,并通过所述模拟卡槽,将所述操作指令发送至所述目标容器分配到的GPU资源对应的GPU分区;
遍历单元4042,用于采用所述操作指令遍历所述GPU分区,并基于遍历的结果,确定所述操作指令所操作的GPU资源;
调度单元4043,用于将所述操作指令所操作的GPU资源调度至所述目标容器。
本发明实施例中,通过将物理GPU卡转换为“GPU卡槽路径”-“序号”格式的虚拟Unix套接字在K8S中注册,将单个GPU卡划分为更细粒度的资源来进行分配管理,使得K8S集群管理单个GPU卡可以在容器之间共享,以及提升GPU卡的资源分配灵活度;另外,通过对K8S集群的pod的显存使用超过GPU资源用量限制后执行重启策略,确保使用同一GPU卡的多个pod的资源虚拟隔离,保证为各pod提供足量的显存限制下的GPU资源;同时,输出各pod的GPU显存使用量,提高K8S集群管理下的各GPU资源调度的稳定性。
上面图4和图5从模块化功能实体的角度对本发明实施例中的GPU资源调度装置进行详细描述,下面从硬件处理的角度对本发明实施例中GPU资源调度设备进行详细描述。
图6是本发明实施例提供的一种GPU资源调度设备的结构示意图,该GPU资源调度设备600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)610(例如,一个或一个以上处理器)和存储器620,一个或一个以上存储应用程序633或数据632的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器620和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对GPU资源调度设备600中的一系列指令操作。更进一步地,处理器610可以设置为与存储介质630通信,在GPU资源调度设备600上执行存储介质630中的一系列指令操作。
GPU资源调度设备600还可以包括一个或一个以上电源640,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口660,和/或,一个或一个以上操作系统631,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的GPU资源调度设备结构并不构成对GPU资源调度设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种GPU资源调度设备,所述计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述GPU资源调度方法的步骤。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述GPU资源调度方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种GPU资源调度方法,其特征在于,所述GPU资源调度方法包括:
获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;
根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
2.根据权利要求1所述的GPU资源调度方法,其特征在于,所述根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息包括:
根据所述注册信息,确定所述目标容器在所述GPU资源中待注册的显存容量以及模拟卡槽的注册名称;
按照预置格式,采用所述注册名称创建所述目标容器在所述GPU资源中的套接字,并基于所述套接字和所述显存容量生成套接信息。
3.根据权利要求1所述的GPU资源调度方法,其特征在于,所述基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息包括:
确定所述目标容器的进程信息,并统计所述进程信息中各个进程的显存需求量;
确定与所述K8S集群关联的各张GPU卡的资源信息,并基于所述资源信息和所述显存需求量,分配所述各个进程在对应各张GPU卡的节点资源;
根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息。
4.根据权利要求3所述的GPU资源调度方法,其特征在于,所述根据分配的节点资源和所述套接信息,生成所述目标容器在所述K8S集群中的节点资源信息包括:
根据分配的节点资源,将各进程分配到的对应GPU卡的节点资源在所述K8S集群中与所述套接信息进行绑定;
基于绑定的结果,生成所述目标容器在所述K8S集群中的节点资源信息。
5.根据权利要求3所述的GPU资源调度方法,其特征在于,在所述根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器之后,还包括:
监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;
若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源。
6.根据权利要求1-5任一项所述的GPU资源调度方法,其特征在于,所述参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源包括:
参照所述套接信息,确定所述操作指令指向的模拟卡槽,并通过所述模拟卡槽,将所述操作指令发送至所述目标容器分配到的GPU资源对应的GPU分区;
采用所述操作指令遍历所述GPU分区,并基于遍历的结果,确定所述操作指令所操作的GPU资源;
将所述操作指令所操作的GPU资源调度至所述目标容器。
7.一种GPU资源调度装置,其特征在于,所述GPU资源调度装置包括:
创建模块,用于获取目标容器对GPU资源的注册信息,并根据所述注册信息,创建目标容器在所述GPU资源中模拟卡槽的套接信息;
虚拟化模块,用于基于所述套接信息,将所述目标容器在K8S集群上进行虚拟化处理,得到所述目标容器在所述K8S集群对应的节点资源信息;
划分模块,用于根据所述节点资源信息,对所述GPU资源进行划分,并通过所述K8S集群将划分的GPU资源分配给所述目标容器;
调度模块,用于获取在K8S集群上对所述目标容器的操作指令,并参照所述套接信息,在所述目标容器分配到的GPU资源中调度所述操作指令对应的GPU资源。
8.根据权利要求7所述的GPU资源调度装置,其特征在于,所述GPU资源调度装置还包括重启模块,用于:
监测所述目标容器中各个进程的显存使用量,并分别判断监测到的各个显存使用量是否超过对应进程的显存需求量;
若超过,则在所述K8S集群中对所述目标容器执行预置的重启策略,按照所述显存使用量,重新分配各个进程在对应各张GPU卡的节点资源。
9.一种GPU资源调度设备,其特征在于,所述GPU资源调度设备包括:存储器和至少一个处理器,所述存储器中存储有指令;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述GPU资源调度设备执行如权利要求1-6中任意一项所述的GPU资源调度方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-6中任意一项所述GPU资源调度方法的步骤。
CN202210579693.9A 2022-05-26 2022-05-26 Gpu资源调度方法、装置、设备及存储介质 Pending CN114942846A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210579693.9A CN114942846A (zh) 2022-05-26 2022-05-26 Gpu资源调度方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210579693.9A CN114942846A (zh) 2022-05-26 2022-05-26 Gpu资源调度方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114942846A true CN114942846A (zh) 2022-08-26

Family

ID=82908407

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210579693.9A Pending CN114942846A (zh) 2022-05-26 2022-05-26 Gpu资源调度方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114942846A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827253A (zh) * 2023-02-06 2023-03-21 青软创新科技集团股份有限公司 一种芯片资源算力分配方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827253A (zh) * 2023-02-06 2023-03-21 青软创新科技集团股份有限公司 一种芯片资源算力分配方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US10467725B2 (en) Managing access to a resource pool of graphics processing units under fine grain control
Park et al. Locality-aware dynamic VM reconfiguration on MapReduce clouds
US8656387B2 (en) Method and system for workload distributing and processing across a network of replicated virtual machines
US20190250946A1 (en) Migrating a software container taking into account resource constraints
CN110741352B (zh) 虚拟网络功能管理系统和管理方法及计算机可读存储设备
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
Gahlawat et al. Survey of virtual machine placement in federated clouds
US11740921B2 (en) Coordinated container scheduling for improved resource allocation in virtual computing environment
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
CN112148489A (zh) 游戏资源调度方法、装置、设备及存储介质
CN116541134B (zh) 多架构集群中容器的部署方法及装置
US20220253341A1 (en) Memory-aware placement for virtual gpu enabled systems
CN108073423A (zh) 一种加速器加载方法、系统和加速器加载装置
CN111798113A (zh) 资源分配方法、装置、存储介质和电子设备
CN113674131A (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN109976907A (zh) 任务分配方法和系统、电子设备、计算机可读介质
CN106412030B (zh) 一种选择存储资源方法、装置及系统
CN115543615A (zh) 一种资源分配方法、装置、电子设备及存储介质
CN114942846A (zh) Gpu资源调度方法、装置、设备及存储介质
CN107992351B (zh) 一种硬件资源分配方法及装置、电子设备
CN110532060A (zh) 一种混合网络环境数据采集方法及系统
CN113835897A (zh) 一种在分布式计算集群Kubernetes上对GPU资源进行分配使用的方法
CN113438295A (zh) 容器组地址分配方法、装置、设备及存储介质
KR101640231B1 (ko) 자동 분산병렬 처리 하둡 시스템의 지원을 위한 클라우드 구동 방법
CN112506646A (zh) 显存分配的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination