基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201811265334.6
(22)申请日 2018.10.29
(71)申请人 北京京航计算通讯研究所
地址 100074 北京市丰台区云岗北区西里
一号院
(72)发明人 郑理 车烈权 石春刚 李书攀 
龚楠 王欣 张笑天 
(74)专利代理机构 中国兵器工业集团公司专利
中心 11011
代理人 周恒
(51)Int.Cl.
G06F  9/455(2006.01)
(54)发明名称基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法(57)摘要本发明属于虚拟化桌面技术领域,具体涉及一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法。所述方法基于显示系统来实施,所述显示系统包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;所述虚拟机中包括:虚拟机内代理模块、显卡驱动;所述物理服务器包括物理显卡;所述SPICE服务端中包括:显示信息获取及控制模块;与现有技术相比较,本发明沿用了原有SPICE协议,可自适应物理显卡透传和虚拟显卡两种方式,展示虚拟桌面,与原有系统兼容性高。虚拟机通过virtIO与服务端通信,不直接与客户端通信,提高系统安
全性。权利要求书2页  说明书4页  附图1页CN 109358951 A 2019.02.19
C N  109358951
A
1.一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,其特征在于,所述方法基于显示系统来实施,所述显示系统包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;
所述虚拟机中包括:虚拟机内代理模块、显卡驱动;
所述物理服务器包括物理显卡;
所述SPICE服务端中包括:显示信息获取及控制模块;
所述显示方法包括如下步骤:
步骤1:虚拟机连接虚拟桌面客户端;
步骤2:虚拟机开机过程中,虚拟机内代理模块未启动,虚拟机从虚拟显卡中捕获显示信息,通过原有显示通道发送显示信息给虚拟桌面客户端;
步骤3:虚拟桌面客户端从原显示通道接收显示信息,经过处理和渲染,展示显示信息;
步骤4:虚拟机开机后,虚拟机内代理模块启动,获取显卡驱动信息,检测显卡类型,并将显卡类型信息发送至SPICE服务端内的显示信息获取及控制模块;
步骤5:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块的显卡类型信息,判断显卡类型并保存结果,根据检测到的不同显卡类型,分为以下两种情况:步骤51:若检测到虚拟机内显卡为虚拟显卡,则进入步骤6:
步骤52:若检测到虚拟机内显卡为直通物理显卡,则进入步骤7:
步骤6:进行虚拟显卡的显示;
步骤7:进行直通物理显卡的显示。
2.如权利要求1所述的基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,其特征在于,所述步骤6包括如下子步骤:
步骤61:虚拟机从虚拟显卡中捕获到显示信息,通过原显示通道发送显示信息给虚拟桌面客户端;
步骤62:虚拟桌面客户端从原显示通道接收显示信息,经过处理渲染,展示显示信息。
3.如权利要求1所述的基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,其特征在于,所述步骤7包括如下子步骤:
步骤71:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块传递的通道建立指令,建立Stream通道,并发送控制命令给虚拟机内代理模块,告知其开始捕获显卡信息;
步骤72:虚拟机内代理模块接收到控制命令,开始从显卡驱动中捕获显示信息,并将捕获到的显示信息发送给SPICE服务端;
步骤73:SPICE服务端接收到显示信息,通过Stream通道将显示信息发送给虚拟桌面客户端;
步骤74:虚拟桌面客户端从Stream通道接收显示信息,经过处理渲染,展示显示信息。
4.如权利要求3所述的基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,其特征在于,所述方法还包括:
步骤8:虚拟桌面客户端断开连接,发送断开连接指令;
步骤9:SPICE服务端接收到虚拟桌面客户端的断开连接指令后,根据步骤5中检测到的显卡类型,判断虚拟机内是否为直通物理显卡。
步骤10:若判断结果虚拟机为直通物理显卡,SPICE服务端内的显示信息获取及控制模块向虚拟机内代理模块发送停止捕获显示信息的命令;
步骤11:虚拟机内代理模块接收到停止捕获显示信息的命令,停止从显卡驱动中捕获显示信息,并将结果反馈给SPICE服务端。
5.如权利要求3所述的基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,其特征在于,所述步骤72中将捕获到的显示信息通过virtIO port发送给SPICE服务端。
基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法
技术领域
[0001]本发明属于虚拟化桌面技术领域,具体涉及一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法。
背景技术
[0002]现有的虚拟化桌面方案只能支持虚拟显卡或显卡直通方式中的一种,不能同时支持虚拟显卡和显卡直通方式。
[0003]SPICE是redhat开发的开源桌面虚拟化数据传输协议,它从QEMU提供给虚拟机的虚拟显卡中捕获显示信息,通过显示通道将其发送给SPICE客户端,应用广泛,能够满足对显卡要求较低的场景。另一方面,由于玩游戏、视频播放、视频处理、3D设计等对显卡要求较高的需求大量涌现,QEMU提供的性能较低的模拟显卡已经无法满足用户的需求。通过QEMU 提供的显卡直通机制,将服务器上的物理显卡提供给虚拟机使用,能满足用户的高性能显示需求。为了满足不同用户的需求,方案需要同时支持虚拟显卡和显卡直通方式的显示。但是,现有的方案只支持虚拟显卡或显卡直通两种显示方式中的一种,不能同时支持两种显示方式。
[0004]1:支持虚拟显卡的方案:
[0005]SPICE协议能够直接捕获虚拟显卡中的命令,进行优化后转化成SPICE协议消息,最后通过显示通道发送给客户端显示虚拟桌面。由于SPICE获取显卡显示信息的机制限制,其无法捕获直通给虚拟机的物理显卡中的显示信息,导致虚拟化桌面客户端无法显示虚拟桌面和使用人员无法操作虚拟桌面。
[0006]2:支持显卡直通的方案:
[0007]1)使用虚拟机内部代理直接通过网络发送显示信息的方案:
[0008]禁用SPICE协议中的显示通道,将虚拟机联网并在虚拟机内安装代理,捕获物理显卡中的显示信息并通过虚拟机的网络发送给客户端;然后修改客户端使其能够解析通过代理发送过来的显示信息。该种方法同时修改桌面虚拟化协议的客户端和服务端,与原有SPICE协议兼容性差。同时,客户端直接连接互联网,破坏了宿主机隔离性,降低安全性。[0009]2)基于虚拟机和服务器之间的共享内存传递显示信息的方案:
[0010]该方案将虚拟机中的部分内存与物理服务器中的部分内存共享,在虚拟机内安装代理,捕获物理显卡中的显示信息并将其写入到共享内存中,然后修改SPICE协议的服务端,读取共享内存中的显示信息并通过SPICE原有的显示通道,将显示信息发送给客户端。该类方法需要在QEMU中增加共享内存分配和管理机制,管控复杂度高,实现难度大。[0011]现有方案的缺点是不能同时支持虚拟显卡
和显卡直通两种方式。
[0012]对于仅支持虚拟显卡的方案,其性能不能满足用户的高性能需求。
[0013]对于仅支持显卡直通的方案,对原有SPICE协议的改动较大,与原有基于SPICE协议的虚拟化桌面系统兼容性差;因为不支持虚拟显卡,在不需要高性能显示需求时造成资源浪费。
发明内容
[0014](一)要解决的技术问题
[0015]本发明要解决的技术问题是:如何提供一种智能支持显卡直通和虚拟显卡的显示方法,要求其与SPICE协议兼容性高,且能够同时支持虚拟显卡和显卡直通两种方式;且虚拟机不直接与服务端或客户端通信,增强安全性。
[0016](二)技术方案
[0017]为解决上述技术问题,本发明提供一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,所述方法基于显示系统来实施,所述显示系统包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;
[0018]所述虚拟机中包括:虚拟机内代理模块、显卡驱动;
[0019]所述物理服务器包括物理显卡;
[0020]所述SPICE服务端中包括:显示信息获取及控制模块;
[0021]所述显示方法包括如下步骤:
[0022]步骤1:虚拟机连接虚拟桌面客户端;
[0023]步骤2:虚拟机开机过程中,虚拟机内代理模块未启动,虚拟机从虚拟显卡中捕获显示信息,通过原有显示通道发送显示信息给虚拟桌面客户端;
[0024]步骤3:虚拟桌面客户端从原显示通道接收显示信息,经过处理和渲染,展示显示信息;
[0025]步骤4:虚拟机开机后,虚拟机内代理模块启动,获取显卡驱动信息,检测显卡类型,并将显卡类型信息发送至SPICE服务端内的显示信息获取及控制模块;
[0026]步骤5:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块的显卡类型信息,判断显卡类型并保存结果,根据检测到的不同显卡类型,分为以下两种情况:[0027]步骤51:若检测到虚拟机内显卡为虚拟显卡,则进入步骤6:
[0028]步骤52:若检测到虚拟机内显卡为直通物理显卡,则进入步骤7:
[0029]步骤6:进行虚拟显卡的显示;
[0030]步骤7:进行直通物理显卡的显示。
[0031]其中,所述步骤6包括如下子步骤:
[0032]步骤61:虚拟机从虚拟显卡中捕获到显示信息,通过原显示通道发送显示信息给虚拟桌面客户端;
[0033]步骤62:虚拟桌面客户端从原显示通道接收显示信息,经过处理渲染,展示显示信息。
[0034]其中,所述步骤7包括如下子步骤:
[0035]步骤71:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块传递的通道建立指令,建立Stream通道,并发送控制命令给虚拟机内代理模块,告知其开始捕获显卡信息;
[0036]步骤72:虚拟机内代理模块接收到控制命令,开始从显卡驱动中捕获显示信息,并将捕获到的显示信息发送给SPICE服务端;
[0037]步骤73:SPICE服务端接收到显示信息,通过Stream通道将显示信息发送给虚拟桌面客户端;

本文发布于:2024-09-20 20:40:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/414435.html

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

标签:显卡   虚拟   显示   桌面   客户端   直通   协议
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议