CN109358951B - 基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 - Google Patents
基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 Download PDFInfo
- Publication number
- CN109358951B CN109358951B CN201811265334.6A CN201811265334A CN109358951B CN 109358951 B CN109358951 B CN 109358951B CN 201811265334 A CN201811265334 A CN 201811265334A CN 109358951 B CN109358951 B CN 109358951B
- Authority
- CN
- China
- Prior art keywords
- display
- virtual
- card
- virtual machine
- spice
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Controls And Circuits For Display Device (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明属于虚拟化桌面技术领域,具体涉及一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法。所述方法基于显示***来实施,所述显示***包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;所述虚拟机中包括:虚拟机内代理模块、显卡驱动;所述物理服务器包括物理显卡;所述SPICE服务端中包括:显示信息获取及控制模块;与现有技术相比较,本发明沿用了原有SPICE协议,可自适应物理显卡透传和虚拟显卡两种方式,展示虚拟桌面,与原有***兼容性高。虚拟机通过virtIO与服务端通信,不直接与客户端通信,提高***安全性。
Description
技术领域
本发明属于虚拟化桌面技术领域,具体涉及一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法。
背景技术
现有的虚拟化桌面方案只能支持虚拟显卡或显卡直通方式中的一种,不能同时支持虚拟显卡和显卡直通方式。
SPICE是redhat开发的开源桌面虚拟化数据传输协议,它从QEMU提供给虚拟机的虚拟显卡中捕获显示信息,通过显示通道将其发送给SPICE客户端,应用广泛,能够满足对显卡要求较低的场景。另一方面,由于玩游戏、视频播放、视频处理、3D设计等对显卡要求较高的需求大量涌现,QEMU提供的性能较低的模拟显卡已经无法满足用户的需求。通过QEMU提供的显卡直通机制,将服务器上的物理显卡提供给虚拟机使用,能满足用户的高性能显示需求。为了满足不同用户的需求,方案需要同时支持虚拟显卡和显卡直通方式的显示。但是,现有的方案只支持虚拟显卡或显卡直通两种显示方式中的一种,不能同时支持两种显示方式。
1:支持虚拟显卡的方案:
SPICE协议能够直接捕获虚拟显卡中的命令,进行优化后转化成SPICE协议消息,最后通过显示通道发送给客户端显示虚拟桌面。由于SPICE获取显卡显示信息的机制限制,其无法捕获直通给虚拟机的物理显卡中的显示信息,导致虚拟化桌面客户端无法显示虚拟桌面和使用人员无法操作虚拟桌面。
2:支持显卡直通的方案:
1)使用虚拟机内部代理直接通过网络发送显示信息的方案:
禁用SPICE协议中的显示通道,将虚拟机联网并在虚拟机内安装代理,捕获物理显卡中的显示信息并通过虚拟机的网络发送给客户端;然后修改客户端使其能够解析通过代理发送过来的显示信息。该种方法同时修改桌面虚拟化协议的客户端和服务端,与原有SPICE协议兼容性差。同时,客户端直接连接互联网,破坏了宿主机隔离性,降低安全性。
2)基于虚拟机和服务器之间的共享内存传递显示信息的方案:
该方案将虚拟机中的部分内存与物理服务器中的部分内存共享,在虚拟机内安装代理,捕获物理显卡中的显示信息并将其写入到共享内存中,然后修改SPICE协议的服务端,读取共享内存中的显示信息并通过SPICE原有的显示通道,将显示信息发送给客户端。该类方法需要在QEMU中增加共享内存分配和管理机制,管控复杂度高,实现难度大。
现有方案的缺点是不能同时支持虚拟显卡和显卡直通两种方式。
对于仅支持虚拟显卡的方案,其性能不能满足用户的高性能需求。
对于仅支持显卡直通的方案,对原有SPICE协议的改动较大,与原有基于SPICE协议的虚拟化桌面***兼容性差;因为不支持虚拟显卡,在不需要高性能显示需求时造成资源浪费。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种智能支持显卡直通和虚拟显卡的显示方法,要求其与SPICE协议兼容性高,且能够同时支持虚拟显卡和显卡直通两种方式;且虚拟机不直接与服务端或客户端通信,增强安全性。
(二)技术方案
为解决上述技术问题,本发明提供一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,所述方法基于显示***来实施,所述显示***包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;
所述虚拟机中包括:虚拟机内代理模块、显卡驱动;
所述物理服务器包括物理显卡;
所述SPICE服务端中包括:显示信息获取及控制模块;
所述显示方法包括如下步骤:
步骤1:虚拟机连接虚拟桌面客户端;
步骤2:虚拟机开机过程中,虚拟机内代理模块未启动,虚拟机从虚拟显卡中捕获显示信息,通过原有显示通道发送显示信息给虚拟桌面客户端;
步骤3:虚拟桌面客户端从原显示通道接收显示信息,经过处理和渲染,展示显示信息;
步骤4:虚拟机开机后,虚拟机内代理模块启动,获取显卡驱动信息,检测显卡类型,并将显卡类型信息发送至SPICE服务端内的显示信息获取及控制模块;
步骤5:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块的显卡类型信息,判断显卡类型并保存结果,根据检测到的不同显卡类型,分为以下两种情况:
步骤51:若检测到虚拟机内显卡为虚拟显卡,则进入步骤6:
步骤52:若检测到虚拟机内显卡为直通物理显卡,则进入步骤7:
步骤6:进行虚拟显卡的显示;
步骤7:进行直通物理显卡的显示。
其中,所述步骤6包括如下子步骤:
步骤61:虚拟机从虚拟显卡中捕获到显示信息,通过原显示通道发送显示信息给虚拟桌面客户端;
步骤62:虚拟桌面客户端从原显示通道接收显示信息,经过处理渲染,展示显示信息。
其中,所述步骤7包括如下子步骤:
步骤71:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块传递的通道建立指令,建立Stream通道,并发送控制命令给虚拟机内代理模块,告知其开始捕获显卡信息;
步骤72:虚拟机内代理模块接收到控制命令,开始从显卡驱动中捕获显示信息,并将捕获到的显示信息发送给SPICE服务端;
步骤73:SPICE服务端接收到显示信息,通过Stream通道将显示信息发送给虚拟桌面客户端;
步骤74:虚拟桌面客户端从Stream通道接收显示信息,经过处理渲染,展示显示信息。
其中,所述方法还包括:
步骤8:虚拟桌面客户端断开连接,发送断开连接指令;
步骤9:SPICE服务端接收到虚拟桌面客户端的断开连接指令后,根据步骤5中检测到的显卡类型,判断虚拟机内是否为直通物理显卡。
步骤10:若判断结果虚拟机为直通物理显卡,SPICE服务端内的显示信息获取及控制模块向虚拟机内代理模块发送停止捕获显示信息的命令;
步骤11:虚拟机内代理模块接收到停止捕获显示信息的命令,停止从显卡驱动中捕获显示信息,并将结果反馈给SPICE服务端。
其中,所述步骤72中将捕获到的显示信息通过virtIO port发送给SPICE服务端。
(三)有益效果
与现有技术相比较,本发明包括如下区别技术特征:
(1)利用virtIO port在虚拟机和SPICE服务器之间传递显示数据和控制命令。
(2)在客户端能够智能选择并展示两个通道中的显示信息。
(3)通过虚拟机内的代理检测虚拟机使用的显卡类型。
据此,本发明与现有技术相比较,沿用了原有SPICE协议,可自适应物理显卡透传和虚拟显卡两种方式,展示虚拟桌面,与原有***兼容性高。虚拟机通过virtIO与服务端通信,不直接与客户端通信,提高***安全性。
附图说明
图1为本发明技术方案原理示意图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为解决上述技术问题,本发明提供一种基于SPICE协议的智能支持显卡直通和虚拟显卡的显示方法,如图1所示,所述方法基于显示***来实施,所述显示***包括:虚拟机、虚拟桌面客户端、SPICE服务端、物理服务器、虚拟显卡;
所述虚拟机中包括:虚拟机内代理模块、显卡驱动;
所述物理服务器包括物理显卡;
所述SPICE服务端中包括:显示信息获取及控制模块;
所述显示方法包括如下步骤:
步骤1:虚拟机连接虚拟桌面客户端;
步骤2:虚拟机开机过程中,虚拟机内代理模块未启动,虚拟机从虚拟显卡中捕获显示信息,通过原有显示通道发送显示信息给虚拟桌面客户端;
步骤3:虚拟桌面客户端从原显示通道接收显示信息,经过处理和渲染,展示显示信息;
步骤4:虚拟机开机后,虚拟机内代理模块启动,获取显卡驱动信息,检测显卡类型,并将显卡类型信息发送至SPICE服务端内的显示信息获取及控制模块;
步骤5:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块的显卡类型信息,判断显卡类型并保存结果,根据检测到的不同显卡类型,分为以下两种情况:
步骤51:若检测到虚拟机内显卡为虚拟显卡,则进入步骤6:
步骤52:若检测到虚拟机内显卡为直通物理显卡,则进入步骤7:
步骤6:进行虚拟显卡的显示;
步骤7:进行直通物理显卡的显示。
其中,所述步骤6包括如下子步骤:
步骤61:虚拟机从虚拟显卡中捕获到显示信息,通过原显示通道发送显示信息给虚拟桌面客户端;
步骤62:虚拟桌面客户端从原显示通道接收显示信息,经过处理渲染,展示显示信息。
其中,所述步骤7包括如下子步骤:
步骤71:SPICE服务端内的显示信息获取及控制模块接收到虚拟机内代理模块传递的通道建立指令,建立Stream通道,并发送控制命令给虚拟机内代理模块,告知其开始捕获显卡信息;
步骤72:虚拟机内代理模块接收到控制命令,开始从显卡驱动中捕获显示信息,并将捕获到的显示信息发送给SPICE服务端;
步骤73:SPICE服务端接收到显示信息,通过Stream通道将显示信息发送给虚拟桌面客户端;
步骤74:虚拟桌面客户端从Stream通道接收显示信息,经过处理渲染,展示显示信息。
其中,所述方法还包括:
步骤8:虚拟桌面客户端断开连接,发送断开连接指令;
步骤9:SPICE服务端接收到虚拟桌面客户端的断开连接指令后,根据步骤5中检测到的显卡类型,判断虚拟机内是否为直通物理显卡。
步骤10:若判断结果虚拟机为直通物理显卡,SPICE服务端内的显示信息获取及控制模块向虚拟机内代理模块发送停止捕获显示信息的命令;
步骤11:虚拟机内代理模块接收到停止捕获显示信息的命令,停止从显卡驱动中捕获显示信息,并将结果反馈给SPICE服务端。
其中,所述步骤72中将捕获到的显示信息通过virtIO port发送给SPICE服务端。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (5)
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服务端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811265334.6A CN109358951B (zh) | 2018-10-29 | 2018-10-29 | 基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811265334.6A CN109358951B (zh) | 2018-10-29 | 2018-10-29 | 基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109358951A CN109358951A (zh) | 2019-02-19 |
CN109358951B true CN109358951B (zh) | 2021-07-02 |
Family
ID=65346896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811265334.6A Active CN109358951B (zh) | 2018-10-29 | 2018-10-29 | 基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109358951B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918171A (zh) * | 2019-02-22 | 2019-06-21 | 上海映云信息技术有限公司 | 一种基于qemu-kvm硬件设备的标准通信方法 |
CN110336846B (zh) * | 2019-04-15 | 2020-12-08 | 长飞光纤光缆股份有限公司 | 一种基于spice协议的云桌面文件拖拽传输的方法 |
CN110647375A (zh) * | 2019-09-23 | 2020-01-03 | 天津卓朗科技发展有限公司 | 云桌面的图像渲染方法、装置和云服务器 |
CN111901414A (zh) * | 2020-07-27 | 2020-11-06 | 山东超越数控电子股份有限公司 | 基于虚拟化环境的安全桌面传输协议的实现方法及实现*** |
CN114489552B (zh) * | 2022-03-28 | 2022-08-12 | 广东统信软件有限公司 | 远程显示控制***、远程控制界面显示方法及计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154166A (zh) * | 2006-09-25 | 2008-04-02 | 联想(北京)有限公司 | 一种虚拟机***及其显卡访问方法 |
CN100561438C (zh) * | 2006-11-15 | 2009-11-18 | 联想(北京)有限公司 | 一种虚拟机***及其显卡使用方法 |
CN103491188A (zh) * | 2013-09-30 | 2014-01-01 | 上海沃帆信息科技有限公司 | 利用虚拟桌面和gpu透传实现多用户共享图形工作站的方法 |
CN106569877A (zh) * | 2016-11-14 | 2017-04-19 | 中国石油化工股份有限公司 | 一种虚拟机以直通方式共享使用图形工作站gpu的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170004808A1 (en) * | 2015-07-02 | 2017-01-05 | Nvidia Corporation | Method and system for capturing a frame buffer of a virtual machine in a gpu pass-through environment |
-
2018
- 2018-10-29 CN CN201811265334.6A patent/CN109358951B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154166A (zh) * | 2006-09-25 | 2008-04-02 | 联想(北京)有限公司 | 一种虚拟机***及其显卡访问方法 |
CN100561438C (zh) * | 2006-11-15 | 2009-11-18 | 联想(北京)有限公司 | 一种虚拟机***及其显卡使用方法 |
CN103491188A (zh) * | 2013-09-30 | 2014-01-01 | 上海沃帆信息科技有限公司 | 利用虚拟桌面和gpu透传实现多用户共享图形工作站的方法 |
CN106569877A (zh) * | 2016-11-14 | 2017-04-19 | 中国石油化工股份有限公司 | 一种虚拟机以直通方式共享使用图形工作站gpu的方法 |
Non-Patent Citations (2)
Title |
---|
Implementation of GPU virtualization using PCI pass-through mechanism;Chao-Tung Yang;《The Journal of Supercomputing》;20131031;第68卷;第183-213页 * |
基于虚拟化的***安全增强及显卡透传研究;侯建宁;《计算机工程》;20120430;第38卷(第8期);第224-231页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109358951A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109358951B (zh) | 基于spice协议的智能支持显卡直通和虚拟显卡的显示方法 | |
US20220291892A1 (en) | Display Control Method and Apparatus | |
CN105260153B (zh) | 图像输出装置和图像输出方法 | |
JP3833483B2 (ja) | 画像表示システム、画像データ送信装置、表示画像データ送信方法、差分転送方法、プログラム、および記憶媒体 | |
CN112073758B (zh) | 一种云桌面投屏方法、装置、计算机设备、计算机可读存储介质及云桌面投屏交互*** | |
WO2016197862A1 (zh) | 一种数据传输方法、装置和智能电视*** | |
WO2014089793A1 (zh) | 一种视频重定向的方法、装置、***及计算机可读介质 | |
WO2016202102A1 (zh) | 消息传输方法及装置 | |
CN108206842B (zh) | 云桌面远程接入方法和*** | |
WO2016197863A1 (zh) | 一种客户端、智能电视***和相应的数据传输方法 | |
CN101316203B (zh) | 嵌入式ip终端网络连接状态监测方法 | |
CN104301687A (zh) | 应用于虚拟桌面环境的摄像头视频处理方法和相应设备 | |
WO2023020025A1 (zh) | 投屏方法和电子设备 | |
CN103677701A (zh) | 大屏同步显示的方法及*** | |
WO2014121477A1 (zh) | 一种视频重定向的方法、装置、***及计算机可读介质 | |
US11979941B2 (en) | Data transmission method and terminal | |
CN102546803A (zh) | 基于能力集的远端桌面通信方法 | |
CN101707622A (zh) | 实现远程数据监控的方法 | |
US20230153137A1 (en) | Remote rendering system, method and device based on virtual mobile architecture | |
WO2023109895A1 (zh) | 对象的分享方法、装置、电子设备以及存储介质 | |
CN112839097A (zh) | 远程控制方法、设备及*** | |
CN110928707A (zh) | 一种宿主机和虚拟机的数据交换方法及相关装置 | |
CN115052043A (zh) | 一种云桌面的视频传输方法、电子设备、装置及介质 | |
CN102902504B (zh) | 嵌入式图像控制平台计算机底图信号的连接***及方法 | |
CN207625719U (zh) | 一种便捷式无线传屏协作设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |