CN109697102A - 一种实现虚拟机桌面访问的方法及装置 - Google Patents
一种实现虚拟机桌面访问的方法及装置 Download PDFInfo
- Publication number
- CN109697102A CN109697102A CN201710995975.6A CN201710995975A CN109697102A CN 109697102 A CN109697102 A CN 109697102A CN 201710995975 A CN201710995975 A CN 201710995975A CN 109697102 A CN109697102 A CN 109697102A
- Authority
- CN
- China
- Prior art keywords
- display adapter
- data
- gpu
- frame buffer
- simulation
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004088 simulation Methods 0.000 claims abstract description 58
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims description 9
- 230000006978 adaptation Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 4
- 238000000151 deposition Methods 0.000 claims description 3
- 230000001934 delay Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007257 malfunction Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 235000015170 shellfish Nutrition 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本文公开了一种实现虚拟机桌面访问的方法及装置;虚拟机包括模拟的显示适配器以及GPU直通的显示适配器,上述方法包括:在GPU直通的显示适配器可用时,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内。
Description
技术领域
本申请涉及但不限于通信领域,尤其涉及一种实现虚拟机桌面访问的方法及装置。
背景技术
虚拟机(VM,Virtual Machine)是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。随着虚拟机技术的不断发展,以部署在服务器上的虚拟机为例,虚拟机可以实现直接访问服务器的GPU(Graphics Process Unit,图形处理单元),即GPU直通虚拟机。然而,在GPU直通虚拟机的场景下,只能通过特定的协议(比如,微软的远程桌面协议、思杰(Citrix)的HDX(High Definition Experience,高清使用体验)协议)访问虚拟机桌面,无法兼容其它的虚拟机桌面访问方式。
发明内容
本申请的一个方面提供一种方法,虚拟机包括模拟的显示适配器以及GPU直通的显示适配器;上述方法包括:在GPU直通的显示适配器可用时,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内。
附图说明
在附图中通过示例而非限制的方式进行说明。为了简单和清楚说明,附图中说明的元件并不需按照比例画出。例如,为清楚起见,一些元件的尺寸可能相对于其他元件被夸大。此外,在认为适当时,在附图中重复附图标记以便指明相应或类似的元件。
图1为本申请的一种实施示意图;
图2为本申请提供的方法的一种示意图;
图3为本申请提供的方法的另一种示意图;
图4为根据本申请的系统的示例图。
具体实施方式
以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。
虽然本申请的范围易受各种修改和替代形式的影响,但其具体实施例已通过附图中的示例显示,并将在此详细描述。可以理解的是,本申请的范围不受披露的实施例的限制,相反本申请意图覆盖与本申请的精神和权利要求书一致的各种修改、等同和替代形式。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指明所描述的实施例可包括具体的特征、结构或特性,但是每个实施例可以不需包括该具体的特征、结构或特性。此外,当结合一个实施例描述具体的特征、结构或特性时,谨提出,在本领域技术人员的知识范围内,可以结合其他实施例来实施这种特征、结构或特性(无论其是否被详细描述)。另外,“A、B及C中至少一个”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、或者(A、B和C)。类似地,“A、B或C中至少一个”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、或者(A、B和C)。“A/B”表示“A或B”。“A和/或B”表示(A)、(B)、或者(A和B)。
本申请实施例可以按照硬件、固件、软件或其结合来实现。本申请实施例还可以通过携带或存储在一个或多个暂存或非暂存机器可读介质(例如,计算机可读介质)上的指令实现,指令可由一个或多个处理器读出或执行。机器可读介质可以由任一存储装置、机构、或其他物理结构实现,用于通过机器可读方式存储或传输信息(比如,易失性或非易失性存储器、媒体光盘、或者其他媒体装置)。
其中,计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在附图中,一些结构或方法的特点可以表现在具体安排和/或排序。然而,应该认识到这样的具体安排和/或排序可能不需要。相反,在一些实施例中,这些特征可以以不同的方式和/或顺序排列,而不是示例性附图所示。此外,在特定附图中包含结构或方法特征并不意味着在所有实施例中需要这样的特征,并且在某些实施例中,可能不包括或可能与其他特征相结合。
图1为本申请的一种实施示意图。其中,以KVM(Kernel-based Virtual Machine,核心虚拟机)虚拟化场景为例进行说明。在其他实现方式中,也可以在Xen虚拟化架构下部署虚拟机。
在KVM虚拟化场景下,服务器10上可以部署一个或多个虚拟机(VM),比如VM100、VM102。然而,本申请对此并不限定。在其他实现方式中,一个或多个虚拟机也可以部署在客户端计算设备(比如,个人电脑或可携式电脑等电子设备)上。
Hypervisor104又称VMM(Virtual Machine Monitor,虚拟机监视器),是运行在服务器10和虚拟机(比如VM100、VM102)之间的一个软件层。Hypervisor104基于服务器10的硬件资源给虚拟机(比如,VM100、VM102)提供了一个虚拟的操作平台并管理虚拟机的执行,不同的虚拟机独立运行并共享服务器10的所有硬件资源。
在KVM虚拟化场景中,Hypervisor104可以主要涵盖以下两个重要组成部分:Linux内核的KVM模块1042、提供硬件仿真的模拟器(Qemu,Quick Emulator)1044。KVM模块1042用于提供物理中央处理单元(CPU,Central Processing Unit)到虚拟CPU的映射。Qemu1044用于模拟虚拟机(比如,VM100、VM102)内的各种设备,例如,网络设备、图形适配器、磁盘等。然而,本申请对此并不限定。在其他实现方式中,KVM模块和Qemu可以分别作为独立的Hypervisor。比如,Qemu可以独立地通过模拟来创建和管理虚拟机。
在KVM虚拟化场景下,管理和访问虚拟机可以通过VNC(Virtual NetworkConsole,虚拟网络控制台)访问Qemu1044模拟的虚拟显示适配器(如图1中的显示适配器1004)来实现。其中,VNC是基于UNIX和Linux操作系统的免费开源软件。VNC可以包括以下两个部分:客户端的应用程序Vncviewer、服务端的应用程序Vncserver。Vncviewer可以安装在与服务器10存在网络连接的客户端上,Vncserver可以安装在服务器10上,比如集成在Qemu1044中。Vncviewer向Vncserver发送访问请求,Vncserver接收访问请求后,从Qemu1044模拟的虚拟显示适配器1004获取数据,并将获取的数据通过VNC通信协议发送给Vncviewer,以实现在客户端对虚拟机的访问。
硬件106可以包括一个或多个处理器(比如,GPU1062)、存储器、输入/输入设备等。输入/输出设备可以包括网络介面,用于通过网络传输数据。如图1所示,GPU1062可以直通虚拟机的显示适配器1002。
虽然Qemu可以模拟虚拟机的各种设备,但是有些设备(比如,GPU)通过Qemu模拟会带来巨大的资源开销,并且这些设备的功能实现复杂,使用软件模拟不能达到满意的效果。而且,目前Qemu模拟的显示设备功能比较简单,只能支持二纬(2D)桌面,对于一些依赖三维(3D)、OpenGL(Open Graphics Library,开放图形库)、OpenCL(Open Computing Language,开放计算语言)等功能的应用则在虚拟机上无法运行。
以图1中的虚拟机100的操作系统为windows系统为例进行说明,然而,本申请对此并不限定。当服务器10的GPU1062直通到虚拟机100时(即虚拟机100可以直接访问服务器10的GPU1062),虚拟机100内部会有至少两个虚拟显示适配器,如图1中的显示适配器1002和显示适配器1004。而且,虚拟机100内部的每个显示适配器都有一个帧缓存(Framebuffer),用于存放虚拟机系统的桌面数据。
其中,显示适配器1004是服务器10上的Qemu1044模拟的虚拟显示适配器,虚拟机系统会将显示适配器1004识别成一个非标准的显示适配器;显示适配器1002是GPU1062直通的虚拟显示适配器,虚拟机系统会将显示适配器1002识别成一个标准显示适配器。当虚拟机100直通的GPU1062生效后(比如,安装GPU专有驱动程序后),通过GPU1062可以提供虚拟机100桌面显示的硬件加速,此时,虚拟机系统会默认使用GPU1062直通的标准显示适配器(即显示适配器1002),而屏蔽Qemu1044模拟的非标准显示适配器(即显示适配器1004),即显示适配器1004的帧缓存内没有桌面数据,如此,导致在使用VNC访问Qemu1044模拟的显示适配器1004的Framebuffer时,获得不到虚拟机桌面内容而显示黑屏,造成无法访问虚拟机桌面,无法进入虚拟机系统。
在GPU直通虚拟机的场景下,客户端只能通过远程连接等虚拟机内部的桌面协议(比如微软的远程桌面协议,思杰(Citrix)的HDX(High Definition Experience高清使用体验)协议等)登录虚拟机,但是这种方式完全依赖虚拟机的网络进行连接。在这种情况下,当虚拟机断网或者负载过高导致无法通过远程协议登录虚拟机时,会给GPU直通虚拟机场景的维护带来很大的挑战。比如,在部署虚拟机或维护虚拟机时(特别是在大规模部署虚拟机的情况下),在虚拟机出现故障或者是简单禁用虚拟机的网络设备导致网络不通时,由于无法登录虚拟机,将给运维工作带来困难。目前常用的处理方法为:先关闭虚拟机,将直通的GPU设备从服务器拔除掉,再启动虚拟机,通过服务器上VNC端口进入虚拟机查看故障;或者,重启虚拟机,进入虚拟机系统的安全模式后查看故障。然而,上述处理方法需要关闭虚拟机,有造成虚拟机内部数据丢失和破坏故障现场的风险,造成运维人员无法及时发现和排除故障。
如图1所示,以虚拟机100为例进行说明。通过虚拟机100的显示控制1006可以实现本申请的方法。其中,显示适配器检测单元1008可以检测显示适配器1002(即GPU1062直通的显示适配器)是否可用(即显示适配器1002是否正常工作);数据同步单元1010可以在显示适配器检测单元1008检测到显示适配器1002可用时,将显示适配器1002的帧缓存内的数据同步到显示适配器1004的帧缓存内。如此,客户端能够通过VNC访问显示适配器1004实现访问虚拟机100。比如,客户端的应用程序Vncviewer向集成在Qemu1044中的Vncserver发送访问请求,Vncserver接收访问请求后,从显示适配器1004获取桌面数据,并将获取的桌面数据通过VNC通信协议发送给Vncviewer,以实现在客户端对虚拟机桌面的访问;客户端也可以通过特定协议访问显示适配器1002实现访问虚拟机100的桌面。
如图1所示,客户端通过网络访问虚拟机100有以下两个途径:(1)通过虚拟机100自身的网络,通过远程桌面、PCoIP(PC over IP)、思杰的HDX等桌面协议访问GPU1062直通的显示适配器1002;(2)通过服务器10的网络采用VNC协议访问服务器10的Qemu1044模拟的显示适配器1004,在这种方式下,不管虚拟机100是否配置网络都可访问到。如此,在直通虚拟机的GPU1062出现问题或者虚拟机100的网络不通时,可以通过VNC访问显示适配器1004登录虚拟机,从而提高虚拟机访问的可靠性,对GPU直通的虚拟机提供可靠的故障排查手段,可以及时地发现和排除故障,提升用户服务体验。
其中,当虚拟机100内的显示适配器1002正常工作时,虚拟机系统使用显示适配器1002提供桌面显示,而把显示适配器1004设置为不可用设备。当GPU1062出现问题时,显示适配器1002无法正常工作时,虚拟机系统会认为显示适配器1002是不可用设备,重新将Qemu1044模拟的显示适配器1004设置为默认的显示设备。
由于显示适配器1002的帧缓存中的数据是GPU1062已经绘制好的桌面数据,因此,显示适配器1002存储的桌面数据可以具有3D效果,则同步到显示适配器1004的帧缓存内的桌面数据可以依然保证3D特性。
在示例性实施方式中,数据同步单元1010可以用于通过以下方式将显示适配器1002的帧缓存内的数据同步到显示适配器1004的帧缓存内:周期性获取显示适配器1002的帧缓存内的数据;比较本周期获取的数据与上一周期获取的数据是否一致;若不一致,则将本周期获取的数据复制到显示适配器1004的帧缓存内。
其中,数据同步单元1010,还可以用于确定显示适配器1002的帧缓存内的数据地址和大小,确定显示适配器1004存储数据的地址。其中,数据同步单元1010可以用于通过以下方式确定显示适配器1002的帧缓存内的数据地址和大小:根据显示适配器1002的帧缓存的地址信息,确定显示适配器1002的帧缓存内的数据地址;根据虚拟机分辨率信息以及显示适配器1002的存储位数,确定显示适配器1002的帧缓存内的数据大小。数据同步单元1010可以用于通过以下方式确定显示适配器1004存储数据的地址:根据显示适配器1004的帧缓存的地址信息,确定显示适配器1004存储数据的地址。
图2为本申请提供的方法的一种示意图。其中,虚拟机包括GPU直通的显示适配器和由Qemu模拟的显示适配器。
如图2所示,在方块201,判断GPU直通的显示适配器是否可用,即判断GPU直通的显示适配器是否正常工作,例如,判断虚拟机直通的GPU是否生效、是否正常运行等。在方块202,在GPU直通的显示适配器正常工作时,将GPU直通的显示适配器的帧缓存内的数据同步到由Qemu模拟的显示适配器的帧缓存内。在方块201判断出GPU直通的显示适配器不可用(比如,虚拟机直通的GPU出现故障)时,则无需进行两个显示适配器的数据同步。
在本实施例中,在GPU直通的显示适配器可用时,将GPU直通的显示适配器的数据同步至由Qemu模拟的显示适配器的帧缓存之后,可以支持客户端通过VNC访问由Qemu模拟的显示适配器时,获取到帧缓冲内的数据,从而实现访问虚拟机桌面,进入虚拟机系统。
图3为本申请提供的方法的另一种示意图。如图3所示,在方块301,进行同步初始化处理;其中,可以获取虚拟机内部两个显示适配器的帧缓存(Framebuffer)的地址信息,根据GPU直通的显示适配器的Framebuffer的地址信息以及虚拟机分辨率信息,得到需要拷贝的数据地址和大小;根据由Qemu模拟的显示适配器的Framebuffer的地址,确定需要将拷贝的数据复制到哪里。地址信息可以包括帧缓存的起始地址和结束地址。GPU直通的显示适配器内存储的数据大小可以根据虚拟机的桌面分辨率以及该显示适配器的存储位数确定。
在方块302,判断GPU直通的显示适配器是否可用。其中,若GPU直通的显示适配器可用,则可以进行GPU直通的显示适配器和由Qemu模拟的显示适配器之间的数据同步;若GPU直通的显示适配器不可用(比如,GPU出现故障导致GPU直通的显示适配器无法正常工作),则虚拟机系统会认为其是不可用设备,此时,无法获取到GPU直通的显示适配器的Framebuffer内的数据,则不进行两个显示适配器之间的数据同步。换言之,本实施例仅在GPU直通的显示适配器内存在可用的数据时,将GPU直通的显示适配器内的数据同步到由Qemu模拟的显示适配器。
在方块303,周期性获取GPU直通的显示适配器的Framebuffer内的数据。其中,可以根据方块301确定的数据地址和大小,获取数据。
在方块304,将本周期获取的数据和上一周期获取的数据进行比较;如果有变化,则将数据写入由Qemu模拟的显示适配器的Framebuffer内(即方块305),覆盖掉由Qemu模拟的显示适配器的Framebuffer内之前存储的数据;如果本周期读取的数据和上一周期获取的数据没有变化,则延迟周期时长(比如50ms)(即方块306),再次读取GPU直通的显示适配器的Framebuffer内的数据。需要说明的是,在第一个周期获取数据后,需要将数据直接写入由Qemu模拟的显示适配器的Framebuffer内。
在一实施例中,将周期时长设置为50ms。由于通过VNC的访问一般只做虚拟机的管理和维护,对桌面显示质量要求不高,因此,可以设置周期为50ms,则在1秒有20次的帧率(Frame rate,单位为每秒显示帧数(Frames per Second,FPS)),保证一定的显示效果。然而,本申请对此并不限定。如果对帧率有要求可以动态更改周期时长。
在图3所示的实施例中,在每个周期获取到GPU直通的显示适配器的帧缓存内的数据之后,需要比较本周期获取的数据与上一周期获取的数据是否相同,在数据发生变化时,将本周期获取的数据复制到由Qemu模拟的显示适配器的Framebuffer内。然而,本申请对此并不限定。在其他实施例中,在每个周期获取到GPU直通的显示适配器的帧缓存内的数据后,无需与上一周期获取的数据进行比较,可以直接将本周期获取的数据复制到由Qemu模拟的显示适配器的Framebuffer内。
在实际应用中,本申请提供的方法可以以一种系统服务的方式运行在虚拟机内部,周期性将GPU直通的显示适配器的Framebuffer内的数据复制到由Qemu模拟的显示适配器的Framebuffer,从而实现在GPU直通的显示适配器可用时,可以支持客户端通过VNC访问由Qemu模拟的显示适配器进入虚拟机。
综上可知,本申请提供一种同步虚拟机内GPU直通的显示适配器的Framebuffer内的数据至Qemu模拟的显示适配器的Framebuffer的方案,使得客户端能够通过VNC访问Qemu模拟的显示适配器的Framebuffer方式进入GPU直通的虚拟机,能够在保留直通GPU的硬件加速的能力下同时提供可靠的虚拟机桌面访问的能力。而且,对GPU直通的虚拟机提供可靠的故障排查手段,可以及时地发现和排除故障,提高GPU直通的虚拟机的维护效率,提高服务质量和稳定性,提升用户服务体验。特别地,在大规模部署虚拟机的情况下,增加故障检测服务的稳定性和服务接口的一致性,从而节约成本。
此外,本申请实施例还提供一种方法,包括:在虚拟机包括的第一显示适配器可用时,将第一显示适配器的帧缓存内的数据同步到虚拟机包括的第二显示适配器的帧缓存内。其中,第一显示适配器可以包括GPU直通的显示适配器;第二显示适配器可以包括模拟的显示适配器,比如由Qemu模拟的显示适配器。示例性地,将第一显示适配器的帧缓存内的数据同步到虚拟机包括的第二显示适配器的帧缓存内,可以包括:周期性获取第一显示适配器的帧缓存内的数据;比较本周期获取的数据与上一周期获取的数据是否一致;若不一致,则将本周期获取的数据复制到第二显示适配器的帧缓存内。
关于本实施例的方法的说明可以参照上述实施例中对GPU直通的显示适配器和由Qemu模拟的显示适配器之间的数据同步处理的说明,故于此不再赘述。
图4为根据各种实施例的一系统400的示例图。系统400可包含一个或多个处理器404、与处理器404中的至少一个耦合的系统控制逻辑408、与系统控制逻辑408耦合的系统存储器(memory)412、与系统控制逻辑408耦合的非易失存储器(NVM,Non-VolatileMemory)/存储装置(storage)416、与系统控制逻辑408耦合的网络接口420以及与系统控制逻辑408耦合的输入/输出(I/O)装置432。
处理器404可以包括一个或多个单核或多核处理器。处理器404可包括通用处理器和专用处理器(例如,图形处理器、应用处理器、基带处理器等)的任意组合。
在一实施例中,系统控制逻辑408可包括任何适合的接口控制器,用于提供任何适合的接口给处理器404中的至少一个和/或与系统控制逻辑408通信的任何适合的装置或部件。
在一实施例中,系统控制逻辑408可以包括一或多个存储器控制器,用于提供接口给系统存储器412。系统存储器412可以用于加载和存储给系统400的数据和/或指令,例如指令424。在一实施例中,系统存储器412可以包括任意合适的易失性存储器,例如适合的动态随机存取存储器(DRAM)等。
NVM/存储装置416可以包括一或多个有形的非暂时计算机可读介质,用于存储数据和/或指令,例如指令424。NVM/存储装置416可以包括任意合适的非易失性存储器,比如闪速存储器等,和/或可包括任意合适的非易失性存储装置,比如一个或多个硬盘驱动器(HDDs)、一个或多个压缩盘(CD)驱动器,和/或一个或多个数字多用途盘(DVD)驱动器等。
NVM/存储装置416可包括物理上是系统400安装在其上的装置的一部分的存储资源,或者它能够由该装置访问而不必定为该装置的一部份。例如,NVM/存储装置416可经由网络接口420通过网络指令和/或通过输入/输出装置432访问。
当由处理器404中的一个或多个执行指令424时,可引起系统400实施如图2或图3所述的方法。在各种实施例中,指令424,或其硬件、固体、和/或软件部份,可设置在系统400的另外/备选元件中。
网络接口420可以具有一收发器来提供无线电接口给系统400,用于通过一或多个网络通信和/或与任意其他适合的装置通信。在各种实施例中,收发器可以与系统400的其他部件集成。例如,收发器可以包括处理器404的处理器、系统存储器412的存储器和NVM/存储装置416的NVM/存储装置。网络接口420可包括任意合适的硬件和/或固体。网络接口420可包括多个天线,用于提供多个输入、多个输出无线电接口。在一实施例中,网络接口420可以包括:有线网络适配器、无线网络适配器、电话调制解调器和/或无线调制解调器。
在一实施例中,处理器404的至少一个可与系统控制逻辑408的一个或多个控制器的逻辑封装在一起。在一实施例中,处理器404的至少一个可与系统控制逻辑408的一个或多个控制器的逻辑封装在一起来形成系统级封装(SiP)。在一实施例中,处理器404中的至少一个可集成在与系统控制逻辑408的一或多个控制器的逻辑相同的芯片上。在一实施例中,处理器404的至少一个可集成在与系统控制逻辑408的一或多个控制器的逻辑相同的芯片上来形成芯片上系统(SoC)。
在各种实施例中,输入/输出装置432可包括设计成实现与系统400的用户交互的用户界面、设计成实现与系统400的外围部件交互的外围部件接口和/或设计成确定涉及系统400的环境条件和/或位点信息的传感器。
在各种实施例中,用户界面可以包括但不限于:显示器(例如,液晶显示器、触摸屏显示器等)、扬声器、麦克风、一个或多个拍摄装置(例如,照相机和/或摄像机)、闪光灯(例如,发光二极管闪光灯)、以及键盘。
在各种实施例中,外围部件接口可以包括但不限于:非易失性存储器端口、通用串行总线(USB)端口、音频插口以及电力供应接口。
在各种实施例中,传感器可以包括但不限于:陀螺仪传感器、加速度计、接近传感器、环境光传感器以及定位单元。定位单元也可为网络接口420的一部份或者与网络接口420交互来与例如全球定位系统(GPS)卫星的定位网络的部件通信。
在各种实施例中,系统400可以是移动计算装置。在各种实施例中,系统400可具有更多或更少的部件,和/或不同的架构。
下面通过多个示例实施例进行说明。
在示例实施例一中,一种方法,虚拟机包括模拟的显示适配器以及GPU直通的显示适配器,上述方法包括:在GPU直通的显示适配器可用时,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内。
在示例实施例二中,根据示例实施例一所述的方法,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内,可以包括:周期性获取GPU直通的显示适配器的帧缓存内的数据;比较本周期获取的数据与上一周期获取的数据是否一致;若不一致,则将本周期获取的数据复制到模拟的显示适配器的帧缓存内。
在示例实施例三中,根据示例实施例一或二所述的方法,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内之前,上述方法还可以包括:确定GPU直通的显示适配器的帧缓存内的数据地址和大小;确定模拟的显示适配器存储数据的地址。
在示例实施例四中,根据示例实施例三所述的方法,确定GPU直通的显示适配器的帧缓存内的数据地址和大小,可以包括:根据GPU直通的显示适配器的帧缓存的地址信息,确定GPU直通的显示适配器的帧缓存内的数据地址;根据虚拟机分辨率信息以及GPU直通的显示适配器的存储位数,确定GPU直通的显示适配器的帧缓存内的数据大小;确定模拟的显示适配器存储数据的地址,可以包括:根据模拟的显示适配器的帧缓存的地址信息,确定模拟的显示适配器存储数据的地址。
在示例实施例五中,一种装置,其上部署有虚拟机,所述虚拟机包括模拟的显示适配器以及GPU直通的显示适配器,所述装置包括:显示适配器检测单元,用于检测GPU直通的显示适配器是否可用;数据同步单元,用于在GPU直通的显示适配器可用时,将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内。
在示例实施例六中,根据示例实施例五所述的装置,数据同步单元用于通过以下方式将GPU直通的显示适配器的帧缓存内的数据同步到模拟的显示适配器的帧缓存内:周期性获取GPU直通的显示适配器的帧缓存内的数据;比较本周期获取的数据与上一周期获取的数据是否一致;若不一致,则将本周期获取的数据复制到模拟的显示适配器的帧缓存内。
在示例实施例七中,根据示例实施例五或六所述的装置,数据同步单元,还用于确定GPU直通的显示适配器的帧缓存内的数据地址和大小;确定模拟的显示适配器存储数据的地址。
在示例实施例八中,根据示例实施例七所述的装置,数据同步单元可以用于通过以下方式确定GPU直通的显示适配器的帧缓存内的数据地址和大小:根据GPU直通的显示适配器的帧缓存的地址信息,确定GPU直通的显示适配器的帧缓存内的数据地址,根据虚拟机分辨率信息以及GPU直通的显示适配器的存储位数,确定GPU直通的显示适配器的帧缓存内的数据大小;数据同步单元可以用于通过以下方式确定模拟的显示适配器存储数据的地址:根据模拟的显示适配器的帧缓存的地址信息,确定模拟的显示适配器存储数据的地址。
在示例实施例九中,一种存储有多个指令的机器可读介质,当多个指令被一个或多个处理器执行时,使得部署有虚拟机的装置实现示例实施例一至四任一方面所述的方法。
在示例实施例十中,一种系统,包括:一个或多个处理器,其中,所述处理器至少包括GPU;以及一个或多个存储有多个指令的机器可读介质,当多个指令被一个或多个处理器执行时,使得系统实现示例实施例一至四任一方面所述的方法。
在示例实施例十一中,一种方法,包括:在虚拟机包括的第一显示适配器可用时,将第一显示适配器的帧缓存内的数据同步到虚拟机包括的第二显示适配器的帧缓存内。
在示例实施例十二中,根据示例实施例十一所述的方法,第一显示适配器包括GPU直通的显示适配器;第二显示适配器包括模拟的显示适配器。
在示例实施例十三中,根据示例实施例十一或十二所述的方法,将第一显示适配器的帧缓存内的数据同步到虚拟机包括的第二显示适配器的帧缓存内,可以包括:周期性获取第一显示适配器的帧缓存内的数据;比较本周期获取的数据与上一周期获取的数据是否一致;若不一致,则将本周期获取的数据复制到第二显示适配器的帧缓存内。
以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。
Claims (13)
1.一种方法,其特征在于,虚拟机包括模拟的显示适配器以及图形处理单元GPU直通的显示适配器,所述方法包括:
在GPU直通的显示适配器可用时,将所述GPU直通的显示适配器的帧缓存内的数据同步到所述模拟的显示适配器的帧缓存内。
2.根据权利要求1所述的方法,其特征在于,所述将所述GPU直通的显示适配器的帧缓存内的数据同步到所述模拟的显示适配器的帧缓存内,包括:
周期性获取所述GPU直通的显示适配器的帧缓存内的数据;
比较本周期获取的数据与上一周期获取的数据是否一致;
若不一致,则将本周期获取的数据复制到所述模拟的显示适配器的帧缓存内。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述GPU直通的显示适配器的帧缓存内的数据同步到所述模拟的显示适配器的帧缓存内之前,所述方法还包括:
确定所述GPU直通的显示适配器的帧缓存内的数据地址和大小;
确定所述模拟的显示适配器存储数据的地址。
4.根据权利要求3所述的方法,其特征在于,所述确定所述GPU直通的显示适配器的帧缓存内的数据地址和大小,包括:
根据所述GPU直通的显示适配器的帧缓存的地址信息,确定所述GPU直通的显示适配器的帧缓存内的数据地址;
根据虚拟机分辨率信息以及所述GPU直通的显示适配器的存储位数,确定所述GPU直通的显示适配器的帧缓存内的数据大小;
所述确定所述模拟的显示适配器存储数据的地址,包括:
根据所述模拟的显示适配器的帧缓存的地址信息,确定所述模拟的显示适配器存储数据的地址。
5.一种装置,其特征在于,所述装置上部署有虚拟机,所述虚拟机包括模拟的显示适配器以及图形处理单元GPU直通的显示适配器,所述装置包括:
显示适配器检测单元,用于检测GPU直通的显示适配器是否可用;
数据同步单元,用于在所述GPU直通的显示适配器可用时,将所述GPU直通的显示适配器的帧缓存内的数据同步到所述模拟的显示适配器的帧缓存内。
6.根据权利要求5所述的装置,其特征在于,所述数据同步单元用于通过以下方式将所述GPU直通的显示适配器的帧缓存内的数据同步到所述模拟的显示适配器的帧缓存内:
周期性获取所述GPU直通的显示适配器的帧缓存内的数据;
比较本周期获取的数据与上一周期获取的数据是否一致;
若不一致,则将本周期获取的数据复制到所述模拟的显示适配器的帧缓存内。
7.根据权利要求5或6所述的装置,其特征在于,所述数据同步单元,还用于确定所述GPU直通的显示适配器的帧缓存内的数据地址和大小;确定所述模拟的显示适配器存储数据的地址。
8.根据权利要求7所述的装置,其特征在于,所述数据同步单元用于通过以下方式确定所述GPU直通的显示适配器的帧缓存内的数据地址和大小:根据所述GPU直通的显示适配器的帧缓存的地址信息,确定所述GPU直通的显示适配器的帧缓存内的数据地址;根据虚拟机分辨率信息以及所述GPU直通的显示适配器的存储位数,确定所述GPU直通的显示适配器的帧缓存内的数据大小;
所述数据同步单元用于通过以下方式确定所述模拟的显示适配器存储数据的地址:根据所述模拟的显示适配器的帧缓存的地址信息,确定所述模拟的显示适配器存储数据的地址。
9.一种存储有多个指令的机器可读介质,当所述多个指令被一个或多个处理器执行时,使得部署有虚拟机的装置实现权利要求1至4中任一项所述的方法。
10.一种系统,其特征在于,包括:
一个或多个处理器;其中,所述处理器至少包括图形处理单元GPU;
一个或多个存储有多个指令的机器可读介质,当所述多个指令被所述一个或多个处理器执行时,使得所述系统实现权利要求1至4中任一项所述的方法。
11.一种方法,其特征在于,包括:
在虚拟机包括的第一显示适配器可用时,将所述第一显示适配器的帧缓存内的数据同步到所述虚拟机包括的第二显示适配器的帧缓存内。
12.根据权利要求11所述的方法,其特征在于,所述第一显示适配器包括图形处理单元GPU直通的显示适配器;所述第二显示适配器包括模拟的显示适配器。
13.根据权利要求11或12所述的方法,其特征在于,所述将所述第一显示适配器的帧缓存内的数据同步到所述虚拟机包括的第二显示适配器的帧缓存内,包括:
周期性获取所述第一显示适配器的帧缓存内的数据;
比较本周期获取的数据与上一周期获取的数据是否一致;
若不一致,则将本周期获取的数据复制到所述第二显示适配器的帧缓存内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710995975.6A CN109697102A (zh) | 2017-10-23 | 2017-10-23 | 一种实现虚拟机桌面访问的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710995975.6A CN109697102A (zh) | 2017-10-23 | 2017-10-23 | 一种实现虚拟机桌面访问的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109697102A true CN109697102A (zh) | 2019-04-30 |
Family
ID=66226069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710995975.6A Pending CN109697102A (zh) | 2017-10-23 | 2017-10-23 | 一种实现虚拟机桌面访问的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109697102A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166367A (zh) * | 2023-04-25 | 2023-05-26 | 麒麟软件有限公司 | 提升显示帧缓存图像读取效率的方法 |
US11797323B2 (en) | 2020-09-15 | 2023-10-24 | The Boeing Company | Virtual machine for virtualizing graphics functions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135866A (zh) * | 2010-10-29 | 2011-07-27 | 华南理工大学 | 一种基于Xen安全计算机显示优化的方法 |
US20150082179A1 (en) * | 2013-09-13 | 2015-03-19 | American Megatrends, Inc. | Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween |
CN105373412A (zh) * | 2014-08-20 | 2016-03-02 | 萨摩亚商铄心系统股份有限公司 | 虚拟机图形产生方法及系统 |
CN106293781A (zh) * | 2015-05-15 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 在线升级机器虚拟器的方法与设备 |
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 |
-
2017
- 2017-10-23 CN CN201710995975.6A patent/CN109697102A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135866A (zh) * | 2010-10-29 | 2011-07-27 | 华南理工大学 | 一种基于Xen安全计算机显示优化的方法 |
US20150082179A1 (en) * | 2013-09-13 | 2015-03-19 | American Megatrends, Inc. | Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween |
CN105373412A (zh) * | 2014-08-20 | 2016-03-02 | 萨摩亚商铄心系统股份有限公司 | 虚拟机图形产生方法及系统 |
CN106293781A (zh) * | 2015-05-15 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 在线升级机器虚拟器的方法与设备 |
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 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11797323B2 (en) | 2020-09-15 | 2023-10-24 | The Boeing Company | Virtual machine for virtualizing graphics functions |
CN116166367A (zh) * | 2023-04-25 | 2023-05-26 | 麒麟软件有限公司 | 提升显示帧缓存图像读取效率的方法 |
CN116166367B (zh) * | 2023-04-25 | 2023-07-04 | 麒麟软件有限公司 | 提升显示帧缓存图像读取效率的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10074206B1 (en) | Network-optimized graphics library for virtualized graphics processing | |
US11164280B2 (en) | Graphics layer processing in a multiple operating systems framework | |
CN109154849B (zh) | 包括核心层、用户接口和配备有基于容器的用户空间的服务层的超融合系统 | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US9830176B2 (en) | Methods, systems, and media for binary compatible graphics support in mobile operating systems | |
US20150339216A1 (en) | Providing Testing Environments Using Virtualization | |
US20180074843A1 (en) | System, method, and computer program product for linking devices for coordinated operation | |
US20180074956A1 (en) | Method, apparatus, and electronic device for modifying memory data of a virtual machine | |
US10102605B1 (en) | Graphics library virtualization for virtualized graphics processing | |
CN112154421A (zh) | 云平台实验系统 | |
CN114138423B (zh) | 基于国产gpu显卡的虚拟化构建系统及方法 | |
CN112579254B (zh) | 图形处理器的仿真方法、装置、电子设备和存储介质 | |
US9471357B2 (en) | Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween | |
US10733689B2 (en) | Data processing | |
KR101249735B1 (ko) | 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 | |
WO2012138046A1 (ko) | 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 | |
US20170083387A1 (en) | High-performance computing framework for cloud computing environments | |
WO2023226197A1 (zh) | 基于kubernetes的云原生存储方法、装置、设备及介质 | |
CN116508001A (zh) | 卸载容器执行环境 | |
CN109697102A (zh) | 一种实现虚拟机桌面访问的方法及装置 | |
CN111654539B (zh) | 基于云原生的物联网操作系统构建方法、系统及电子设备 | |
CN103677792A (zh) | 一种基于龙芯平台Linux操作系统下rdesktop的优化方法 | |
CN114237814A (zh) | 跨虚拟化平台的虚拟机迁移方法、装置和计算机设备 | |
US10936389B2 (en) | Dual physical-channel systems firmware initialization and recovery | |
CN113835816A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190430 |