CN108804217A - 一种资源调度装置、资源调度系统和资源调度方法 - Google Patents
一种资源调度装置、资源调度系统和资源调度方法 Download PDFInfo
- Publication number
- CN108804217A CN108804217A CN201710283385.0A CN201710283385A CN108804217A CN 108804217 A CN108804217 A CN 108804217A CN 201710283385 A CN201710283385 A CN 201710283385A CN 108804217 A CN108804217 A CN 108804217A
- Authority
- CN
- China
- Prior art keywords
- gpu
- container
- file
- calculate node
- itself
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种资源调度装置、资源调度系统和资源调度方法,包括GPU适配模块、GPU发现模块和GPU挂载模块,其中,GPU适配模块,用于检测自身所属装置的GPU块数及GPU的驱动文件,创建GPU调用文件,通知GPU发现模块;GPU发现模块,用于接收到GPU适配模块的通知,监听自身所属装置的GPU的使用信息,并向管理节点上报自身所属装置的GPU块数和使用信息;GPU挂载模块,用于接收创建容器请求,创建容器,选择自身所属装置的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。本发明基于容器化技术,通过各个节点自身检测、监听、选择和挂载GPU,提高了GPU使用效率,同时避免了集群中GPU资源使用不均的情况。
Description
技术领域
本发明涉及云计算资源管理及容器部署技术领域,尤其涉及一种资源调度装置、资源调度系统和资源调度方法。
背景技术
云计算是一种资源共享的计算模式,这种模式提供可用的、便捷的、按需的网络访问,云计算提供的资源能够被快速提供和共享复用。图形处理器(Graphics ProcessingUnit,GPU)是高性能云计算系统中的一种特殊资源,在大数据和图像识别领域,都需要使用GPU对数据进行分析和计算,特别是对于图像识别,GPU对数据的处理速度远高于CPU。
然而,目前的主流技术仍然是通过创建虚拟机挂载GPU来提供计算环境,在公开号为“CN105242957A”,发明名称为“一种云计算系统调配GPU资源到虚拟机的方法及系统”的申请中,提出了一种云计算管理系统如何优化各个计算节点的GPU资源的方法,该发明使用虚拟机负载计算任务,但是虚拟机带来的资源消耗也成为了资源瓶颈,虚拟机相当于一个小型的机器,必须为其分配固定大小的CPU和内存等资源,如果虚拟机负载的计算任务较小则会造成资源的浪费,且虚拟机的创建时间非常长。
在公开号为“CN105959404A”,发明名称为“一种基于云计算的GPU虚拟化平台”的申请中,提出了一种虚拟化环境中虚拟机以重定向方式利用多GPU加速计算的平台架构。但是在实际应用中,这样的方法需要实现额外的截取工作,在操作系统层面上对GPU的调用进行截取然后重定向到远程的GPU资源。这种方法不仅需要对操作系统进行深层次的改造,更因为GPU与计算任务不在同一节点导致增加了运算时间。
在期刊《小型微型计算机系统》2016年第四期687-693页“云计算环境下多GPU资源调度机制研究”中,提到了一种云环境下GPU计算资源调度机制,其中计算任务是由底层的虚拟机发起,逐级向上传递到最高层的总调度中心,每一层都会计算是否能够容纳计算任务,不能则向上传递由上层进行再分配。但是这样将会导致两个问题:一是对于底层的虚拟机来说,它无法获知整个集群中最优的GPU节点;二是在不断向上传递的过程中消耗计算时间。
容器技术可以认为是一种操作系统级别的虚拟化,其相当于操作系统内的一个进程,拥有独立的命令空间,在保证为计算任务提供与操作系统同样的指令的同时,能够减少对系统资源的消耗,同样硬件配置的节点能够创建的容器数量往往百倍于虚拟机,并且创建时间更短。但是,在目前使用容器的专利中,例如,CN106453492A“基于模糊模式识别的Docker容器云平台下的容器调度方法”、CN105893010A“用于容器部署的主机调度方法及系统”、CN106027643A“一种基于kubernetes容器集群管理系统的资源调度方法”等等,都没有实现对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为本发明第一实施例的一种资源调度系统的结构示意图;
图3为本发明第一实施例的一种资源调度方法的流程示意图;
图4为本发明第二实施例的一种资源调度方法的流程示意图;
图5为本发明第二实施例的一种资源调度系统的结构示意图;
图6为本发明第三实施例的一种资源调度方法的流程示意图;
图7是本发明第三实施例的资源调度方法的集群GPU信息更新流程图;
图8是本发明第三实施例的资源调度方法的容器GPU挂载流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1所示,根据本发明的一种资源调度装置,包括GPU适配模块、GPU发现模块和GPU挂载模块,其中,
GPU适配模块,用于检测自身所属装置的GPU块数及GPU的驱动文件,创建GPU调用文件,通知GPU发现模块;
GPU发现模块,用于接收到GPU适配模块的通知,监听自身所属装置的GPU的使用信息,并向管理节点上报自身所属装置的GPU块数和使用信息;
GPU挂载模块,用于接收管理节点的创建容器请求,创建容器,选择自身所属装置的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
进一步地,所述GPU适配模块还用于,在容器平台中创建卷驱动插件,所述GPU挂载模块创建所述容器时,具体用于:通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
进一步地,所述GPU适配模块还用于,在所述驱动文件中挑选用户态库文件,并存储到预设的目录下;所述选择的GPU的驱动文件为用户态库文件。
值得说明的是,所述的用户态库文件,指的是调用GPU所需的驱动文件。当多块GPU为同一类型时,其驱动文件可以相同,但每块GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
进一步地,所述GPU发现模块还用于:向管理节点上报自身所属装置的GPU的规格信息。
具体地,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
进一步地,所述GPU挂载模块选择自身所属装置的GPU,具体为:选择自身所属装置下使用率最小的N块GPU,所述N为计算任务需要的GPU块数。
进一步地,所述GPU适配模块还用于:对自身所属装置的GPU进行编号,以方便上层应用程序进行调用。
进一步地,所述GPU挂载模块还用于:对容器中的调用文件重新编号,以方便上层应用程序进行调用。
进一步地,所述GPU挂载模块还用于:当容器中的计算任务运行结束时,自动销毁容器。
具体地,当容器销毁后,GPU发现模块向管理节点上报自身所属装置的新的GPU的使用信息,管理节点将新的使用信息更新进缓存,所述缓存用于保存各个计算节点的GPU的使用信息。
如图2所示,本发明实施例还提供了一种资源调度系统,包括一个管理节点和若干个计算节点,其中,
计算节点,用于检测自身的GPU块数及GPU的驱动文件,创建GPU调用文件,监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;当接收到创建容器请求时,创建容器,选择自身的GPU,并将所述GPU的驱动文件和调用文件挂载到容器中;
管理节点,用于接收并存储各个计算节点的GPU块数和使用信息,当有计算任务时,根据计算任务需要的GPU块数,选择计算节点,请求所选择的计算节点创建容器。
进一步地,所述计算节点还用于,在容器平台中创建卷驱动插件,并通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
进一步地,所述计算节点还用于,在所述驱动文件中挑选用户态库文件,并存储到预设的目录下;
所述所选择的GPU的驱动文件为用户态库文件。
值得说明的是,所述的用户态库文件,指的是调用GPU所需的驱动文件。当多块GPU为同一类型时,其驱动文件可以相同,但每块GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
进一步地,所述计算节点还用于:向管理节点上报自身GPU的规格信息。
具体地,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
进一步地,所述管理节点选择的计算节点,具体为:所选择的计算节点的GPU块数大于或等于计算任务需要的GPU块数,且所选择的计算节点GPU使用率最小。
进一步地,所述计算节点选择自身的GPU,具体为:选择自身使用率最小的N块GPU,所述N为计算任务需要的GPU块数。
进一步地,所述计算节点还用于:对自身的GPU进行编号,以方便上层应用程序进行调用。
进一步地,所述计算节点还用于:对容器中的调用文件重新编号,以方便上层应用程序进行调用。
进一步地,所述计算节点还用于:当容器中的计算任务运行结束时,自动销毁容器。
具体地,当容器销毁后,计算节点向管理节点上报自身新的GPU的使用信息,管理节点将新的使用信息更新进缓存,所述缓存用于保存各个计算节点的GPU的使用信息。
如图3所示,本发明实施例还提供了一种资源调度方法,包括如下步骤:
步骤301:计算节点检测自身的GPU块数及GPU的驱动文件,创建GPU调用文件;
步骤302:计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;
步骤303:当接收到管理节点的创建容器请求时,计算节点创建容器,选择自身的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
进一步地,所述步骤301还包括,计算节点在容器平台中创建卷驱动插件;
在步骤303中,所述将所述选择的GPU的驱动文件挂载到所述容器中,具体为:通过卷驱动插件将所述选择的GPU的驱动文件挂载到所述容器中。
进一步地,所述步骤301还包括,计算节点在所述GPU的驱动文件中挑选用户态库文件,并存储到预设的目录下;
所述步骤303中,所述选择的GPU的驱动文件为用户态库文件。
值得说明的是,所述的用户态库文件,指的是调用GPU所需的驱动文件。当多块GPU为同一类型时,其驱动文件可以相同,但每块GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
进一步地,所述步骤302还包括:计算节点向管理节点上报自身的GPU的规格信息。具体地,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
进一步地,所述步骤303中,计算节点选择自身的GPU的方法为:选择自身使用率最小的N块GPU,所述N为计算任务需要的GPU块数。
进一步地,所述步骤301还包括,计算节点对自身的GPU进行编号,以方便上层应用程序进行调用。
进一步地,所述步骤303还包括,计算节点对容器中的调用文件重新编号,以方便上层应用程序进行调用。
进一步地,所述步骤303还包括,当容器中的计算任务运行结束时,计算节点自动销毁容器。
具体地,当容器销毁后,计算节点向管理节点上报自身的新的GPU的使用信息,管理节点将新的使用信息更新进缓存,所述缓存用于保存各个计算节点的GPU的使用信息。
如图4所示,本发明实施例还提供了一种资源调度方法,包括如下步骤:
步骤401:每个计算节点检测自身的GPU块数及GPU的驱动文件,创建GPU调用文件;
步骤402:每个计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;
步骤403:管理节点接收并存储各个计算节点的GPU块数和使用信息,当有计算任务时,根据计算任务需要的GPU块数,选择计算节点,请求所选择的计算节点创建容器;
步骤404:所选择的计算节点接收管理节点的创建容器请求,创建容器,选择自身的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
进一步地,所述所选择的计算节点为:所述所选择的计算节点拥有的GPU块数大于或等于所述计算任务需要的GPU块数,且所述所选择的计算节点GPU使用率最小。
进一步地,所述步骤401还包括,每个计算节点在容器平台中创建卷驱动插件;
在步骤404中,所述将所选择的GPU的驱动文件挂载到所述容器中,具体为:通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
进一步地,所述步骤401还包括,每个计算节点在所述GPU的驱动文件中挑选用户态库文件,并存储到预设的目录下;
所述步骤404中,所选择的GPU的驱动文件为用户态库文件。
值得说明的是,所述的用户态库文件,指的是调用GPU所需的驱动文件。当多块GPU为同一类型时,其驱动文件可以相同,但每块GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
进一步地,所述步骤402还包括:每个计算节点向管理节点上报自身的GPU的规格信息。具体地,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
进一步地,所述步骤404中,所选择的计算节点选择自身的GPU的方法为:选择自身使用率最小的N块GPU,所述N为计算任务需要的GPU块数。
进一步地,所述步骤401还包括,每个计算节点对自身的GPU进行编号,以方便上层应用程序进行调用。
进一步地,所述步骤404还包括,所选择的计算节点对容器中的调用文件重新编号,以方便上层应用程序进行调用。
进一步地,所述步骤404还包括,当容器中的计算任务运行结束时,所选择的计算节点自动销毁容器。
具体地,当容器销毁后,所选择的计算节点向管理节点上报自身的新的GPU的使用信息,管理节点将新的使用信息更新进缓存,所述缓存用于保存各个计算节点的GPU的使用信息。
下面结合一优选实施例,对本发明进行进一步解释,但是值得注意的是,该优选实施例只是为了更好的描述本发明,并不构成对本发明不当的限定。
如图5所示,整个系统架构为一云计算集群系统,系统中有两种节点:管理节点和计算节点,整个集群系统包括一个管理节点和若干个计算节点,每个节点包括若干块GPU卡,每个节点包括GPU适配模块、GPU发现模块和GPU挂载模块,所述管理节点还包括容器管理模块(当管理节点不作为计算节点使用时,可以只包括容器管理模块,不包括GPU适配模块、GPU发现模块和GPU挂载模块),其中,
GPU适配模块,用于检测自身所属计算节点的GPU块数及GPU的驱动文件,创建GPU调用文件,将自身所属计算节点的GPU块数发送至GPU发现模块;
GPU发现模块,用于根据接收的GPU块数,监听自身所属计算节点的GPU的使用信息,并向容器管理模块上报自身所属计算节点的GPU块数和使用信息;
容器管理模块,用于接收并存储各个计算节点的GPU块数和使用信息,当有计算任务时,根据计算任务需要的GPU块数,选择计算节点,请求所选择的计算节点创建容器;
GPU挂载模块,用于接收容器管理模块的创建容器请求,创建容器,选择自身所属计算节点的GPU,并将所述GPU的驱动文件和调用文件挂载到容器中。
如图6所示,根据本发明的资源调度方法,包括以下步骤:
步骤601:集群启动后,集群中各个节点的GPU适配模块查找本节点的GPU及其对应的驱动文件,挑选出驱动文件中的用户态库文件,存放到预设的目录,并对GPU设备重新进行编码,创建调用文件,在容器平台中创建卷驱动插件,监听卷挂载请求;
步骤602:当各个计算节点的GPU适配模块发现插入新的GPU或移除GPU时,通知GPU发现模块;GPU发现模块将本节点的容器信息和GPU信息发送至管理节点的容器管理模块,所述容器信息包括:本节点标识、容器数量、每个容器标识、每个容器的GPU使用量和内存使用量,所述GPU信息包括:本节点标识、GPU数量、每个GPU的规格信息和使用率;
步骤603:容器管理模块监听整个集群的容器信息和GPU信息;当有计算任务需要创建新的容器时,通过比较集群的GPU数据和计算任务需要的GPU数,得到最优的计算节点,将创建容器请求下发到该计算节点,所述创建容器请求包括容器申请的GPU数量;
步骤604:当创建容器请求到达该计算节点时,该计算节点的GPU挂载模块挑选出当前最空闲的N个GPU(N为容器申请的GPU数量),将所述N个GPU对应的驱动文件和调用文件挂载到容器中,并对容器内挂载的调用文件重新编号(编号从0开始);
步骤605:容器内的计算任务结束后,该计算节点自动销毁容器,GPU挂载模块将回收的GPU资源上报容器管理模块;
步骤606:容器管理模块根据上报的GPU资源状况更新集群GPU资源。
如图7所示,集群GPU信息更新流程包括如下步骤:
步骤701:集群启动后,GPU适配模块查找自身所属节点的GPU及其对应的驱动文件,挑选出驱动文件中的用户态库文件,存放到指定目录,在系统目录(/dev目录)下创建GPU调用文件,往容器平台中注入卷驱动插件;
步骤702:GPU发现模块监听自身所属节点的GPU的使用信息,将自身所属节点的GPU信息发送至容器管理模块,所述GPU信息包括:节点标识、GPU数量、每个GPU的规格和使用率;
步骤703:容器管理模块监听整个集群的GPU信息。
如图8所示,将GPU挂载到容器的流程包括如下步骤:
步骤801:当有计算任务需要创建新的容器时,容器管理模块获取计算任务所需GPU数量,并检测集群中是否有满足GPU数量要求的计算节点,如果没有满足GPU数量要求的计算节点,流程结束;如果有满足GPU数量要求的计算节点,从满足GPU数量要求的若干个计算节点中,选出GPU使用率最低的计算节点,将创建容器请求下发到该计算节点,所述创建容器请求包括容器申请的GPU数量;
步骤802:当创建容器请求到达该计算节点时,该计算节点的GPU挂载模块挑选出当前最空闲的N个GPU(N为容器申请的GPU数量),通过容器平台创建容器,将用户态库文件和GPU调用文件挂载到容器中,并对容器内挂载的GPU调用文件重新编号(编号从0开始);
步骤803:容器内的计算任务开始运行。
本发明能够自动发现并适配集群中的GPU,通过在容器中挂载GPU为应用程序提供GPU运行环境;本发明基于容器平台创建容器运行计算任务,相对于虚拟机,采用容器能够减少启动计算任务的时间,并且在单一节点上能够创建更多的容器;容器能够方便的挂载GPU,不需要创建容器时进行额外操作,容器内的应用程序可以无缝使用GPU;同时利用容器的快速启动和销毁等特性提高GPU使用效率。容器具有更高的资源使用效率;本发明能够自动发现集群中的所有GPU,识别出当前集群中的空闲GPU,并且能够把容器分配到包含最优的GPU的节点上,同时当计算任务结束后能够立即回收容器和GPU资源,从而能够极大地提高集群的GPU使用效率。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种资源调度装置,其特征在于,包括GPU适配模块、GPU发现模块和GPU挂载模块,其中,
GPU适配模块,用于检测自身所属装置的GPU块数及GPU的驱动文件,创建GPU调用文件,通知GPU发现模块;
GPU发现模块,用于接收到GPU适配模块的通知,监听自身所属装置的GPU的使用信息,并向管理节点上报自身所属装置的GPU块数和使用信息;
GPU挂载模块,用于接收创建容器请求,创建容器,选择自身所属装置的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
2.根据权利要求1所述的资源调度装置,其特征在于,所述GPU适配模块还用于,在容器平台中创建卷驱动插件;
所述GPU挂载模块创建所述容器时,具体用于:通过卷驱动插件将所述所选择的GPU的驱动文件挂载到所述容器中。
3.根据权利要求1所述的资源调度装置,其特征在于,所述GPU适配模块还用于,在所述驱动文件中挑选用户态库文件,并存储到预设的目录下,所述用户态库文件为调用GPU所需的驱动文件;
所述选择的GPU的驱动文件为用户态库文件。
4.一种资源调度系统,其特征在于,包括一个管理节点和若干个计算节点,其中,
计算节点,用于检测自身的GPU,创建GPU调用文件,监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;当接收到创建容器请求时,创建容器,选择自身的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中;
管理节点,用于接收并存储各个计算节点的GPU块数和使用信息,当有计算任务时,根据计算任务需要的GPU块数,选择计算节点,请求所选择的计算节点创建容器。
5.根据权利要求4所述的资源调度系统,其特征在于,所述管理节点选择的计算节点,具体为:所述所选择的计算节点的GPU块数大于或等于所述计算任务需要的GPU块数,且所述所选择的计算节点GPU使用率最小。
6.一种资源调度方法,其特征在于,包括:
计算节点检测自身的GPU块数及GPU的驱动文件,创建GPU调用文件;
计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;
当接收到管理节点的创建容器请求时,计算节点创建容器,选择自身的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
7.根据权利要求6所述的资源调度方法,其特征在于,在所述计算节点检测自身的GPU块数及GPU的驱动文件后,所述方法还包括:
所述计算节点在容器平台中创建卷驱动插件;
所述将所选择的GPU的驱动文件挂载到所述容器中,具体为:通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
8.根据权利要求6所述的资源调度方法,其特征在于,在所述计算节点检测自身的GPU块数及GPU的驱动文件后,所述方法还包括:
所述计算节点在所述GPU的驱动文件中挑选用户态库文件,并存储到预设的目录下,所述用户态库文件为调用GPU所需的驱动文件;
所述所选择的GPU的驱动文件,为用户态库文件。
9.一种资源调度方法,其特征在于,所述方法还包括:
每个计算节点检测自身的GPU块数及GPU的驱动文件,创建GPU调用文件;
每个计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU块数和使用信息;
管理节点接收并存储各个计算节点的GPU块数和使用信息,当有计算任务时,根据计算任务需要的GPU块数,选择计算节点,请求所选择的计算节点创建容器;
所选择的计算节点接收管理节点的创建容器请求,创建容器,选择自身的GPU,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
10.根据权利要求9所述的资源调度方法,其特征在于,所述所选择的计算节点为:所述所选择的计算节点拥有的GPU块数大于或等于所述计算任务需要的GPU块数,且所述所选择的计算节点GPU使用率最小。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710283385.0A CN108804217A (zh) | 2017-04-26 | 2017-04-26 | 一种资源调度装置、资源调度系统和资源调度方法 |
PCT/CN2018/074960 WO2018196462A1 (zh) | 2017-04-26 | 2018-02-01 | 资源调度装置、资源调度系统和资源调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710283385.0A CN108804217A (zh) | 2017-04-26 | 2017-04-26 | 一种资源调度装置、资源调度系统和资源调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108804217A true CN108804217A (zh) | 2018-11-13 |
Family
ID=63918794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710283385.0A Withdrawn CN108804217A (zh) | 2017-04-26 | 2017-04-26 | 一种资源调度装置、资源调度系统和资源调度方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108804217A (zh) |
WO (1) | WO2018196462A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532064A (zh) * | 2019-08-27 | 2019-12-03 | 北京百度网讯科技有限公司 | 提供计算资源的方法、装置、设备和存储介质 |
CN111930473A (zh) * | 2020-09-25 | 2020-11-13 | 亮风台(上海)信息科技有限公司 | 在容器云上部署图像识别服务的方法与设备 |
CN116627661A (zh) * | 2023-07-24 | 2023-08-22 | 杭州谐云科技有限公司 | 算力资源调度的方法和系统 |
CN118426912A (zh) * | 2024-07-04 | 2024-08-02 | 阿里云计算有限公司 | 基于gpu的用户容器处理方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532098B (zh) * | 2019-08-30 | 2022-03-08 | 广东星舆科技有限公司 | 提供gpu服务的方法及系统 |
CN111736915B (zh) * | 2020-06-05 | 2022-07-05 | 浪潮电子信息产业股份有限公司 | 云主机实例硬件加速设备的管理方法、装置、设备及介质 |
CN118210606B (zh) * | 2024-03-12 | 2024-10-01 | 中国地质调查局自然资源综合调查指挥中心 | 人工智能地质图建模的任务管理与资源调度方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631634A (zh) * | 2012-08-24 | 2014-03-12 | 中国电信股份有限公司 | 实现图形处理器虚拟化的方法与装置 |
US20150142878A1 (en) * | 2013-11-17 | 2015-05-21 | Nimbix, Inc. | Dynamic creation and execution of containerized applications in cloud computing |
CN105677479A (zh) * | 2015-12-30 | 2016-06-15 | 北京奇艺世纪科技有限公司 | 并行运行gpu运算程序的实现方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761139B (zh) * | 2014-01-25 | 2017-02-08 | 湖南大学 | 一种基于动态库拦截的通用计算虚拟化实现方法 |
US9665398B2 (en) * | 2014-05-30 | 2017-05-30 | Apple Inc. | Method and apparatus for activity based execution scheduling |
CN105138389B (zh) * | 2015-07-30 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 一种集群中虚拟设备的管理方法及系统 |
CN106406977B (zh) * | 2016-08-26 | 2019-06-11 | 山东乾云启创信息科技股份有限公司 | 一种gpu虚拟化实现系统及方法 |
-
2017
- 2017-04-26 CN CN201710283385.0A patent/CN108804217A/zh not_active Withdrawn
-
2018
- 2018-02-01 WO PCT/CN2018/074960 patent/WO2018196462A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631634A (zh) * | 2012-08-24 | 2014-03-12 | 中国电信股份有限公司 | 实现图形处理器虚拟化的方法与装置 |
US20150142878A1 (en) * | 2013-11-17 | 2015-05-21 | Nimbix, Inc. | Dynamic creation and execution of containerized applications in cloud computing |
CN105677479A (zh) * | 2015-12-30 | 2016-06-15 | 北京奇艺世纪科技有限公司 | 并行运行gpu运算程序的实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
QQ_35254726: "k8s调用gpu,nvidia-docker使用gpu", 《HTTPS://BLOG.CSDN.NET/QQ_35254726/ARTICLE/DETAILS/60326433》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532064A (zh) * | 2019-08-27 | 2019-12-03 | 北京百度网讯科技有限公司 | 提供计算资源的方法、装置、设备和存储介质 |
CN111930473A (zh) * | 2020-09-25 | 2020-11-13 | 亮风台(上海)信息科技有限公司 | 在容器云上部署图像识别服务的方法与设备 |
CN116627661A (zh) * | 2023-07-24 | 2023-08-22 | 杭州谐云科技有限公司 | 算力资源调度的方法和系统 |
CN116627661B (zh) * | 2023-07-24 | 2023-11-03 | 杭州谐云科技有限公司 | 算力资源调度的方法和系统 |
CN118426912A (zh) * | 2024-07-04 | 2024-08-02 | 阿里云计算有限公司 | 基于gpu的用户容器处理方法、装置、设备及介质 |
CN118426912B (zh) * | 2024-07-04 | 2024-09-03 | 阿里云计算有限公司 | 基于gpu的用户容器处理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2018196462A1 (zh) | 2018-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804217A (zh) | 一种资源调度装置、资源调度系统和资源调度方法 | |
US11740921B2 (en) | Coordinated container scheduling for improved resource allocation in virtual computing environment | |
US11106508B2 (en) | Elastic multi-tenant container architecture | |
CN105052074B (zh) | 用于提供虚拟化直径网络架构以及用于将业务量路由至动态实例化的直径资源实例的方法、系统和计算机可读介质 | |
CN108182105B (zh) | 基于Docker容器技术的局部动态迁移方法及控制系统 | |
CN109117265A (zh) | 在集群中调度作业的方法、装置、设备及存储介质 | |
CN106095524B (zh) | 一种虚拟机部署方法、系统和装置 | |
US20120089663A1 (en) | Apparatus for end-user transparent utilization of computational, storage, and network capacity of mobile devices, and associated methods | |
CN108139935A (zh) | 业务定义容器的资源约束的扩展 | |
CN107864211B (zh) | 集群资源调度方法及系统 | |
CN106462599B (zh) | 缓存存储器与工作进程的关联 | |
CN112269641A (zh) | 一种调度方法、装置、电子设备及存储介质 | |
CN105843683A (zh) | 用于动态优化平台资源分配的方法、系统和设备 | |
US20100042723A1 (en) | Method and system for managing load in a network | |
CN109976907B (zh) | 任务分配方法和系统、电子设备、计算机可读介质 | |
CN111190745A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN107003713A (zh) | 用于电力管理的逻辑分区环境的事件驱动重新优化 | |
CN110442610A (zh) | 负载均衡的方法、装置、计算设备以及介质 | |
CN109726005A (zh) | 用于管理资源的方法、服务器系统和计算机程序产品 | |
CN102520887A (zh) | 一种应用于云计算的存储空间配置与管理方法 | |
KR20110109608A (ko) | 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법 | |
CN108694083B (zh) | 一种服务器的数据处理方法和装置 | |
KR101896497B1 (ko) | 성능 제어 방법 및 이를 위한 장치 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
US8472455B2 (en) | System and method for traversing a treelet-composed hierarchical structure |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181113 |