System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于gpu虚拟化,具体涉及一种gpu在k8s中的虚拟化系统及其方法。
技术介绍
1、gpu(图形处理单元),全称graphics processing unit,起初一种用于处理图像和图形的核心处理器。随着gpu的通用计算力能加强,它现在更多的被用于编解码、渲染和科学计算等并行计算场景。近些年,随着k8s技术的发展,如何在k8s中使用gpu已成为一个热门话题。
2、在k8s中使用gpu目前有以下方案:
3、1)gpu直通。该方案是将一个gpu作为一个整体提供给一个用户使用。该场景可以满足多数场景,但是对于资源消耗小的用户来说资源比较浪费。
4、2)vgpu。该方案是nvidia官方支持的方案,是grid的方案的后续演进。将单个gpu资源进行切片,实现一个gpu虚拟出多个vgpu,满足算力不高的用户场景,但是该方案需要购买英伟达的授权,并且切割方式只能是固定的几种方式,不灵活。
5、3)mig。该方案是nvidia在最新一代安培架构的gpu上提供了mig这种gpu虚拟化方案,提供了完整的硬件隔离机制,真正意义上的硬件隔离,包括计算资源sm,计算调度资源scheduler,显存资源hbm2,显存调度资源memory controller,对于每个gpu子实例来说都是独立的,可以保证多个子实例之间没有资源冲突。但是该技术只在安培和之后的架构上支持,并且最大切分粒度只能切分为7个实例。
6、以上方案都无法满足一些用户的对于gpu显存和算力灵活调整的需求。随着k8s技术
技术实现思路
1、本专利技术的目的在于提供一种gpu在k8s中的虚拟化系统及其方法,旨在解决现有技术中的无法满足一些用户的对于gpu显存和算力灵活调整的需求。随着k8s技术的演进,1.6版本开始,k8s的in-tree代码里开始引入nvidia gpu相关的代码,但不支持gpu调度无法在实际生产环境中使用的问题。
2、为实现上述目的,本专利技术提供如下技术方案:
3、一种gpu在k8s中的虚拟化系统及其方法,包括:封装库、插件和调度插件,所述封装库为基于gpu原始api的vcuda库,所述插件为k8s device plugin插件gpu-manager,所述调度插件为k8s调度插件gpu-control;其中
4、vcuda库用于劫持容器内用户程序的cuda调用限制当前容器内进程对gpu算力和显存的使用;
5、gpu-control为一个标准的k8s device plugin,用于实现gpu拓扑感知、设备和驱动映射功能。可以根据调度来分配容器中的gpu算力和显存的最大使用量;
6、gpu-dispatch为一个k8s scheduler extender,用于实现scheduler的predicates接口。
7、作为本专利技术一种优选的方案,所述vcuda库是一个对nvml api和libcuda api的封装库。
8、作为本专利技术一种优选的方案,所述gpu-control根据调度来分配容器中的gpu算力和显存的最大使用量。
9、作为本专利技术一种优选的方案,所述gpu-dispatch当kube-scheduler在调度资源请求的pod时,predicates阶段会调用gpu-control的predicates接口对节点进行过滤和绑定。
10、一种gpu在k8s中的虚拟化方法,包括如下步骤:
11、步骤一:用户对kube-master进行资源申请;
12、步骤二:master节点kube-apiserver通知kube-scheduler添加启动参数policy-config-file并指定extender url和管理的resource;
13、步骤三:master节点kube-scheduler调用predicates接口,然后进行管理gpu配额,同时将gpu pos分配到gpu节点;
14、步骤四:master节点kube-apiserver通知到gpu节点进行pod创建,给pod增加映射,分配卡号调价到pod的annotitions字段。
15、步骤五:node节点gpu-control对gpu进行拓扑感知,形成拓扑树,对整卡资源调度,同时收集物理机上的gpu驱动库,映射到容器中。
16、步骤六:node节点gpu-control对pod中的算力和显存的控制信息进行整理,并写入vcuda.config中,同时映射到容器中
17、步骤七:容器中,启动会读取vcuda.config中算力和显存的控制信息,同时映射一个vcuda库,对api进行封装和转发。
18、步骤八:用户使用时,当算力或显存任意一个超出限制,vcuda则返回一个超出使用限制的错误;如果没有超出限制,vcuda则转发调用cuda api进行gpu使用。
19、作为本专利技术一种优选的方案,在所述步骤s3中,进行管理gpu配额,通过predicates接口通知gpu-dispatch进行管理namespace下的gpu配额。
20、作为本专利技术一种优选的方案,在所述步骤s4中,给pod增加映射包括增加device映射和增加驱动库映射。
21、作为本专利技术一种优选的方案,在所述步骤s5中,对整卡资源调度时,选择效率最高的gpu。
22、作为本专利技术一种优选的方案,在所述步骤s5中,对整卡资源调度时,若不足整卡资源,集中调度到非张卡gpu上。
23、作为本专利技术一种优选的方案,在所述步骤s7中,所述api包括nvml api和libcudaapi。
24、本申请的又一实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时实现上述任一项中所述的方法。
25、本申请的又一实施例提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以实现上述任一项中所述的方法。
26、与现有技术相比,本专利技术的有益效果是:
27、1、本专利技术中通过对cuda api的劫持来实现对gpu算力和显存的精确控制,能够有效减少用户对于gpu资源的竞争,实现算力和显存的隔离;同时允许用户灵活选择许多不同的gpu实例大小,从而为每项工作负载提供适当规模的gpu实例,优化gpu利用率并提高性价比。
28、2、本专利技术中将算力和显存进行细粒度分割,算力最小可分割1%,显存最小可分割256mb,避免多个客户在同时使用时对资源的争抢;同时支持碎片和整卡调度,提高gpu资源利用率;且对用户程序无侵入,用户无感知,能够有效提升用户体验。
29本文档来自技高网...
【技术保护点】
1.一种GPU在K8S中的虚拟化系统,其特征在于,包括:封装库、插件和调度插件,所述封装库为基于GPU原始API的vcuda库,所述插件为k8s device plugin插件gpu-manager,所述调度插件为K8S调度插件gpu-control;其中
2.根据权利要求1所述的一种GPU在K8S中的虚拟化系统,其特征在于,所述vcuda库是一个对NVML API和libcuda API的封装库。
3.根据权利要求2所述的一种GPU在K8S中的虚拟化系统,其特征在于,所述gpu-control根据调度来分配容器中的GPU算力和显存的最大使用量。
4.根据权利要求3所述的一种GPU在K8S中的虚拟化系统,其特征在于,所述gpu-dispatch当kube-scheduler在调度资源请求的Pod时,predicates阶段会调用gpu-control的predicates接口对节点进行过滤和绑定。
5.一种GPU在K8S中的虚拟化方法,应用于权利要求1-4中任意一项所述的一种GPU在K8S中的虚拟化系统中,其特征在于,包括如下步骤:
6.根据权利要求5所述的一种GPU在K8S中的虚拟化系统及其方法,其特征在于,在所述步骤S3中,进行管理GPU配额,通过predicates接口通知gpu-dispatch进行管理namespace下的GPU配额。
7.根据权利要求6所述的一种GPU在K8S中的虚拟化系统及其方法,其特征在于,在所述步骤S4中,给POD增加映射包括增加device映射和增加驱动库映射。
8.根据权利要求7所述的一种GPU在K8S中的虚拟化系统及其方法,其特征在于,在所述步骤S5中,对整卡资源调度时,选择效率最高的GPU;在所述步骤S5中,对整卡资源调度时,若不足整卡资源,集中调度到非张卡GPU上。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时实现所述权利要求1至8任一项中所述的方法。
10.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以实现所述权利要求1至8任一项中所述的方法。
...【技术特征摘要】
1.一种gpu在k8s中的虚拟化系统,其特征在于,包括:封装库、插件和调度插件,所述封装库为基于gpu原始api的vcuda库,所述插件为k8s device plugin插件gpu-manager,所述调度插件为k8s调度插件gpu-control;其中
2.根据权利要求1所述的一种gpu在k8s中的虚拟化系统,其特征在于,所述vcuda库是一个对nvml api和libcuda api的封装库。
3.根据权利要求2所述的一种gpu在k8s中的虚拟化系统,其特征在于,所述gpu-control根据调度来分配容器中的gpu算力和显存的最大使用量。
4.根据权利要求3所述的一种gpu在k8s中的虚拟化系统,其特征在于,所述gpu-dispatch当kube-scheduler在调度资源请求的pod时,predicates阶段会调用gpu-control的predicates接口对节点进行过滤和绑定。
5.一种gpu在k8s中的虚拟化方法,应用于权利要求1-4中任意一项所述的一种gpu在k8s中的虚拟化系统中,其特征...
【专利技术属性】
技术研发人员:高鹏军,尹浩,姜少涛,江政雄,徐世章,林健树,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。