vhost-user-gpu虚拟机的远程桌面实现方法及系统技术方案

技术编号:36862941 阅读:15 留言:0更新日期:2023-03-15 18:41
本发明专利技术公开了一种vhost

【技术实现步骤摘要】
vhost

user

gpu虚拟机的远程桌面实现方法及系统


[0001]本专利技术涉及虚拟机
,具体涉及一种vhost

user

gpu虚拟机的远程桌面实现方法及系统。

技术介绍

[0002]目前,大多数厂商使用QEMU/KVM的架构来实现桌面虚拟化,并搭配使用VGA、QXL、Cirrus等虚拟显卡进行图像输出。这类虚拟显卡成本低廉、易部署,且兼容性较好,但因为虚拟显卡通常是借由宿主机的CPU来模拟执行图像命令的缘故,也存在性能不足、无法胜任大型3D应用的问题,其应用范围有限。
[0003]作为渲染API转发方案的具体实现,virtio

gpu半虚拟化显卡方案采用virtio半虚拟化技术,可以将虚拟机中的图像渲染命令封装转发给宿主机的virglrenderer组件(给QEMU等虚拟机管理器提供渲染API接口,并可以调用宿主机物理显卡来实现虚拟机图像渲染的硬件加速),再由virglrenderer组件将图像渲染命令解析后提交给宿主机物理显卡进行渲染,从而实现虚拟机图像渲染的硬件加速,其性能相比VGA、QXL、Cirrus等纯虚拟显卡有了明显提升。然而,因为virtio技术本身的限制,virtio

gpu与虚拟机进行数据通信时仍需要多次VM Exit(退出虚拟机)和VM Entry(返回虚拟机)操作,每次VM Exit和VM Entry都需要保存和还原虚拟机的运行时快照,产生了大量额外开销,限制了virtio

gpu的渲染性能的提升。
[0004]为了进一步提升虚拟机的图像渲染性能,业界又提出了vhost

user

gpu显卡方案,vhost

user

gpu显卡基于vhost

user技术实现,由QEMU中的vhost

user

gpu设备和用户态独立运行的vhost

user

gpu数据面后端组成,其中vhost

user

gpu数据面后端可以直接跟虚拟机进行数据通信和调用virglrenderer组件进行图像渲染,无需再经过VM Exit和VM Entry操作。相比virtio

gpu显卡,vhost

user

gpu显卡的图像渲染性能有了进一步提升。
[0005]虽然vhost

user

gpu显卡的图像渲染性能相比virti

gpu显卡有了进一步提升,但与采用了virtio

gpu显卡的虚拟机可以实现网络远程访问相比,采用了vhost

user

gpu显卡的虚拟机则只能通过spice协议(SimpleProtocol forIndependent Computing Environment,简单协议独立计算环境协议)的gl模式在宿主机上本地访问,使得vhost

user

gpu方案下的虚拟机仅能在宿主机上进行本地桌面访问。造成这种情况的主要原因是目前在QEMU中仅实现了对采用vhost

user

gpu显卡的虚拟机的spice gl模式的支持。
[0006]spice gl模式是QEMU所实现的带渲染节点的spice协议访问方式,在spice gl模式下,spice协议服务为virtio

gpu提供了渲染节点绑定支持,以便virtio

gpu可以调用渲染节点指向的物理显卡完成图像渲染硬件加速。同时,在进行虚拟机屏幕刷面输出时,spice gl模式会直接驱动宿主机物理显卡向其连接的显示器输出虚拟机屏幕画面,也正是因为这种屏幕刷面输出方式,导致在spice gl模式下只能在宿主机上以本地桌面的方式访问虚拟机,而无法做到对虚拟机的远程桌面访问。这样就导致极大限制了vhost

user

gpu
显卡的应用范围,目前业界尚未有就vhost

user

gpu显卡方案下的虚拟机远程访问方法的专门研究。

技术实现思路

[0007]本专利技术要解决的技术问题:针对vhost

user

gpu虚拟机无法远程桌面访问的现状,提供一种vhost

user

gpu虚拟机的远程桌面实现方法及系统。本专利技术旨在实现vhost

user

gpu方案下的虚拟机的远程桌面访问,远程桌面访问开销要小,对虚拟机性能负面影响小,兼容包括不限于SPICE协议、VNC在内的多种远程桌面访问协议。
[0008]为了解决上述技术问题,本专利技术采用的技术方案为:一种vhost

user

gpu虚拟机的远程桌面实现方法,包括在使用vhost

user

gpu虚拟显卡的虚拟机进行渲染输出时,利用egl

headless协议将虚拟机渲染上下文中的帧缓存图像数据读取到内存指定区域,并将内存指定区域中的帧缓存图像数据通过指定的远程桌面协议发送到远端以实现对虚拟机的远程桌面访问。
[0009]可选地,所述vhost

user

gpu虚拟显卡包括独立运行于用户态的vhost

user

gpu数据面后端以及位于qemu中的vhost

user

gpu显示设备,虚拟机通过virtio

gpu驱动来加载位于qemu中的vhost

user

gpu显示设备以利用宿主机物理显卡来进行虚拟机中的图像渲染处理。
[0010]可选地,所述vhost

user

gpu数据面后端通过宿主机中的共享内存来直接访问虚拟机的渲染命令处理队列,若从渲染命令处理队列中截获到图像渲染命令则调用virglrenderer组件来利用宿主机物理显卡完成图像渲染硬件加速,渲染后的图像存放在宿主机物理显卡的帧缓存中。
[0011]可选地,所述立即通过egl

headless协议将虚拟机渲染上下文中的帧缓存图像数据读取到内存指定区域之后,还包括基于在egl

headless协议中增加的针对的屏幕刷新命令flush处理情况反馈功能将屏幕刷新命令flush的执行结果通过渲染命令本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种vhost

user

gpu虚拟机的远程桌面实现方法,其特征在于,包括在使用vhost

user

gpu虚拟显卡的虚拟机进行渲染输出时,利用egl

headless协议将虚拟机渲染上下文中的帧缓存图像数据读取到内存指定区域,并将内存指定区域中的帧缓存图像数据通过指定的远程桌面协议发送到远端以实现对虚拟机的远程桌面访问。2.根据权利要求1所述的vhost

user

gpu虚拟机的远程桌面实现方法,其特征在于,所述vhost

user

gpu虚拟显卡包括独立运行于用户态的vhost

user

gpu数据面后端以及位于qemu中的vhost

user

gpu显示设备,虚拟机通过virtio

gpu驱动来加载位于qemu中的vhost

user

gpu显示设备,利用宿主机物理显卡来进行虚拟机中的图像渲染处理。3.根据权利要求2所述的vhost

user

gpu虚拟机的远程桌面实现方法,其特征在于,所述vhost

user

gpu数据面后端通过宿主机中的共享内存来直接访问虚拟机的渲染命令处理队列,若从渲染命令处理队列中截获到图像渲染命令,则调用virglrenderer组件来利用宿主机物理显卡完成图像渲染硬件加速,渲染后的图像存放在宿主机物理显卡的帧缓存中,并在渲染命令处理完毕后将处理结果通过渲染命令处理队列反馈给虚拟机。4.根据权利要求3所述的vhost

user

gpu虚拟机的远程桌面实现方法,其特征在于,所述利用egl

headless协议将虚拟机渲染上下文中的帧缓存图像数据读取到内存指定区域的触发条件包括定时执行和基于虚拟机发送的屏幕刷新命令flush触发执行。5.根据权利要求4所述的vhost

user

gpu虚拟机的远程桌面实现方法,其特征在于,所述基于虚拟机发送的屏幕刷新命令flush触发执行包括:当vhost

user

gpu数据面后端从渲染命令处理队列中截获到屏幕刷新命令flush时,所述vhost

user

gpu数据面后端将屏幕刷新命令flush转发给vhost

user

gpu显示设备,vhost

user

gpu显示设备在收到屏幕刷新命令flush后,立即通过egl

headless协议将虚拟机渲染上下文中的帧缓存图像数据读取到内存指定区域。6.根据权利...

【专利技术属性】
技术研发人员:李唯实孙立明张铎谢明
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1