基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统技术方案

技术编号:24408888 阅读:28 留言:0更新日期:2020-06-06 08:18
本发明专利技术公开了一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统,实施步骤包括:利用AMD显卡的显卡驱动API抓取渲染区域的虚拟机屏幕画面,并将抓取的虚拟机屏幕画面在显卡内部直接编码为数据帧后传输到操作系统内存;将操作系统内存中数据帧传送给瘦终端。本发明专利技术在显卡虚拟化环境下,利用AMD显卡的显卡驱动API抓取渲染区域的虚拟机屏幕画面,并将抓取的虚拟机屏幕画面在显卡内部直接编码为数据帧后传输到操作系统内存,将操作系统内存中数据帧传送给瘦终端,因此虚拟机屏幕画面数据到达操作系统不需要经过多次拷贝,可以提高获取画面的速度,更快的将虚机画面传送给瘦终端,提供用户体验。

Method and system of virtual screen transmission of Linux virtual machine based on AMD video card virtualization

【技术实现步骤摘要】
基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统
本专利技术涉及计算机云计算、虚拟计算、云桌面领域,具体涉及一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统。
技术介绍
由于互联网的基础设施的快速发展,云桌面越来越受到欢迎,仅需要一个瘦终端,人们就可以在几乎任何地方使用运行于虚拟化服务器的软件,云桌面使用者在使用软件的时候希望能够获得和他们的工作站一样的用户体验,但是,现在的应用不再像以前一样单一、简单。高清视频编解码、3D设计、3D游戏、物理仿真、VR虚拟现实等应用越来越多,云桌面厂商越来越重视GPU虚拟化技术,将GPU技术与虚拟化技术融合来为虚拟机提供高性能的图形和3D性能。GPU虚拟化方案目前有三种,设备模拟(DeviceSimulation)、显卡直通(GPUPassthrough)和GPU全虚拟化(FullGPUVisualization),用于满足不同场景下的3D需求。设备模拟是指通过软件模拟出来的虚拟GPU,采用类似于CPU虚拟化中二进制转换方法进行模拟。但相对于CPU,GPU的特性复杂,不同的设备提供商之间的GPU规格区别很大,GPU的资源很难被拆分,模拟的效率低。因此,典型的QEMU软件仅模拟了VGA设备的基本功能,它通过一个半虚拟化的图像缓冲区来加速特定的2D图像访问,不符合高效、共享的虚拟化要求。由于设备模拟没有一个确定的机制能使虚拟机进行访问图形硬件的能力,因此这些虚拟的显示设备都是通过使用CPU以及内存的方式对图形数据进行相应处理。显卡直通也叫显卡穿透,是指绕过虚拟机管理系统,直接透传物理GPU给单个虚拟机,将物理GPU单独分配给某一虚拟机,获得完整的物理GPU的功能和指令集,只有该虚拟机拥有使用GPU的权限,就连宿主虚拟机也失去了使用该GPU的能力,这种独占设备的方法分配方式保存了GPU的完整性和独立性,由虚拟机操作系统使用原生驱动和硬件,在性能方面与非虚拟化条件下接近,可满足大型设计及极致苛刻的设计场景。该技术将物理GPU设备1:1的映射到虚拟机中,给虚拟机呈现一个在功能和性能上都和物理GPU一致的设备。由于对物理GPU无虚拟化功能的要求,能够使用普通显卡,在同等性能下平均每个用户的成本远低于支持硬件GPU虚拟化的显卡。此外,物理显卡还支持直接通过显示接口输出虚拟机的显示信号,使得虚拟机能够应用于某些对于桌面显示延迟要求极高或者显示效果要求很高的特殊场景。显卡穿透技术将物理GPU从虚拟机主机系统中隔离,避免主机系统使用或更改GPU的状态。物理GPU与虚拟机一一对应,每个虚拟机都将分配一个独立的物理GPU。在Hypervisor中虚拟机通过特殊的通道访问访问物理GPU。在虚拟机中运行的操作系统看到的将是物理GPU并且安装与物理机同样的官方显卡驱动程序。显卡直通技术的底层基础是IOMMU(I/Omemorymanagementunit)和VFIO(VirtualFunctionI/O)。IOMMU是一个内存管理单元,它的作用是控制设备DMA地址映射到机器物理地址(DMAR)和中断重映射(InterruptRemapping),把设备访问的虚拟地址转化成物理地址,同时保证安全性。国产化平台的IOMMU实现一般基于SMMU(SystemMemoryManagementUnit),SMMU采用了两个单独的地址转换阶段。在第一级(Stage1)实现了虚拟地址(VA)到中间物理地址(IPA)的转换。第二级(Stage2)实现了从中间物理地址(IPA)到物理地址(PA)的转换。VFIO是一个可以安全的把设备I/O、中断、DMA等暴露到用户空间,从而可以在用户空间完成设备驱动的框架,可用于编写高效用户态驱动;在虚拟化情景下,亦可用来在用户态实现设备直通(DevicePassthrough)。VFIO由平台无关的接口层与平台相关的实现层组成。接口层将服务抽象为IOCTL命令,规化操作流程,定义通用数据结构,与用户态交互。实现层完成承诺的服务。VFIO设计灵活,可以很方便地加入对其它种类硬件及IOMMU的支持。GPU全虚拟化是指部分高端显卡具备硬件虚拟化功能,可以将一块物理GPU卡的计算能力进行切片,分成多个逻辑上虚拟的GPU,即vGPU,以vGPU为单位分配GPU的计算能力。所有vGPU都能够分时共享访问物理GPU的3D图形引擎和视频编解码引擎,并拥有独立的显存。以vGPU为单位可以将单块GPU卡分配给多台虚拟机使用,虚拟机通过绑定的vGPU可以直接访问物理GPU的部分硬件资源,使得虚拟机能够运行3D软件、播放高清视频等,极大地提升了用户体验。vGPU技术不需要对硬件加速协议进行转换,虚拟机直接与vGPU通信,因此其协议兼容性和性能都有大幅度的提高。基于GPU虚拟化厂商提供的共享GPU能力,将物理GPU虚拟成多份具有完整GPU功能和指令集的vGPU,可满足绝大多数2D和3D图形密集型用户的需求。SR-IOV是一种理想的GPU全虚拟化解决方案,可提高性能和可伸缩性。SR-IOV通过影子页表隔离每个虚拟GPU的访问空间,从而大多数的命令执行会不受虚拟机监控器的干预,因此虚拟GPU就可以获得接近非虚拟化情况下的性能。SR-IOV包含物理功能(PhysicalFunction,PF)和虚拟功能(VirtualFunction,VF),PF包含SR-IOV功能结构,用于管理SR-IOV功能。PF是全功能的PCIe功能,可以像其他任何PCIe设备一样进行发现、管理和处理。PF拥有完全配置资源,可以用于配置或控制PCIe设备。VF是一种轻量级PCIe功能,可以与物理功能以及与同一物理功能关联的其他VF共享一个或多个物理资源。VF仅允许拥有用于其自身行为的配置资源。通过SR-IOV,一个PCIe设备不仅可以导出多个PCI物理功能,还可以导出共享该I/O设备上的资源的一组虚拟功能。AMD专业级显卡如AMDRadeon™Pro或者FirePro™等,具有GPU全虚拟化功能,能够虚拟化后,穿透到虚拟机里供虚拟机使用,提高虚拟机图形处理能力,使虚拟机具有跑3D应用的能力。当显卡穿透后,虚拟机内的图像画面要传到用户看到的终端,需要使用远程桌面协议,目前使用比较广泛的支持3D应用的远程桌面协议都有不少弊端,如占用带宽大、画面延迟高等,尤其是在显示数据跨越公网的情况下,非常影响用户体验。因此,当显卡虚拟化穿透后,需要一种高效的方法能够实时的传输虚机内的画面。
技术实现思路
本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法及系统,本专利技术能够满足和提高云桌面终端用户在使用虚拟机应用时的用户体验,虚拟机屏幕画面数据到达操作系统不需要经过多次拷贝,可以提高获取画面的速度,更快的将虚机画面传送给瘦终端,提供用户体验。为了解决上述技术问题,本专利技术采用的技术方案为:一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法,实施步骤包括:1)利用AMD显卡的显卡驱动API抓取渲染区域的虚拟机屏幕画面,并将抓取的虚拟机屏幕画面在显卡本文档来自技高网
...

【技术保护点】
1.一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法,其特征在于实施步骤包括:/n1)利用AMD显卡的显卡驱动API抓取渲染区域的虚拟机屏幕画面,并将抓取的虚拟机屏幕画面在显卡内部直接编码为数据帧后传输到操作系统内存;/n2)将操作系统内存中数据帧传送给瘦终端。/n

【技术特征摘要】
1.一种基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法,其特征在于实施步骤包括:
1)利用AMD显卡的显卡驱动API抓取渲染区域的虚拟机屏幕画面,并将抓取的虚拟机屏幕画面在显卡内部直接编码为数据帧后传输到操作系统内存;
2)将操作系统内存中数据帧传送给瘦终端。


2.根据权利要求1所述的基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法,其特征在于,步骤1)之前包括配置AMD显卡的步骤:在云平台服务器的显卡插槽上插入AMD显卡,在云平台服务器上创建Linux虚拟机,将虚拟化的AMD显卡穿透到Linux虚拟机内,在AMD显卡虚拟化环境下安装AMD的显卡驱动,制作EDID文件模拟显示器,并且配置好Linux虚拟机的显示配置文件,配置模拟显示器数量支持终端多屏显示。


3.根据权利要求1所述的基于AMD显卡虚拟化传输Linux虚拟机屏幕画面的方法,其特征在于,步骤1)的详细步骤包括:
1.1)通过主进程检测Linux虚拟机的虚拟显示器数量,并启动和虚拟显示器数量相同的屏幕数据获取线程量,每个屏幕数据获取线程将屏幕ID告知AMD显卡驱动RapidFire,每个屏幕数据获取线程用于独立负责一块显示屏数据的获取;同时,主进程还开启鼠标数据抓取线程以抓取鼠标数据;
1.2)分别定义各个屏幕数据获取线程的RapidFire会话属性,所述会话属性中包括编码器的类型、屏幕的ID、是否抓取鼠标数据、是否从GPU拷贝到操作系统内存,并利用这个RapidFire会话属性创建RapidFire会话;
1.3)向AMD显卡驱动RapidFire注册各个屏幕数据获取线程的渲染区域;
1.4)各个屏幕数据获取线程分别调用AMD显卡驱动RapidFire的rfEncodeFrame接口编码当前渲染区域的数据帧,并且检查编码设置是否改变,如果编码器设置改变则按照改变后的设置抓屏,如果编码器设置没有改变则按照原设置抓屏;
1.5)各个屏幕数据获取线程分别调用...

【专利技术属性】
技术研发人员:欧阳殷朝孙利杰杨鹏举胡智峰夏华陈松政刘文清杨涛
申请(专利权)人:湖南麒麟信安科技有限公司
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1