一种容器云平台GPU资源调度方法、装置及应用与流程


一种容器云平台gpu资源调度方法、装置及应用
技术领域
1.本技术涉及资源调度技术领域,特别是涉及一种容器云平台gpu资源调度方法、装置及应用。


背景技术:



2.近年来随着云计算技术与容器相关技术的发展,doker和kubernetes技术已经成为众多企业应用交付的标准,在原生的kubernetes容器云平台中,算法应用主要用gpu显存来运行,nvidia官方提供了相应的gpu容器调度能力,但是通常都是将一个gpu卡分配给一个容器,无法支持复杂资源的分配。
3.由于navidia关于gpu内核目前大部分处于未开源的状态,对于gpu资源共享的方式往往是通过cuda本地劫持来实现的,cuda本地劫持通过调用cuda api,进而调用gpu硬件进行并行计算,libcuda.so是用户态下最终会被调用的driver api库,它的接口公开但是实现细节闭源,通过实现一个例如libvendot-cuda.so的动态库劫持了应用程序对cuda driver api的调用,并且把调用转发给真实的gpu原厂的libcuda.so,在转发过程中,绝大部分的api可以直接透传,而通过对少量api进行流控和修改,做到将不同的容器绑定到同一张gpu卡上,并进行相应的显存控制。综上所述,上述方案基本都是在保留官方功能的基础上,通过device-plugin插件对业务容器内注入vgpu配置参数,实现对gpu的显存和计算单元进行限制的目的,从而在一个物理gpu上模拟出多张小的vgpu卡,而且此类本地劫持cuda方案的左、中、右三层处在同一个容器内部,而且访问权限一致,由于处在同一容器,用户完全有可能绕过中间的限制,去直接触达原生cuda,存在被隐秘信道攻坚、侧信道攻击和内存溢出攻击的风险,同时导致容器与gpu、nvidia插件、服务器绑定,失去了容器自动迁移,故障自愈的优越性。
4.而在kubernetes集中,采用扩展调度器(scheduler)对这些切分后的vgpu进行调度,使不同的容器可以共享同一张物理gpu,提高gpu的利用率。
5.综上所述,目前现有技术实现gpu资源调度存在以下问题:1.算法容器与服务器高度绑定,仅支持单机虚拟化gpu卡,失去了容器自动迁移,故障自愈的优越性;2.存在安全问题,gpu、cuda驱动、容器在同一层,存在隐秘信道攻击、侧信道攻击和内存溢出攻击的风险。


技术实现要素:



6.本技术实施例提供了一种容器云平台gpu资源调度方法、装置及应用,可以对容器云平台中的gpu资源进行合理的调度,且安全性大大提高。
7.第一方面,本技术实施例提供了一种容器云平台gpu资源调度方法,所述方法包括:
8.构建容器云平台,所述容器云平台包括信息互通的gpu控制中心、gpu客户端、gpu服务端和若干个工作服务器,所述gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割,得到gpu资源列表信息,所述gpu资源列表信息存储在容
器云平台中,所述gpu客户端以gpu客户端组件的形式挂载在每一工作服务器上;
9.所述gpu控制中心获取的用户的资源调度请求,基于所述gpu资源列表信息生成调度列表,并将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中,gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应,所述容器云平台根据所述回应创建一个容器,并在所述容器中部署gpu代理组件来管理每一工作服务器的gpu资源,所述gpu代理组件与每一所述gpu客户端组件连接,所述gpu服务端根据所述调度列表,生成与所述工作服务器一一对应的gpu计算容器,每一所述gpu计算容器中存有对应工作服务器所需的gpu资源,所述gpu客户端组件与所述gpu服务端进行连接并对每一所述gpu计算容器中的资源进行调用。
10.第二方面,本技术实施例提供了一种容器云平台,所述容器云平台包括gpu控制中心、gpu客户端、gpu服务端和若干工作服务器,所述容器云平台用于执行第一方面所述的一种容器云平台gpu资源调度方法。
11.第三方面,本技术实施例提供了一种容器云平台gpu资源调度装置,包括:
12.构建模块:构建容器云平台,所述容器云平台包括信息互通的gpu控制中心、gpu客户端、gpu服务端和若干个工作服务器,所述gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割,得到gpu资源列表信息,所述gpu资源列表信息存储在容器云平台中,所述gpu客户端以gpu客户端组件的形式挂载在每一工作服务器上;
13.调度模块:所述gpu控制中心获取的用户的资源调度请求,基于所述gpu资源列表信息生成调度列表,并将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中,gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应,所述容器云平台根据所述回应创建一个容器,并在所述容器中部署gpu代理组件来管理每一工作服务器的gpu资源,所述gpu代理组件与每一所述gpu客户端组件连接,所述gpu服务端根据所述调度列表,生成与所述工作服务器一一对应的gpu计算容器,每一所述gpu计算容器中存有对应工作服务器所需的gpu资源,所述gpu客户端组件与所述gpu服务端进行连接并对每一所述gpu计算容器中的资源进行调用。
14.第四方面,本技术实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行一种容器云平台gpu资源调度方法。
15.第五方面,本技术实施例提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括一种容器云平台gpu资源调度方法。
16.本发明的主要贡献和创新点如下:
17.本技术实施例采用c/s架构,所述工作服务器通过所述gpu客户端组件与所述gpu服务端进行通信,在整个软件栈中,所述gpu客户端组件在cuda driver这个层面上截获了所有的cuda服务访问,将这些服务访问和数据通过网络传递给所述gpu服务端,所述gpu服务端把所述服务访问交给gpu进行处理,实现了在gpu上进行计算与内存资源协同隔离。
18.在所述容器云平台中存在gpu控制中心,gpu控制中心与所述gpu服务端保持心跳连接,并全方位的对所述gpu客户端进行监控,发现其危险行为,做到gpu资源调度任务的安全调度,对于每个所述工作服务器,一方面做到了进程隔离,另一方面在所述gpu客户端调
用gpu资源的时候,做到了sm隔离,根据每个所述工作服务器的权限提供伴生信息,确认获取的gpu资源只能获得其占用sm上的资源利用数据,做到了gpu伴生信息脱敏,相较于现有技术,本方案通过对物理机中所有的gpu资源进行两个资源维度的虚拟切割,突破了对本地物理机上的gpu进行虚拟切割的限制,并将其转变为对于整个数据中心范围的gpu资源调用,增强了gpu算法容器的故障自愈能力,并将所述gpu客户端组件与所述gpu服务端进行资源列表请求的绑定,并通过监测代理组件对gpu行为分析安全调度。
19.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。
附图说明
20.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
21.图1是根据本技术实施例的一种容器云平台gpu资源调度方法的流程图;
22.图2是根据本技术实施例的一种容器云平台中gpu控制中心、gpu客户端和gpu服务端的交互示意图;
23.图3是根据本技术实施例的一种容器云平台gpu资源调度装置的结构框图;
24.图4是根据本技术实施例的电子装置的硬件结构示意图。
具体实施方式
25.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
26.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
27.为了便于理解本方案,在此对实施例中出现的一些技术名词加以解释:
28.cuda(compute unified device architecture):是显卡厂商nvidia推出的运算平台。cuda
tm
是一种由nvidia推出的通用并行计算架构,该架构使gpu能够解决复杂的计算问题。它包含了cuda指令集架构(isa)以及gpu内部的并行计算引擎。开发人员可以使用c语言来为cuda
tm
架构编写程序,所编写出的程序可以在支持cuda
tm
的处理器上以超高性能运行。
29.prometheus:prometheus是一个开源的系统监控和报警系统,在kubernetes容器管理系统中,通常会使用prometheus进行监控,同时prometheus也支持多种exporter采集数据,还支持pushgateway进行数据上报,prometheus的性能足够支撑上万台规模的集。
30.metric:metric提供了一个强大的工具包,用于衡量生产环境中关键组件的行为,
让我们可以对服务中的一些行为进行监控和统计。
31.etcd:为kubernetes中的存储集。
32.response:response是web容器在用户每次请求服务端的时候,创建的一对容器对象,response容器是服务端返还给客户端的一个响应内容对象容器。
33.sidecar:sidecar是将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装,此模式还允许应用程序由异构组件和技术实现。
34.agent:agent是在客户端上部署一个agent进程,客户端与服务端通过这个agent进程进行代理,其中agent与客户端通常在同一主机,可直接通过licalhost进行访问。
35.sm:sm单元,全称streaming multiprocessors,是gpu资源的一种,其中包含了多个sp(streaming processor),即流处理器,每个sp可以跑一个线程,在一个sm单元中的多个sp可以共享上下文。
36.隐秘信道攻击:木马程序与间谍程序首先在gpu上实现同驻,随后基于gpu物理资源的争用实现了间谍程序与木马程序的信息传输。
37.侧信道攻击:攻击者可以通过资源争用方式或非资源争用方式不断访问性能技术函数,获得gpu资源利用量,构建侧信道恢复内核中的有价值的信息。
38.内存溢出攻击,攻击者绕过中间的限制,去直接触达原生代码,进而霸占整个物理gpu,引发内存溢出。
39.实施例一
40.本技术实施例提供了一种容器云平台gpu资源调度方法,可以对本地物理机上的gpu进行虚拟切割的限制,从而调用整个数据中心的gpu资源,并降低了容器云平台被攻击的风险,具体地,参考图1,所述方法包括:
41.构建容器云平台,所述容器云平台包括信息互通的gpu控制中心、gpu客户端、gpu服务端和若干个工作服务器,所述gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割得到gpu资源列表,所述gpu资源列表存储在容器云平台中,所述gpu客户端以gpu客户端组件的形式挂载在每一工作服务器上;
42.所述gpu控制中心获取的用户的资源调度请求,基于所述gpu资源列表生成调度列表,并将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中,gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应,所述容器云平台根据所述回应创建一个容器,并在所述容器中部署gpu代理组件来管理每一工作服务器的gpu资源,所述gpu代理组件与每一所述gpu客户端组件连接,所述gpu服务端根据所述调度列表,生成与所述工作服务器一一对应的gpu计算容器,每一所述gpu计算容器中存有对应工作服务器所需的gpu资源,所述gpu客户端组件与所述gpu服务端进行连接并对每一所述gpu计算容器中的资源进行调用。
43.在一些具体实施例中,本技术所构建的容器云平台以kubernetes为基础构建,除本技术实施例提到的功能以及组件外,具有kubernetes的所有常规功能和组件。
44.在一些实施例中,所述gpu控制中心、gpu客户端和gpu服务端的交互如图2所示,所述gpu控制中心包括控制中心调度模块、控制中心监控模块和控制中心鉴权模块;所述gpu客户端包括客户端鉴权模块和客户端容器管理模块;所述gpu服务端包括服务端鉴权模块、服务端gpu管理模块和服务端资源列表模块。
45.具体的,所述gpu控制中心的控制中心调度模块负责处理gpu资源的调度请求,在进行调度时基于树状拓扑结构对所述gpu资源来自容器云平台的etcd集的信息进行调度,所述树状拓扑结构的根节点是一个物理机,叶子节点为gpu卡,所述根节点和多个叶子节点组成一个拓扑集。所述gpu控制中心的控制中心监控模块负责监控gpu卡的信息,并开放接口以供prometheus进行监测结果的拉取,同时对收集到的metric信息进行风险分析;所述gpu控制中心的控制中心鉴权模块负责与所述gpu客户端和gpu服务端进行通信,对gpu客户端分发公钥,并对风险容器进行隔离判断。
46.具体的,所述gpu客户端的客户端鉴权模块负责与所述gpu控制中心和gpu服务端进行通信以及与所述gpu服务端进行连接,并接收所述控制中心鉴权模块分发的公钥;所述gpu客户端的客户端容器管理模块负责拦截所述容器云平台中cuda库中的内存和计算相关的api,转而通过gpu客户端与gpu服务端进行远程调度,并对调度内容进行分析。
47.具体的,所述gpu服务端的服务端鉴权模块负责与所述gpu控制中心和gpu客户端进行通信以及与所述gpu客户端进行连接;所述gpu管理模块负责将物理机中所有的gpu资源进行两个资源维度的虚拟切割,并可用于启动gpu代理组件和gpu计算容器;所述资源列表模块向每一工作服务器上的控制组件发送注册请求,在每一控制组件中进行注册,注册成功后每一所述控制组件以列表形式发送其对应工作服务器的资源请求,所述服务端资源列表模块根据所述资源请求将gpu资源列表返回给所述容器云平台。
48.在一些实施例中,在“gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割”步骤中,获取物理机中gpu卡的数量和每张gpu卡的资源量,将每一gpu卡虚拟切割为多个显存资源和多个计算资源两个资源维度。
49.示例性的,将256m作为一个显存资源对每张gpu卡进行划分,根据每张gpu卡的显存大小不同可以划分为不同数量的显存资源,每一显存资源对应自身所属的gpu卡;将每张gpu卡划分为100个计算资源,则每一计算资源拥有百分之一的gpu使用率,每一计算资源对应自身所属的gpu卡。
50.具体的,使用gpu品牌的对应官方插件查询到物理机中gpu卡的数量和每张gpu卡的资源量,将每张gpu卡虚拟切割后的信息归纳整理为gpu资源列表返回给容器云平台。
51.在一些具体实施例中,所述gpu资源列表以树状拓扑图的形式存储在所述容器云平台中,所述树状拓扑图的根节点为一个物理机,叶子节点为gpu卡,所述一个物理机和所述多张gpu卡组成拓扑集注册在所述容器云平台中。
52.具体的,对每一gpu卡进行虚拟切割后,可以根据虚拟切割的维度资源分割为多个虚拟gpu卡,当gpu资源被调用时,以虚拟gpu卡的形式进行调用来防止隐秘信道攻击、侧信道攻击。
53.在一些实施例中,“所述gpu资源列表存储在容器云平台中”步骤包括,所述gpu服务端先在容器云平台中进行注册,注册成功后所述容器云平台向所述gpu服务端发送资源列表请求,所述gpu服务端收到资源列表请求后将gpu资源列表返回给所述容器云平台,所述gpu资源列表以外部资源的形式显示在容器云平台的可分配资源中,并将所述gpu资源列表存储在容器云平台中。
54.具体的,所述容器云平台的注册接口、资源存储接口和显示接口由容器云平台自身提供。
55.具体的,所述容器云平台中每一工作服务器都有一控制组件,每一所述控制组件将对应工作服务器的资源请求以列表形式发送给所述gpu服务端,所述gpu服务端根据资源列表请求将gpu资源整理成所述gpu资源列表。
56.示例性的,以kubenetes(k8s)为例,gpu服务端首先会向k8s中每一工作服务器的kubelet发起注册请求,在kubelet中进行注册,之后kubelet会向所述gpu服务端以列表的形式发送资源请求,所述gpu服务端根据所述资源列表请求将gpu资源列表返回给所述容器云平台。
57.示例性的,所述gpu资源列表存储在所述容器云平台的etcd集中进行存储,所述容器云平台的每个工作服务器资源量使用所述gpu资源列表的格式进行显示,也就是说,每一工作服务器显示自身使用gpu资源总量信息,已使用的gpu卡数,每一gpu卡对应的显存资源和计算资源进行列表格式的显示。
58.在一些实施例中,所述资源调度请求的类型为独享型或共享性,根据不同的请求类型生成不同的调度方式,根据所述调度方式得到调度信息,将所述调度信息、需要进行资源调度的目标工作服务器和其配置文件、gpu服务端进行组合,生成调度列表。
59.进一步的,当调度请求的类型为独享型时存在以下调度方式:
60.1)若请求的条件为一张gpu卡,但请求的资源量大于所述gpu资源列表中最大单张gpu卡的可用资源时,显示调度失败;
61.2)若请求的条件为多张gpu卡,且所述gpu资源列表中存在大于请求资源量的单张cpu卡的可用资源时,获取所述gpu资源列表,从资源量最小的单张gpu卡开始对所述gpu资源列表进行遍历,并结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,当遍历到合适的单张gpu卡时,将该gpu卡虚拟为多个不同的gpu卡与gpu客户端进行匹配,提供给目标工作服务器进行使用,且将该gpu卡以及虚拟后的多张gpu卡标记为独享模式,其中的剩余gpu资源不再进行分配。为了降低网络影响,在进行匹配时,优先选择所述目标工作服务器存在gpu资源的工作服务器上,因为一些工作服务器中仅存在cpu资源,在进行调用gpu资源时,需要通过交换机等网络设备,而在对存在gpu资源的工作服务器上进行调用时则不需要经过交换机等网络设备;
62.3)若请求的条件为多张gpu卡,且所述gpu资源列表中不存在大于请求资源量的单张gpu卡的可用资源时,需要多张不同的gpu卡协同提供,获取所述gpu资源列表,按照单叶子节点数量最接近的进行遍历,得到所有满足条件的组合列表,将所述组合列表结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,得到匹配结果,将所述匹配结果中的多张gpu卡标记为独享模式,其中的剩余gpu资源不再进行分配;
63.4)若请求的条件为单张cpu卡,所述gpu资源列表中存在大于请求资源量的单张gpu卡的可用资源时,获取所述gpu资源列表,按照单叶子节点数量最少的原则进行遍历,得到所有满足条件的组合列表,将所述组合列表结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,得到匹配结果,将所述匹配结果中的单张gpu卡标记为独享模式,其中的剩余gpu资源不再进行分配。
64.进一步的,当调度请求的类型为共享型时,以树状拓扑图的形式生成一个共享资源列表,对所述gpu资源列表进行遍历,将未提供gpu资源的gpu卡和共享标记下的虚拟gpu卡放入所述共享资源列表中,共享型的调度存在以下调度方式:
65.1)若请求的条件为单张gpu卡,但请求的资源量大于所述共享资源列表中最大单张gpu卡的可用资源时,显示调度失败;
66.2)若请求的条件为多张gpu卡,所述共享资源列表中存在大于请求资源量的单张gpu卡,则从剩余资源量最小的单张gpu卡开始对所述共享资源列表进行遍历,并结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,当遍历到合适的单张gpu卡时,将该gpu卡虚拟为多个不同的gpu卡与gpu客户端进行匹配,提供给目标工作服务器进行使用,且将该gpu卡以及虚拟后的多张gpu卡标记为共享模式,若有剩余资源再进行分配;
67.3)若请求的条件为多张gpu卡,所述共享资源列表中不存在大于请求资源量的单张gpu卡时,则需要多张gpu卡提供协助,获取所述共享资源列表,按照单叶子节点数量最接近的进行遍历,得到所有满足条件的组合列表,将所述组合列表结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,得到匹配结果,将所述匹配结果中的多张gpu卡标记为共享模式,其中的剩余gpu资源再进行分配;
68.4)若请求的条件为单张cpu卡,所述共享资源列表中存在大于请求资源量的单张gpu卡的可用资源时,获取所述共享资源列表,按照单叶子节点数量最少的原则进行遍历,得到所有满足条件的组合列表,将所述组合列表结合所述目标工作服务器的网络拓扑和本身的资源列表请求对gpu客户端进行匹配,得到匹配结果,将所述匹配结果中的单张gpu卡标记为共享模式,其中的剩余gpu资源再进行分配。
69.具体的,通过对调度请求的判断,和对不合理的调度请求进行拒绝,防止了对gpu资源的过渡调用,减少出现内存溢出的可能性。
70.在一些实施例中,在“gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应”步骤中,所述gpu客户端组件收到调度列表后,创建一个目录,用来保存所述对应工作服务器的配置信息、请求、及操作日志,且所述gpu客户端根据所述调度列表虚拟出gpu资源,并以response的形式向所述容器云平台发起回应。
71.具体的,由所述gpu客户端创建的目录以对应所述工作服务器的名称命名,所述gpu客户端根据所述调度列表中的配置信息对所述工作服务器进行配置。
72.在一些实施例中,“将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中”步骤包括,所述gpu客户端组件和所述gpu服务端收到调度列表后进行心跳测试,若心跳测试失败,重新生成调度列表,若心跳测试成功保持连接状态,则进行gpu资源调度;所述gpu服务端收到调度列表后与当前gpu资源列表进行比较,若资源不符,则返回失败请求,重新生成调度列表,若所述当前gpu资源列表与所述调度列表资源相符,则进行gpu资源调度
73.具体的,所述gpu客户端根据所述调度列表与gpu服务端进行连接,并对所述gpu客户端与所述gpu服务端进行心跳测试,若心跳测试失败,则重新对该工作服务器进行调度,若心跳测试成功,则代表所述gpu客户端与所述gpu服务端正常连接。对所述gpu客户端与所述gpu服务端进行心跳测试的目的是为了保证所述gpu客户端与所述gpu服务端之间的连接有效。
74.进一步的,由于所述容器云平台的资源调度为异步操作,存在可用资源列表更新不及时的可能,所以所述gpu服务端将所述调度列表与当前gpu资源量进行比较,若出现资
源量不符的情况,则返回失败请求,重新进行调度。
75.在一些实施例中,所述gpu代理组件在第一次加载时在每一所述gpu客户端中进行注册,并与所述gpu客户端时刻保持连接。
76.具体的,为了保证每一工作服务器的存活,所述gpu代理组件与每一所述gpu客户端保持心跳连接。
77.示例性的,所述容器云平台根据gpu客户端的返回形式response创建并初始化一个容器,并以sidecar旁挂的形式启动一个gpu代理组件(vgpuagent),并运行在一个pod中,所述gpu代理组件用来管理gpu资源。
78.在一些实施例中,在所述gpu服务端上为每一工作服务器部署监测代理组件和配置文件,所述监测代理组件以一定的时间频率对所述容器云平台发送监测信息,所述容器云平台通过监测信息对所述工作服务器进行监测,检测到所述工作服务器越权行为时,由对应的gpu客户端对工作服务器进行隔离,所述配置文件中存有所述工作服务器的命名空间信息、容器信息、gpu资源信息;所述gpu计算容器根据所述调度列表对不同的工作服务器所需要的gpu资源做虚拟切割,并且通过调用内核模块进行sm隔离,以防止上下文信息的泄露。
79.具体的,所述gpu服务器根据预调度列表对每一所述工作服务器生成监测代理组件,所述检测代理组件以sidecar的方式挂载到所述工作服务器上;所述配置文件为yaml格式。
80.具体的,所述gpu服务器根据所述工作服务器的配置文件生成公钥、私钥,将公钥上传到所述gpu控制中心中,由所述gpu控制中心分发对应的公钥到每一所述gpu客户端组件上,以便gpu客户端组件对gpu服务器进行访问,当所述gpu客户端组件首次对gpu服务器进行访问时,对所述gpu客户端组件进行验证,验证通过后,将所述gpu客户端组件与对应的监测代理组件和gpu容器资源进行绑定,绑定后,所述工作服务器需要调用gpu资源时,将通过gpu客户端组件进行劫持请求后对所述gpu计算容器中的资源进行调用。
81.具体的,所述gpu计算容器通过调用内核模块进行sm的隔离,其根据权限提供伴生信息,确保所述工作服务器获取的虚拟gpu资源只能获得其占用sm上的资源利用数据,做到了gpu伴生信息脱敏。
82.具体的,所述监测代理组件伴随着对应的工作服务器进行启动,所述监测代理组件每隔一定时间向所述容器云平台发送metric信息,所述容器云平台根据metric信息检查所述工作服务器是否具有越权行为或是否存在风险点,同时,所述容器云平台收到metric信息后会开发相关接口,以便prometheus将metric信息拉取显示在前端界面,若所述容器云平台监测到越权行为或风险点,则通知所述工作服务器对应的gpu客户端对该工作服务器进行隔离,目的是防止隐秘信道攻击和侧信道攻击。
83.在一些实施例中,每一工作服务器中的gpu客户端组件会周期性的检查工作服务器是否存活,若所述工作服务器已经销毁,则向所述容器云平台发送通知,所述容器云平台收到相关通知后,确认所述工作服务器的健康状态,若确认所述工作服务器已经销毁,通知所述gpu服务端释放所述工作服务器的gpu资源。
84.实施例二
85.另外,本方案还提供一种容器云平台,所述容器云平台包括gpu控制中心、gpu客户
端、gpu服务端和若干个工作服务器,用于执行实施例一所述的一种容器云平台gpu资源调度方法。
86.实施例三
87.基于相同的构思,参考图3,本技术还提出了一种容器云平台gpu资源调度方法装置,包括:
88.构建模块:构建容器云平台,所述容器云平台包括信息互通的gpu控制中心、gpu客户端、gpu服务端和若干个工作服务器,所述gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割,得到gpu资源列表信息,所述gpu资源列表信息存储在容器云平台中,所述gpu客户端以gpu客户端组件的形式挂载在每一工作服务器上;
89.调度模块:所述gpu控制中心获取的用户的资源调度请求,基于所述gpu资源列表信息生成调度列表,并将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中,gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应,所述容器云平台根据所述回应创建一个容器,并在所述容器中部署gpu代理组件来管理每一工作服务器的gpu资源,所述gpu代理组件与每一所述gpu客户端组件连接,所述gpu服务端根据所述调度列表,生成与所述工作服务器一一对应的gpu计算容器,每一所述gpu计算容器中存有对应工作服务器所需的gpu资源,所述gpu客户端组件与所述gpu服务端进行连接并对每一所述gpu计算容器中的资源进行调用;
90.实施例四
91.本实施例还提供了一种电子装置,参考图4,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
92.具体地,上述处理器402可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
93.其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(non-volatile)存储器。在特定实施例中,存储器404包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器404(fastpagemodedynamicrand
omaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
94.存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
95.处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意一种容器云平台gpu资源调度方法。
96.可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
97.传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(network interface controller,简称为nic),其可通过与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
98.输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是资源调度请求、gpu资源列表等,输出的信息可以是调度列表等。
99.可选地,在本实施例中,上述处理器402可以被设置为通过计算机程序执行以下步骤:
100.s101、构建容器云平台,所述容器云平台包括信息互通的gpu控制中心、gpu客户端、gpu服务端和若干个工作服务器,所述gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割,得到gpu资源列表信息,所述gpu资源列表信息存储在容器云平台中,所述gpu客户端以gpu客户端组件的形式挂载在每一工作服务器上;
101.s102、所述gpu控制中心获取的用户的资源调度请求,基于所述gpu资源列表信息生成调度列表,并将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中,gpu客户端组件根据所述调度列表进行配置并对所述容器云平台发起回应,所述容器云平台根据所述回应创建一个容器,并在所述容器中部署gpu代理组件来管理每一工作服务器的gpu资源,所述gpu代理组件与每一所述gpu客户端组件连接,所述gpu服务端根据所述调度列表,生成与所述工作服务器一一对应的gpu计算容器,每一所述gpu计算容器中存有对应工作服务器所需的gpu资源,所述gpu客户端组件与所述gpu服务端进行连接并对每一所述gpu计算容器中的资源进行调用。
102.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
103.通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本发明的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本发明不限于此。尽管本发明的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
104.本发明的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理
器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图4中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如dvd及其数据变体、cd等光学介质上。物理介质是非瞬态介质。
105.本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
106.以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。

技术特征:


1.一种容器云平台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计算容器中的资源进行调用。2.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,在“gpu服务端获取物理机中所有的gpu资源,并对每一gpu资源进行两个资源维度的虚拟切割”步骤中,获取物理机中gpu卡的数量和每张gpu卡的资源量,将每一gpu卡虚拟切割为多个显存资源和多个计算资源两个资源维度。3.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,“所述gpu资源列表存储在容器云平台中”步骤包括,所述gpu服务端先在容器云平台中进行注册,注册成功后所述容器云平台向所述gpu服务端发送资源列表请求,所述gpu服务端收到资源列表请求后将gpu资源列表返回给所述容器云平台,所述gpu资源列表以外部资源的形式显示在容器云平台的可分配资源中,并将所述gpu资源列表存储在容器云平台中。4.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,所述资源调度请求的类型为独享型或共享型,根据不同的请求类型生成不同的调度方式,根据所述调度方式得到调度信息,将所述调度信息、需要进行资源调度的目标工作服务器和其配置文件、gpu服务端进行组合,生成调度列表。5.根据权利要求4所述的一种容器云平台gpu资源调度方法,其特征在于,当调度请求为独享型时,对所述gpu资源列表中未提供gpu资源的gpu卡进行遍历。6.根据权利要求4所述的一种容器云平台gpu资源调度方法,其特征在于,当调度请求的类型为共享型时,以树状拓扑图的形式生成一个共享资源列表,对所述gpu资源列表进行遍历,将未提供gpu资源的gpu卡和共享标记下的虚拟gpu卡放入所述共享资源列表中。7.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,在“将所述调度列表发送到每一工作服务器上的gpu客户端组件和所述gpu服务端中”步骤包括,所述gpu客户端组件和所述gpu服务端收到调度列表后进行心跳测试,若心跳测试失败,重新生成调度列表,若心跳测试成功保持连接状态,则进行gpu资源调度;所述gpu服务端收到调度列表后与当前gpu资源列表进行比较,若资源不符,则返回失败请求,重新生成调度列表,若所述当前gpu资源列表与所述调度列表资源相符,则进行gpu资源调度。8.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,在所述gpu服务端上为每一工作服务器部署监测代理组件和配置文件,所述监测代理组件以一定的时间
频率对所述容器云平台发送监测信息,所述容器云平台通过监测信息对所述工作服务器进行监测,检测到所述工作服务器越权行为时,由对应的gpu客户端对工作服务器进行隔离,所述配置文件中存有所述工作服务器的命名空间信息、容器信息、gpu资源信息;所述gpu计算容器根据所述调度列表对不同的工作服务器所需要的gpu资源做虚拟切割,并且通过调用内核模块进行sm隔离。9.根据权利要求1所述的一种容器云平台gpu资源调度方法,其特征在于,每一工作服务器中的gpu客户端组件会周期性的检查工作服务器是否存活,若所述工作服务器已经销毁,则向所述容器云平台发送通知,所述容器云平台收到相关通知后,确认所述工作服务器的健康状态,若确认所述工作服务器已经销毁,通知所述gpu服务端释放所述工作服务器的gpu资源。10.一种容器云平台,所述容器云平台包括gpu控制中心、gpu客户端、gpu服务端和若干工作服务器,其特征在于,用于执行权利要求1-9任一所述的一种容器云平台gpu资源调度方法。11.一种容器云平台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计算容器中的资源进行调用。12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1-9任一所述的一种容器云平台gpu资源调度方法。13.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1-9任一项所述的一种容器云平台gpu资源调度方法。

技术总结


本申请提出了一种算法容器云平台GPU资源调度方法、装置及应用,包括以下步骤:构建一个容器云平台,使用GPU服务端对物理机中所有的GPU资源进行虚拟切割,得到GPU资源列表;当容器云平台收到资源调度请求后,生成调度列表,GPU客户端组件根据所述调度列表进行配置,配置完成后对所述容器云平台发起回应,所述容器云平台根据回应在单独的容器中部署GPU代理组件来管理每一工作服务器的GPU资源;在GPU服务端上为每一工作服务器部署监测代理组件对所述工作服务器进行监测,检测到所述工作服务器越权行为时,由对应的GPU客户端对工作服务器进行隔离。本方案可以基于整个物理机的GPU资源进行安全、统一的调度,避免了被攻击了风险。避免了被攻击了风险。避免了被攻击了风险。


技术研发人员:

毛云青 来佳飞 彭大蒙 田雨

受保护的技术使用者:

城云科技(中国)有限公司

技术研发日:

2022.09.16

技术公布日:

2022/12/9

本文发布于:2024-09-22 05:31:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/34428.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   资源   容器   客户端
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议