本发明涉及vgpu超分配技术领域,尤其涉及云桌面vgpu超分配方法。
背景技术:
在gpu虚拟化领域,目前存在三类典型的技术方案。
(1)nvidia主导的gridgpu虚拟化技术
nvidia的gpu虚拟化方案基于其特殊设计的一款gpu显卡,该类型gpu可以模拟若干gpu的能力,从而同时为若干台虚拟机提供服务,这些模拟出来的gpu单元称为vgpu。每台虚拟机绑定一个独立的vgpu,使得guest操作系统和其中运行的3d应用直接使用vgpu的处理能力,达到接近于物理计算机使用本地硬件gpu处理的效果体验。
(2)intel的xengt/kvmgtgpu虚拟化技术方案
intelxengt/kvmgt方案的主要原理是,在虚拟化层为每台虚拟机模拟一块独立gpu显卡(以下也称为vgpu),vgpu对上层应用提交的3d操作请求,按照其类型识别为两类:显存操作请求和寄存器io操作请求。对于显存操作请求,直接映射操作宿主机层硬件gpu中的一块对应显存,称为passthrough方式,由于跨过中间若干环节,可以减少时间资源的消耗,提高整体处理效率;对于寄存器io操作请求,采用陷入再模拟的方式统一安排调度,称为trap方式,达到一套硬件gpu计算单元分时复用的目的。所以,xengt/kvmgt方案试图通过一块成本较低gpu卡,同时支持多台虚拟机对gpu的需求。
(3)利用纯软件库模拟gpu
前面所述两种技术方案最终都需要硬件gpu支持,与它们相对应,还有一种纯软件模拟的技术方案。其原理是:在api层实现一个软件库,使得在没有gpu或仅具备低端gpu的设备上,可以模拟运行3d应用。最典型的实现是mesa,一个用于模拟opengl设备的开源软件库,它最基本的运行模式是纯软件模拟方式;microsoft的directx也支持类似的软设备模拟模式。
但是当前云桌面技术在需要图形图像计算的场景,通常会使用专为虚拟化设计的显卡为虚拟机提供gpu支撑,但这种显卡价格非常昂贵,因此还会使用虚拟化显卡切割技术,将一块物理显卡切割为多个vgpu(如4个或8个),再将这些vgpu分配给不同虚拟机使用。这种技术可以在满足用户图形图像计算需求的同时,降低后端服务器成本,但vgpu与虚拟机是固定绑定关系,即使虚拟机未开机使用,也无法释放vgpu资源给其它虚拟机使用。
技术实现要素:
1.要解决的技术问题
本发明的目的是为了解决现有技术中vgpu与虚拟机是固定绑定关系,即使虚拟机未开机使用,也无法释放vgpu资源给其它虚拟机使用的的问题,而提出的云桌面vgpu超分配方法。
2.技术方案
为了实现上述目的,本发明采用了如下技术方案:
云桌面vgpu超分配方法,包括以下步骤:
步骤1,初始化资源池:
步骤1.1,云桌面平台启动,并扫描所有pci设备;
步骤1.2,对步骤1中所有pci设备进行物理服务器计算节点;
步骤1.3,对设备进行是否为vgpu设备进行判断;
步骤1.4,若设备为vgpu设备,则加入vgpu资源池,初始化完成;
步骤2,用户登录:
步骤2.1,用户登录,并进行统一省份认证;
步骤2.2,所述步骤1中认证通过,则进行是否为gpu虚拟机进行判定;
步骤2.3,若步骤2.2中判定为gpu虚拟机,进行物理服务器计算节点的分配,并进行是否有可用vgpu资源进行判断;
步骤2.4,若步骤2.3中有vgpu资源可用,进行物理服务器计算节点的分配,并为虚拟机分配vgpu资源,并启动带gpu虚拟机;
步骤3,回收vgpu资源:
步骤3.1,虚拟机关机,并对设备是否分配vgpu进行判断;
步骤3.2,若步骤1中已分配vgpu,则进行vgpu的回收,并结束关机。
优选地,所述步骤1中若设备不是vgpu设备则初始化完成。
优选地,所述步骤1和步骤2中,物理服务器计算节点分别为vgpu1-vgpun。
优选地,所述步骤2.1中,若统一身份认证失败,则直接结束。
优选地,所述步骤2中,统一身份认证为keystone身份认证。
优选地,所述步骤2.3中,若无vgpu资源可用,则启动无gpu虚拟机。
优选地,所述步骤3.1中,若未分配vgpu,则直接结束关机。
优选地,所述步骤3.2中,对vgpu进行回收后,回收前包括vgpu1-4,回收后为vgpu1-5。
3.有益效果
相比于现有技术,本发明的优点在于:
(1)本发明中,云桌面平台启动后,扫描服务器pci设备并与内置vgpu显卡特征码对比,枚举出物理服务器所有vgpu资源,将其汇总为vgpu资源池;
(2)当接收到用户发出的虚拟机开机请求,且此虚拟机标记为gpu虚拟机时,从资源池查询可用的vgpu资源,将获取到的vgpu资源分配给虚拟机后,再真正启动kvm虚拟机;
(3)当检测到gpu虚拟机关机时,将分配给此虚拟机的vgpu资源回收至vgpu资源池。
附图说明
图1为本发明提出的云桌面vgpu超分配方法的初始化资源池示意图;
图2为本发明提出的云桌面vgpu超分配方法的用户登录示意图;
图3为本发明提出的云桌面vgpu超分配方法的回收vgpu资源示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
实施例1:
参照图1-3,云桌面vgpu超分配方法,包括以下步骤:
步骤1,初始化资源池:
步骤1.1,云桌面平台启动,并扫描所有pci设备;
步骤1.2,对步骤1中所有pci设备进行物理服务器计算节点;
步骤1.3,对设备进行是否为vgpu设备进行判断;
步骤1.4,若设备为vgpu设备,则加入vgpu资源池,初始化完成;
步骤2,用户登录:
步骤2.1,用户登录,并进行统一省份认证;
步骤2.2,步骤1中认证通过,则进行是否为gpu虚拟机进行判定;
步骤2.3,若步骤2.2中判定为gpu虚拟机,进行物理服务器计算节点的分配,并进行是否有可用vgpu资源进行判断;
步骤2.4,若步骤2.3中有vgpu资源可用,进行物理服务器计算节点的分配,并为虚拟机分配vgpu资源,并启动带gpu虚拟机;
步骤3,回收vgpu资源:
步骤3.1,虚拟机关机,并对设备是否分配vgpu进行判断;
步骤3.2,若步骤1中已分配vgpu,则进行vgpu的回收,并结束关机。
本发明中,步骤1中若设备不是vgpu设备则初始化完,步骤1和步骤2中,物理服务器计算节点分别为vgpu1-vgpun,步骤2.1中,若统一身份认证失败,则直接结束,步骤2中,统一身份认证为keystone身份认,步骤2.3中,若无vgpu资源可用,则启动无gpu虚拟机,步骤3.1中,若未分配vgpu,则直接结束关机,步骤3.2中,对vgpu进行回收后,回收前包括vgpu1-4,回收后为vgpu1-5。
本发明中,云桌面平台启动后,扫描服务器pci设备并与内置vgpu显卡特征码对比,枚举出物理服务器所有vgpu资源,将其汇总为vgpu资源池,当接收到用户发出的虚拟机开机请求,且此虚拟机标记为gpu虚拟机时,从资源池查询可用的vgpu资源,将获取到的vgpu资源分配给虚拟机后,再真正启动kvm虚拟机,当检测到gpu虚拟机关机时,将分配给此虚拟机的vgpu资源回收至vgpu资源池。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。