WO2018196462A1 - 资源调度装置、资源调度系统和资源调度方法 - Google Patents
资源调度装置、资源调度系统和资源调度方法 Download PDFInfo
- Publication number
- WO2018196462A1 WO2018196462A1 PCT/CN2018/074960 CN2018074960W WO2018196462A1 WO 2018196462 A1 WO2018196462 A1 WO 2018196462A1 CN 2018074960 W CN2018074960 W CN 2018074960W WO 2018196462 A1 WO2018196462 A1 WO 2018196462A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- gpu
- container
- gpus
- file
- node
- Prior art date
Links
Images
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
一种资源调度装置(1)、资源调度系统和资源调度方法。所述资源调度装置(1)包含在具有至少一个GPU的设备中,并且包括GPU适配模块(11)、GPU发现模块(12)和GPU挂载模块(13)。其中,GPU适配模块(11)被配置为检测所述设备中的GPU的数量及GPU的驱动文件,创建GPU调用文件,通知GPU发现模块(12);GPU发现模块(12)被配置为接收GPU适配模块(11)的通知,监听所述设备的GPU的使用信息,并向管理节点(10)上报所述设备的GPU的数量和使用信息;GPU挂载模块(13)被配置为接收创建容器请求,创建容器,选择所述设备的GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
Description
本发明涉及云计算资源管理及容器部署技术领域,尤其涉及一种资源调度装置、资源调度系统和资源调度方法。
云计算是一种资源共享的计算模式。图形处理器(Graphics Processing Unit,GPU)是高性能云计算系统中的一种特殊资源。在大数据和图像识别等领域,都需要使用GPU对数据进行分析和计算。特别是对于图像识别,GPU对数据的处理速度远高于CPU。
现有的云计算系统主要通过创建虚拟机挂载GPU来提供计算环境。然而,虚拟机相当于一个小型的机器,必须为其分配固定大小的CPU和内存等资源,如果虚拟机负载的计算任务较小则会造成资源的浪费,且虚拟机的创建时间非常长。
容器技术可以认为是一种操作系统级别的虚拟化,其相当于操作系统内的一个进程,并拥有独立的命令空间。通过采用容器技术,在保证为计算任务提供与操作系统同样的指令的同时,能够减少对系统资源的消耗。同样硬件配置的节点能够创建的容器数量可以是虚拟机的多倍,并且创建时间更短。但是,在目前使用容器的技术中,没有实现对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为本发明第一实施例的一种资源调度系统的结构示意图;
图3为本发明第一实施例的一种资源调度方法的流程示意图;
图4为本发明第二实施例的一种资源调度方法的流程示意图;
图5为本发明第二实施例的一种资源调度系统的结构示意图;
图6为本发明第三实施例的一种资源调度方法的流程示意图;
图7是本发明第三实施例的资源调度方法的集群GPU信息更新流程图;
图8是本发明第三实施例的资源调度方法的容器GPU挂载流程图。
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1所示,根据本发明的实施例的一种资源调度装置1,包括GPU适配模块11、GPU发现模块12和GPU挂载模块13,并且资源调度装置1被包含在具有至少一个GPU的设备中。GPU适配模块11被配置为检测所述设备中的GPU的数量(GPU数量)及GPU的驱动文件,为GPU创建GPU调用文件,将设备中的GPU的数量等信息通知GPU发现模块12。GPU发现模块12被配置为接收GPU适配模块11的通知,监听所述设备的GPU的使用信息,并向管理节点10上报所述设备的GPU数量和GPU使用信息;GPU 挂载模块13被配置为接收管理节点10的创建容器请求,基于该创建容器请求为所述设备创建容器,选择所述设备的GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
在一些实施方式中,容器是在用于所述设备的容器平台中创建的。在一些实施方式中,容器平台可由所述设备中的相关硬件和所存储的程序、指令实现。在一些实施方式中,资源调度装置1包括容器平台。
在一些实施方式中,所述GPU适配模块11还被配置为在容器平台中创建卷驱动插件。所述GPU挂载模块13在创建所述容器时,通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
在一些实施方式中,所述GPU适配模块11还被配置为在所述驱动文件中挑选用户态库文件,并存储到预设的目录下;所选择的GPU的驱动文件为所述用户态库文件。
值得说明的是,本公开所述的用户态库文件,指的是调用GPU所需的驱动文件。当多个GPU为同一类型时,其驱动文件可以相同,但每个GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
值得说明的是,上述预设的目录和系统目录是容器平台中的目录。
在一些实施方式中,所述GPU发现模块12还被配置为:向管理节点10上报所述设备(即,GPU发现模块12自身所属的设备)的GPU的规格信息。
在一些实施方式中,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
在一些实施方式中,所述GPU挂载模块13以下述方式选择所述设备的GPU中的至少一个:选择所述设备中使用率最小的N个GPU,所述N为计算任务需要的GPU数量,其中每个GPU的使用率包含在其对应的GPU使用信息中。
在一些实施方式中,所述GPU适配模块11还被配置为:对所述设备的GPU进行编号,以方便上层应用程序进行调用。
在一些实施方式中,所述GPU挂载模块13还被配置为:对容器中的调 用文件重新编号,以方便上层应用程序进行调用。
在一些实施方式中,所述GPU挂载模块13还被配置为:当容器中的计算任务运行结束时,自动销毁容器。
在一些实施方式中,当容器销毁后,GPU发现模块12向管理节点10上报所述设备的GPU的新的使用信息,管理节点10将新的使用信息更新进缓存,所述缓存用于保存各个设备的GPU的使用信息。
在一些实施方式中,具有至少一个GPU的所述设备为一个计算节点。所述计算节点和所述管理节点10均包含在一个云计算集群系统中。
如图2所示,本发明实施例还提供了一种资源调度系统,该资源调度系统包括一个管理节点10和若干个计算节点20。每个计算节点20被配置为:检测自身的GPU数量及GPU的驱动文件,为自身的GPU创建GPU调用文件,监听自身的GPU的使用信息,并向管理节点10上报自身的GPU数量和GPU使用信息;当接收到创建容器请求时,基于该创建容器请求创建容器,选择自身的GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到容器中。管理节点10被配置为:接收并存储各个计算节点20的GPU数量和GPU使用信息,当有计算任务时(例如,管理节点10接收到计算任务),根据计算任务需要的GPU数量,选择计算节点20,请求所选择的计算节点20创建容器。
在一些实施方式中,容器是在用于计算节点20的容器平台中创建的。在一些实施方式中,容器平台可由计算节点20中的相关硬件和所存储的程序、指令实现。在一些实施方式中,计算节点20包括该容器平台。
在一些实施方式中,所述计算节点20还被配置为在容器平台中创建卷驱动插件,并通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
在一些实施方式中,所述计算节点20还被配置为在所述驱动文件中挑选用户态库文件,并存储到预设的目录下。所选择的GPU的驱动文件可为所述用户态库文件。
值得说明的是,所述的用户态库文件,指的是调用GPU所需的驱动文 件。当多个GPU为同一类型时,其驱动文件可以相同,但每个GPU有各自不同的调用文件,每个调用文件均存储在系统目录下(如/dev),以方便上层应用程序对GPU进行调用。
值得说明的是,上述预设的目录和系统目录是容器平台中的目录。
在一些实施方式中,所述计算节点20还被配置为:向管理节点10上报自身GPU的规格信息。
在一些实施方式中,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
在一些实施方式中,所述管理节点10以下述方式选择计算节点20:所选择的计算节点20的GPU数量大于或等于计算任务需要的GPU数量,且所选择的计算节点20的GPU使用率最小。
在一些实施方式中,GPU使用率是管理节点根据计算节点20的GPU使用信息而确定的。具体地,GPU使用信息包括GPU的使用率(GPU占用率),通过计算一个计算节点20的所有GPU的使用率的平均值,得到该计算节点的GPU使用率。
在一些实施方式中,所述计算节点20以下述方式选择自身的GPU中的至少一个:选择自身使用率最小的N个GPU,所述N为计算任务需要的GPU数量。
在一些实施方式中,所述计算节点20还被配置为:对自身的GPU进行编号,以方便上层应用程序进行调用。
在一些实施方式中,所述计算节点20还被配置为:对容器中的调用文件重新编号,以方便上层应用程序进行调用。
在一些实施方式中,所述计算节点20还被配置为:当容器中的计算任务运行结束时,自动销毁容器。
在一些实施方式中,当容器销毁后,计算节点20向管理节点10上报自身的GPU的新的使用信息,管理节点10将新的使用信息更新进缓存,所述缓存用于保存各个计算节点20的GPU的使用信息。
如图3所示,本发明实施例还提供了一种资源调度方法,该方法包括如 下步骤:
步骤301:计算节点检测自身的GPU数量及GPU的驱动文件,创建GPU调用文件。
步骤302:计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU数量和GPU使用信息。
步骤303:当接收到管理节点的创建容器请求时,计算节点基于该创建容器请求创建容器,选择自身的GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
在一些实施方式中,所述步骤301还包括:计算节点在容器平台中创建卷驱动插件。
在步骤303中,可通过卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
在一些实施方式中,所述步骤301还包括:计算节点在所述GPU的驱动文件中挑选用户态库文件,并存储到预设的目录下。并且在一些实施方式中,在所述步骤303中,所选择的GPU的驱动文件为用户态库文件。
在一些实施方式中,所述步骤302还包括:计算节点向管理节点上报自身的GPU的规格信息。在一些实施方式中,所述GPU的规格信息包括GPU的显存、运算频率、驱动版本等信息。
在一些实施方式中,在所述步骤303中,计算节点以下述方式选择自身的GPU中的至少一个:选择自身使用率最小的N个GPU,所述N为计算任务需要的GPU数量。
在一些实施方式中,所述步骤301还包括,计算节点对自身的GPU进行编号,以方便上层应用程序进行调用。
在一些实施方式中,所述步骤303还包括,计算节点对容器中的调用文件重新编号,以方便上层应用程序进行调用。
在一些实施方式中,所述步骤303还包括,当容器中的计算任务运行结束时,计算节点自动销毁容器。
在一些实施方式中,当容器销毁后,计算节点向管理节点上报自身的 GPU的新的使用信息,管理节点将新的使用信息更新进缓存,所述缓存用于保存各个计算节点的GPU的使用信息。
上述实施例中的资源调度装置、资源调度系统和资源调度系统基于容器化技术,通过各个节点自身检测、监听、选择和挂载GPU,实现了对云集群中的GPU资源自动发现和调度,并且通过在容器中挂载GPU为应用程序提供GPU运行环境,从而显著地减少了计算任务的启动时间和资源占用量,提高了GPU使用效率,同时避免了集群中GPU资源使用不均的情况。
如图4所示,本发明的另一实施例提供了一种资源调度方法,该资源调度方法包括如下步骤:
步骤401:每个计算节点检测自身的GPU数量及GPU的驱动文件,创建GPU调用文件。
步骤402:每个计算节点监听自身的GPU的使用信息,并向管理节点上报自身的GPU数量和GPU使用信息。
步骤403:管理节点接收并存储各个计算节点的GPU数量和GPU使用信息,当有计算任务时,根据计算任务需要的GPU数量,选择计算节点,请求所选择的计算节点创建容器。
步骤404:所选择的计算节点接收管理节点的创建容器请求,基于创建容器请求创建容器,选择自身的GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到容器中。
在一些实施方式中,在步骤401中,管理节点以下述方式选择计算节点:所选择的计算节点拥有的GPU数量大于或等于所述计算任务需要的GPU数量,且所选择的计算节点的GPU使用率最小。
在一些实施方式中,所述步骤401还包括,每个计算节点在容器平台中创建卷驱动插件。
在步骤404中,可通过卷驱动插件将所选择的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适配模块11、GPU发现模块12和GPU挂载模块13,所述管理节点还包括容器管理模块14(当管 理节点不作为计算节点使用时,可以只包括容器管理模块14,不包括GPU适配模块、GPU发现模块和GPU挂载模块)。
GPU适配模块11被配置为检测自身所属计算节点的GPU数量及GPU的驱动文件,创建GPU调用文件,将所述计算节点的GPU数量发送至GPU发现模块12。
GPU发现模块12被配置为根据接收到的GPU数量,监听自身所属计算节点的GPU的使用信息,并向容器管理模块14上报所述计算节点的GPU数量和GPU使用信息。
容器管理模块14被配置为接收并存储各个计算节点的GPU数量和GPU使用信息,当有计算任务时,根据计算任务需要的GPU数量,选择计算节点,请求所选择的计算节点创建容器。
GPU挂载模块13被配置为接收容器管理模块14的创建容器请求,基于创建容器请求创建容器,选择自身所属计算节点的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使用效率。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
例如,根据本发明的一个实施例,提供一种可读存储介质,所述可读存储介质用于计算节点,在所述可读存储介质中存储有资源调度程序,所述资源调度程序可被执行以实施下述步骤:检测所述计算节点的GPU的数量及所述GPU的驱动文件,为所述GPU创建GPU调用文件,监听所述GPU的使用信息,并向管理节点上报所述GPU的所述数量和所述使用信息;以及当接收到所述管理节点的创建容器请求时,基于所述创建容器请求为所述计算节点创建容器,选择所述计算节点的所述GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
根据本发明的另一个实施例,提供一种可读存储介质,所述可读存储介质用于管理节点,在所述可读存储介质中存储有资源调度程序,所述资源调度程序可被执行以实施下述步骤:接收并存储各个计算节点上报的所述计算节点各自的GPU的数量和所述GPU的使用信息;以及,当有计算任务时,根据所述计算任务需要的GPU的数量,从所述多个计算节点中选择计算节点,请求所选择的计算节点创建容器,以便所选择的计算节点基于所述请求 创建容器,选择自身的所述GPU中的至少一个,并将所选择的GPU的驱动文件和为所选择的GPU创建的GPU调用文件挂载到所述容器中。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
- 一种资源调度装置,包含在具有至少一个GPU的设备中,所述资源调度装置包括GPU适配模块、GPU发现模块和GPU挂载模块,其中,所述GPU适配模块被配置为检测所述设备中的所述GPU的数量及所述GPU的驱动文件,为所述GPU创建GPU调用文件,将所述GPU的数量通知所述GPU发现模块;所述GPU发现模块被配置为接收所述GPU适配模块的所述通知,监听所述设备的所述GPU的使用信息,并向管理节点上报所述设备中的所述GPU的所述数量和所述使用信息;所述GPU挂载模块被配置为接收创建容器请求,基于所述创建容器请求为所述设备创建容器,选择所述设备的所述GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
- 根据权利要求1所述的资源调度装置,其中,所述GPU适配模块还被配置为在容器平台中创建卷驱动插件;并且所述GPU挂载模块通过所述卷驱动插件将所选择的GPU的驱动文件挂载到所述容器中。
- 根据权利要求1所述的资源调度装置,其中,所述GPU适配模块还被配置为在所述驱动文件中挑选用户态库文件,所述用户态库文件为调用GPU所需的驱动文件,并且所选择的GPU的驱动文件为所述用户态库文件。
- 一种资源调度系统,包括一个管理节点和多个计算节点,其中,每个计算节点被配置为:检测自身的GPU的数量及所述GPU的驱动文件,为所述GPU创建GPU调用文件,监听所述GPU的使用信息,并向所述管理节点上报所述 GPU的所述数量和所述使用信息;并且当接收到创建容器请求时,基于所述创建容器请求为所述计算节点创建容器,选择所述GPU中的至少一个,并将所选择的GPU的所述驱动文件和所述调用文件挂载到所述容器中;并且所述管理节点被配置为:接收并存储各个计算节点的所述GPU的所述数量和所述使用信息;并且当有计算任务时,根据所述计算任务需要的GPU的数量,从所述多个计算节点中选择计算节点,请求所选择的计算节点创建容器。
- 根据权利要求4所述的资源调度系统,其中,所述管理节点以下述方式选择计算节点:所选择的计算节点的GPU的数量大于或等于所述计算任务需要的GPU的数量,并且在GPU的数量大于或等于所述计算任务需要的GPU的数量的计算节点当中,所选择的计算节点的GPU使用率最小,其中,计算节点的GPU使用率是所述管理节点根据所述计算节点的所述GPU的所述使用信息而确定的。
- 一种资源调度方法,包括以下步骤:计算节点检测自身的GPU的数量及所述GPU的驱动文件,为所述GPU创建GPU调用文件,监听所述GPU的使用信息,并向管理节点上报所述GPU的所述数量和所述使用信息;以及当接收到所述管理节点的创建容器请求时,所述计算节点基于所述创建容器请求创建容器,选择自身的所述GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
- 根据权利要求6所述的资源调度方法,其中,在所述计算节点检测自身的GPU的数量及所述GPU的驱动文件后,所述方法还包括:所述计算节点在容器平台中创建卷驱动插件,并且其中,所述计算节点通过所述卷驱动插件将所选择的GPU的驱动文件挂载到 所述容器中。
- 根据权利要求6所述的资源调度方法,其中,在所述计算节点检测自身的GPU的数量及所述GPU的驱动文件后,所述方法还包括:所述计算节点在所述GPU的驱动文件中挑选用户态库文件,所述用户态库文件为调用GPU所需的驱动文件,并且其中,所选择的GPU的驱动文件为所述用户态库文件。
- 一种资源调度方法,包括:每个计算节点检测自身的GPU的数量及所述GPU的驱动文件,为所述GPU创建GPU调用文件,监听所述GPU的使用信息,并向管理节点上报所述GPU的所述数量和所述使用信息;所述管理节点接收并存储各个计算节点的所述GPU的所述数量和所述使用信息;当有计算任务时,所述管理节点根据所述计算任务需要的GPU的数量,选择计算节点,请求所选择的计算节点创建容器;以及所选择的计算节点接收所述管理节点的创建容器请求,基于所述创建容器请求创建容器,选择自身的所述GPU中的至少一个,并将所选择的GPU的驱动文件和调用文件挂载到所述容器中。
- 根据权利要求9所述的资源调度方法,其中,所述管理节点以下述方式选择计算节点:所选择的计算节点的GPU的数量大于或等于所述计算任务需要的GPU的数量,并且在GPU的数量大于或等于所述计算任务需要的GPU的数量的计算节点当中,所选择的计算节点的GPU使用率最小,其中,计算节点的GPU使用率是所述管理节点根据所述计算节点的所述GPU的所述使用信息而确定的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710283385.0 | 2017-04-26 | ||
CN201710283385.0A CN108804217A (zh) | 2017-04-26 | 2017-04-26 | 一种资源调度装置、资源调度系统和资源调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018196462A1 true WO2018196462A1 (zh) | 2018-11-01 |
Family
ID=63918794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2018/074960 WO2018196462A1 (zh) | 2017-04-26 | 2018-02-01 | 资源调度装置、资源调度系统和资源调度方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108804217A (zh) |
WO (1) | WO2018196462A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532098A (zh) * | 2019-08-30 | 2019-12-03 | 广东星舆科技有限公司 | 提供gpu服务的方法及系统 |
CN111736915A (zh) * | 2020-06-05 | 2020-10-02 | 浪潮电子信息产业股份有限公司 | 云主机实例硬件加速设备的管理方法、装置、设备及介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532064A (zh) * | 2019-08-27 | 2019-12-03 | 北京百度网讯科技有限公司 | 提供计算资源的方法、装置、设备和存储介质 |
CN111930473B (zh) * | 2020-09-25 | 2021-01-01 | 亮风台(上海)信息科技有限公司 | 在容器云上部署图像识别服务的方法与设备 |
CN116627661B (zh) * | 2023-07-24 | 2023-11-03 | 杭州谐云科技有限公司 | 算力资源调度的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761139A (zh) * | 2014-01-25 | 2014-04-30 | 湖南大学 | 一种基于动态库拦截的通用计算虚拟化实现方法 |
US20150347177A1 (en) * | 2014-05-30 | 2015-12-03 | Apple Inc. | Method and apparatus for inter process priority donation |
CN105138389A (zh) * | 2015-07-30 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 一种集群中虚拟设备的管理方法及系统 |
CN105677479A (zh) * | 2015-12-30 | 2016-06-15 | 北京奇艺世纪科技有限公司 | 并行运行gpu运算程序的实现方法及装置 |
CN106406977A (zh) * | 2016-08-26 | 2017-02-15 | 山东乾云启创信息科技股份有限公司 | 一种gpu虚拟化实现系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9973566B2 (en) * | 2013-11-17 | 2018-05-15 | Nimbix, Inc. | Dynamic creation and execution of containerized applications in cloud computing |
CN103631634B (zh) * | 2012-08-24 | 2017-07-25 | 中国电信股份有限公司 | 实现图形处理器虚拟化的方法与装置 |
-
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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761139A (zh) * | 2014-01-25 | 2014-04-30 | 湖南大学 | 一种基于动态库拦截的通用计算虚拟化实现方法 |
US20150347177A1 (en) * | 2014-05-30 | 2015-12-03 | Apple Inc. | Method and apparatus for inter process priority donation |
CN105138389A (zh) * | 2015-07-30 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 一种集群中虚拟设备的管理方法及系统 |
CN105677479A (zh) * | 2015-12-30 | 2016-06-15 | 北京奇艺世纪科技有限公司 | 并行运行gpu运算程序的实现方法及装置 |
CN106406977A (zh) * | 2016-08-26 | 2017-02-15 | 山东乾云启创信息科技股份有限公司 | 一种gpu虚拟化实现系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532098A (zh) * | 2019-08-30 | 2019-12-03 | 广东星舆科技有限公司 | 提供gpu服务的方法及系统 |
CN110532098B (zh) * | 2019-08-30 | 2022-03-08 | 广东星舆科技有限公司 | 提供gpu服务的方法及系统 |
CN111736915A (zh) * | 2020-06-05 | 2020-10-02 | 浪潮电子信息产业股份有限公司 | 云主机实例硬件加速设备的管理方法、装置、设备及介质 |
CN111736915B (zh) * | 2020-06-05 | 2022-07-05 | 浪潮电子信息产业股份有限公司 | 云主机实例硬件加速设备的管理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108804217A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018196462A1 (zh) | 资源调度装置、资源调度系统和资源调度方法 | |
US11226847B2 (en) | Implementing an application manifest in a node-specific manner using an intent-based orchestrator | |
US20200382579A1 (en) | Server computer management system for supporting highly available virtual desktops of multiple different tenants | |
US11231955B1 (en) | Dynamically reallocating memory in an on-demand code execution system | |
KR101906912B1 (ko) | 클라우드 기반 구축 서비스 | |
US9405572B2 (en) | Optimized resource allocation and management in a virtualized computing environment | |
CN106227582B (zh) | 弹性伸缩方法及系统 | |
US10769212B2 (en) | Extensible and elastic data management services engine external to a storage domain | |
US8239536B2 (en) | System for generic service management in a distributed and dynamic resource environment, providing constant service access to users | |
US20160205541A1 (en) | Apparatus For End-User Transparent Utilization of Computational, Storage, and Network Capacity of Mobile Devices, and Associated Methods | |
CN110109649B (zh) | 针对Web服务的容器控制方法、装置和容器系统 | |
US20130275968A1 (en) | Application management methods and systems | |
CN106817432B (zh) | 云计算环境下虚拟资源弹性伸展的方法,系统和设备 | |
EP3125468B1 (en) | Cloud application processing method and application deployment method and relevant apparatus and system | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
CN106790092B (zh) | 远程过程调用服务端控制系统及方法 | |
KR20130136449A (ko) | 데이터-센터 서비스의 제어된 자동 힐링 | |
CN110908774B (zh) | 一种资源调度方法、设备、系统及存储介质 | |
JP2017107274A (ja) | 仮想マシン増設方法、情報処理装置および仮想マシン増設システム | |
US20150046541A1 (en) | System and method for providing a messaging cluster with hybrid partitions | |
US11144359B1 (en) | Managing sandbox reuse in an on-demand code execution system | |
CN106911741B (zh) | 一种虚拟化网管文件下载负载均衡的方法及网管服务器 | |
CN114389955A (zh) | 嵌入式平台异构资源池化管理方法 | |
US20030167377A1 (en) | System and method for heterogeneous caching | |
CN105262796A (zh) | 一种云平台存储资源管理系统及其部署框架 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18791041 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18791041 Country of ref document: EP Kind code of ref document: A1 |