CN107423115B - 显卡虚拟化的方法、装置和系统 - Google Patents

显卡虚拟化的方法、装置和系统 Download PDF

Info

Publication number
CN107423115B
CN107423115B CN201710631117.3A CN201710631117A CN107423115B CN 107423115 B CN107423115 B CN 107423115B CN 201710631117 A CN201710631117 A CN 201710631117A CN 107423115 B CN107423115 B CN 107423115B
Authority
CN
China
Prior art keywords
access request
virtual machine
data packet
machine
physical machine
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
Application number
CN201710631117.3A
Other languages
English (en)
Other versions
CN107423115A (zh
Inventor
郝鹏
苏睿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Wanxiang Electronics Technology Co Ltd
Original Assignee
Xian Wanxiang Electronics Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Wanxiang Electronics Technology Co Ltd filed Critical Xian Wanxiang Electronics Technology Co Ltd
Priority to CN201710631117.3A priority Critical patent/CN107423115B/zh
Publication of CN107423115A publication Critical patent/CN107423115A/zh
Application granted granted Critical
Publication of CN107423115B publication Critical patent/CN107423115B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract 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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种显卡虚拟化的方法、装置和系统。其中,该方法包括:物理机接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包;物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求;物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。本发明解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题。

Description

显卡虚拟化的方法、装置和系统
技术领域
本发明涉及虚拟化领域,具体而言,涉及一种显卡虚拟化的方法、装置和系统。
背景技术
虚拟化是指通过虚拟化技术将一台计算机终端虚拟为多台逻辑计算机终端,也即在一台计算机终端上同时运行多个逻辑计算机终端,每个逻辑计算机终端可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机终端的工作效率。虚拟化技术可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
现有技术中,对于显卡,特别是独立显卡的访问主要是软件模拟,并没有充分利用硬件图形处理器(Graphic Processing Unit,简称为GPU)的资源,性能大大折扣,用户体现很差。为了解决上述问题,现有技术中的显卡虚拟化的方法可以通过虚拟监视器(Hypervisor)和模拟器(Qick Emulator,简称为Qemu)将显卡通过透传方式供虚拟机(Virtual Machine,简称为VM)使用,但是,在同一时间,显卡只能通过透传方式供一个虚拟机使用,而无法实现多个虚拟机共享。
针对现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种显卡虚拟化的方法、装置和系统,以至少解决现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题。
根据本发明实施例的一个方面,提供了一种显卡虚拟化的方法,包括:物理机接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包;物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求;物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。
进一步地,物理机接收至少一个虚拟机发送的数据包包括:物理机建立至少一个进程,其中,至少一个进程与至少一个虚拟机一一对应;物理机通过至少一个进程截获数据包。
进一步地,至少一个进程为并行运行的进程。
进一步地,在物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求之前,上述方法还包括:物理机获取至少一个虚拟机发送的数据包的数据类型;物理机判断至少一个虚拟机发送的数据包的数据类型是否为预设类型;如果任意一个虚拟机发送的数据包的数据类型为预设类型,则物理机按照预设格式,对任意一个虚拟机发送的数据包进行解包,得到任意一个虚拟机的访问请求。
进一步地,在物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问之前,上述方法还包括:物理机判断至少一个虚拟机的访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求;如果任意一个虚拟机的访问请求为预设访问请求,则物理机根据任意一个虚拟机的访问请求,对显卡进行访问。
进一步地,在任意一个虚拟机的访问请求不为预设访问请求的情况下,物理机根据任意一个虚拟机的访问请求,对物理机的网卡进行访问。
进一步地,物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问包括:物理机发送至少一个虚拟机的访问请求至显卡驱动,并通过显卡驱动对显卡进行访问。
进一步地,在物理机接收至少一个虚拟机发送的数据包之后,上述方法还包括:物理机判断是否满足虚拟化条件;如果判断出满足虚拟化条件,则物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机发送的访问请求。
根据本发明实施例的另一方面,还提供了一种显卡虚拟化的方法,包括:虚拟机获取访问请求,其中,访问请求为用于访问显卡的请求;虚拟机对访问请求进行打包,得到数据包;虚拟机将数据包发送至物理机,并通过物理机对物理机的显卡进行访问。
进一步地,虚拟机对访问请求进行打包,得到数据包包括:虚拟机获取预设格式,其中,预设格式包括:预设标识信息;虚拟机按照预设格式,对访问请求进行打包,得到数据包。
进一步地,虚拟机将数据包发送至物理机包括:虚拟机通过网卡驱动,发送数据包至物理机。
进一步地,在虚拟机对访问请求进行打包,得到数据包之前,上述方法还包括:虚拟机判断访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求;如果任意一个虚拟机的访问请求为预设访问请求,则虚拟机对访问请求进行打包,得到数据包。
根据本发明实施例的另一方面,还提供了一种显卡虚拟化的装置,包括:接收模块,用于接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包;解包模块,用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求;访问模块,用于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。
进一步地,接收模块包括:建立子模块,用于建立至少一个进程,其中,至少一个进程与至少一个虚拟机一一对应;截获子模块,用于通过至少一个进程截获数据包。
根据本发明实施例的另一方面,还提供了一种显卡虚拟化的装置,包括:获取模块,用于获取访问请求,其中,访问请求为用于访问显卡的请求;打包模块,用于对访问请求进行打包,得到数据包;发送模块,用于将数据包发送至物理机,并通过物理机对物理机的显卡进行访问。
进一步地,打包模块包括:获取子模块,用于获取预设格式,其中,预设格式包括:预设标识信息,打包子模块,用于按照预设格式,对访问请求进行打包,得到数据包。
根据本发明实施例的另一方面,还提供了一种显卡虚拟化的系统,包括:至少一个虚拟机,用于获取访问请求,并对访问请求进行打包,得到数据包,其中,访问请求为用于访问显卡的请求;物理机,物理机上安装至少一个虚拟机,用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,并根据至少一个虚拟机的访问请求,对显卡进行访问。
进一步地,物理机包括:至少一个进程,与至少一个虚拟机一一对应,用于截获至少一个虚拟机发送的数据包。
进一步地,物理机还包括:至少一个解包模块,与至少一个虚拟机一一对应,用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求。
进一步地,物理机还包括:显卡驱动,与至少一个解包模块连接,用于根据至少一个虚拟机的访问请求,对显卡进行访问。
进一步地,至少一个虚拟机包括:打包模块,用于获取预设格式,按照预设格式,对访问请求进行打包,得到数据包,其中,预设格式包括:预设标识信息。
进一步地,至少一个虚拟机还包括:网卡驱动,与打包模块连接,用于发送数据包至物理机。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述实施例中的显卡虚拟化的方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述实施例中的显卡虚拟化的方法。
在本发明实施例中,物理机接收至少一个虚拟机发送的数据包,对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种显卡虚拟化的方法的流程图;
图2是根据本发明实施例的一种可选的执行显卡虚拟化的方法的模块的示意图;
图3是根据本发明实施例的一种可选的显卡虚拟化的方法的流程图;
图4是根据本发明实施例的另一种显卡虚拟化的方法的流程图;
图5是根据本发明实施例的一种显卡虚拟化的装置的示意图;
图6是根据本发明实施例的另一种显卡虚拟化的装置的示意图;
图7是根据本发明实施例的一种显卡虚拟化的系统的示意图;
图8是根据本发明实施例的一种物理机的示意图;以及
图9是根据本发明实施例的一种虚拟机的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种显卡虚拟化的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种显卡虚拟化的方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,物理机接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包。
具体地,上述的物理机可以是计算机终端,上述的至少一个虚拟机可以是通过虚拟化技术在物理机上运行的多个逻辑计算机终端,上述的访问请求可以是虚拟机上安装的应用程序对OpenGL(开放图形库,是Open Graphics Library的简称)/DirectX(多媒体编程接口,是Direct eXtension的简称)的API(应用程序编程接口,是ApplicationProgramming Interface的简称)进行调用所生成的访问请求,从而对显卡进行访问。
步骤S104,物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求。
步骤S106,物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。
在一种可选的方案中,当虚拟机上安装的应用程序对OpenGL/DirectX的API进行访问时,虚拟机可以截获访问请求,并对访问请求进行网络IP打包,生成IP数据包,从而实现将对显卡的访问转换成对网卡的访问,通过现有的网卡虚拟机技术,将IP数据包发送给物理机,物理机可以同时接收多个虚拟机发送的IP数据包。物理机在接收到多个虚拟机发送的IP数据包之后,可以对IP数据包进行网络IP解包,得到多个虚拟机的访问请求,并根据访问请求对显卡进行访问,从而达到硬件加速的目的。
根据本发明上述实施例,物理机接收至少一个虚拟机发送的数据包,对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
可选地,在本发明上述实施例中,步骤S102,物理机接收至少一个虚拟机发送的数据包包括:
步骤S1022,物理机建立至少一个进程,其中,至少一个进程与至少一个虚拟机一一对应。
可选地,在本发明上述实施例中,至少一个进程为并行运行的进程。
具体地,物理机上可以为每一个虚拟机建立一个Qemu,每一个Qemu即为一个进程,所有虚拟机对应的Qemu进程都会到Hypervisor中。
步骤S1024,物理机通过至少一个进程截获数据包。
在一种可选的方案中,虚拟机在将对显卡的访问转换成对网卡的访问之后,虚拟机上的虚拟网卡驱动会申请对输入输出I/O的访问,该访问会被Qemu截获,并将每一个对网卡进行I/O访问的数据包返回至Hypervisor中。
可选地,在本发明上述实施例中,在步骤S104,物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求之前,该方法还包括如下步骤:
步骤S108,物理机获取至少一个虚拟机发送的数据包的数据类型。
步骤S110,物理机判断至少一个虚拟机发送的数据包的数据类型是否为预设类型。
具体地,上述的预设类型可以是网络类型,也即对网卡进行I/O访问的类型。
步骤S112,如果任意一个虚拟机发送的数据包的数据类型为预设类型,则物理机按照预设格式,对任意一个虚拟机发送的数据包进行解包,得到任意一个虚拟机的访问请求。
具体地,上述的预设格式可以是对网卡进行I/O访问的数据的格式,例如,可以是IP格式,并且解包过程与打包过程相对应。
在一种可选的方案中,物理机在通过Qemu截获每一个数据包之后,可以首先判断该数据包是否为对网卡进行I/O访问的数据包,也即,判断该数据包的数据类型是否为预设类型,如果是,则确定是虚拟机发送的网络IP打包后的访问请求,可以对数据包进行网络IP解包,得到访问请求;如果否,则确定不是虚拟机发送的网络IP打包后的访问请求,可以丢弃该数据包。
可选地,在本发明上述实施例中,在步骤S106,物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问之前,该方法还包括如下步骤:
步骤S114,物理机判断至少一个虚拟机的访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求。
具体地,上述的预设接口可以是OpenGL/DirectX的API,上述的预设访问请求可以是对OpenGL/DirectX的API进行调用所生成的访问请求,也即对显卡进行访问的请求。
步骤S116,如果任意一个虚拟机的访问请求为预设访问请求,则物理机根据任意一个虚拟机的访问请求,对显卡进行访问。
在一种可选的方案中,由于将对显卡的访问转换为对网卡的访问,因此,在解包得到访问请求之后,需要对访问请求进行判断,确定是对显卡进行访问的访问请求还是对网卡进行访问的访问请求。在对数据包进行网络IP解包,得到访问请求之后,可以判断该访问请求是否为预设访问请求,即是否为对显卡进行访问的请求,如果是,则确定该请求是对显卡进行访问的请求,可以根据该访问请求对显卡进行访问。
可选地,在本发明上述实施例中,在任意一个虚拟机的访问请求不为预设访问请求的情况下,物理机根据任意一个虚拟机的访问请求,对物理机的网卡进行访问。
在一种可选的方案中,在对数据包进行网络IP解包,得到访问请求之后,可以判断该访问请求是否为预设访问请求,即是否为对显卡进行访问的请求,如果否,则确定该请求不是对显卡进行访问的请求,是对网卡进行访问的请求,可以根据该访问请求对物理机的网卡进行访问。
可选地,在本发明上述实施例中,步骤S106,物理机根据至少一个虚拟机的访问请求,对物理机的显卡进行访问包括:
步骤S1062,物理机发送至少一个虚拟机的访问请求至显卡驱动,并通过显卡驱动对显卡进行访问。
在一种可选的方案中,当确定访问请求是对显卡进行访问的访问请求之后,可以将访问请求传输至显卡驱动,通过显卡驱动进一步访问显卡。
可选地,在本发明上述实施例中,在步骤S102,物理机接收至少一个虚拟机发送的数据包之后,该方法还包括如下步骤:
步骤S118,物理机判断是否满足虚拟化条件。
具体地,上述的虚拟化条件可以是物理机支持显卡虚拟化的条件。
步骤S120,如果判断出满足虚拟化条件,则物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机发送的访问请求。
在一种可选的方案中,物理机在接收到虚拟机发送的数据包之后,首先需要判断是否满足虚拟化条件,即判断是否支持显卡虚拟化,如果是,则对数据包进行网络IP解包,得到访问请求,并根据访问请求对显卡进行访问;如果否,则通过Qemu进行软件模拟,不再对数据包进行解包。
图2是根据本发明实施例的一种可选的执行显卡虚拟化的方法的模块的示意图,图3是根据本发明实施例的一种可选的显卡虚拟化的方法的流程图,下面结合图2和图3对本发明一种优选的实施例进行详细说明。
如图2所示,多个VM(图中仅示出2个,即VM0和VM1)安装在宿主机(即上述的物理机)上,VM包括应用程序APP和驱动层,驱动层包含IP打包模块和虚拟网卡驱动,如图3所示,VM可以执行如下步骤S31至步骤S33:
步骤S31,判断是否为OpenGL/DirectX的访问请求。
具体地,如果判断出是OpenGL/DirectX的访问请求,则进入步骤S32。
步骤S32,对访问请求进行以太网打包,转换成对网卡的访问。
步骤S33,发起对I/O的访问。
可选地,每个VM的APP在调用OpenGL/DirectX会进入VM上的驱动层,驱动层首先对OpenGL/DirectX的访问请求进行截获,通过IP打包模块对每个访问请求进行IP打包处理,将数据包的数据格式标记为对显卡的访问标志,相当于网络IP承载的是OpenGL/DirectX的API访问数据。从而在VM的驱动层,将对显卡的访问转换对网卡的访问。利用现有的网卡虚拟化技术进行处理,虚拟网卡驱动发起对I/O的访问。
如图2所示,宿主机包括:软件和硬件,硬件为物理显卡,软件为Linux内核和Qemu,Linux内核包括Hypervisor/KVM和物理显卡驱动,Hypervisor/KVM包括多个处理器(图中仅示出2个,即处理器0和处理器n),每个处理器通过解包模块针对相应的VM的数据包进行解包处理,如图3所示,宿主机可以执行如下步骤S34至步骤S312:
步骤S34,Qemu对I/O访问进行截获。
步骤S35,判断是否硬件支持虚拟化。
具体地,如果判断出硬件不支持虚拟化,则进入步骤S36;如果判断出硬件支持虚拟化,则进入步骤S37。
步骤S36,Qemu进行硬件模拟。
步骤S37,判断是否为对网卡的I/O访问。
具体地,如果判断出是对网卡的I/O访问,则进入步骤S38。
步骤S38,对数据包进行解包处理。
步骤S39,判断是否为OpenGL/DirectX的访问请求。
具体地,如果判断出不是OpenGL/DirectX的访问请求,则进入步骤S310;如果判断出是OpenGL/DirectX的访问请求,则进入步骤S311。
步骤S310,物理网卡驱动接收访问请求。
步骤S311,物理显卡驱动接收访问请求。
步骤S312,访问物理显卡。
可选地,虚拟网卡驱动发起的对I/O的访问被Qemu截获,所有虚拟机对应的Qemu进程都会到Hypervisor/KVM,对每一个对网卡进行I/O访问的数据进行解包处理,判断是否为OpenGL/DirectX的包,如果不是,则将解析后的访问请求传输到物理网卡驱动,物理网卡驱动进一步访问物理网卡进行处理;如果是,则将解析后的访问请求传输到物理显卡驱动,物理显卡驱动接收到多个访问显卡的访问请求,进一步访问物理显卡进行处理,至此即完成了VM上对物理显卡访问的处理。
通过上述方案,通过对虚拟机的驱动进行修改,在驱动中增加网络打包的功能,将对显卡的访问请求转换成对网卡的数据包,以解决现有技术中不能将虚拟机对显卡的访问转换成对宿主机的物理显卡的访问,只能进行软件模拟显卡的问题;对宿主机的额驱动进行修改,对宿主机上每个对网口驱动访问的Qemu进程进行截获,从而进行拆解网络包的处理,判断是否是OpenGL/DirectX的网络包,如果是,需要转为对物理显卡驱动的访问,以解决现有技术中虚拟机只能单独访问物理显卡,无法支持多个虚拟机共享物理显卡。可以达到如下效果:支持多个虚拟机共享物理显卡;借用现有的网卡虚拟化的方法,软件修改量小;对显卡硬件没有特殊要求,性价比高。
实施例2
根据本发明实施例,还提供了一种显卡虚拟化的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明实施例的另一种显卡虚拟化的方法的流程图,如图4所示,该方法包括如下步骤:
步骤S402,虚拟机获取访问请求,其中,访问请求为用于访问显卡的请求。
具体地,上述的虚拟机可以是通过虚拟化技术在物理机上运行的多个逻辑计算机终端中的任意一个,上述的物理机可以是计算机终端;上述的访问请求可以是虚拟机上安装的应用程序对OpenGL(开放图形库,是Open Graphics Library的简称)/DirectX(多媒体编程接口,是Direct eXtension的简称)的API(应用程序编程接口,是ApplicationProgramming Interface的简称)进行调用所生成的访问请求,从而对显卡进行访问。
步骤S404,虚拟机对访问请求进行打包,得到数据包。
步骤S406,虚拟机将数据包发送至物理机,并通过物理机对显卡进行访问。
在一种可选的方案中,当虚拟机上安装的应用程序对OpenGL/DirectX的API进行访问时,虚拟机可以截获访问请求,并对访问请求进行网络IP打包,生成IP数据包,从而实现将对显卡的访问转换成对网卡的访问,通过现有的网卡虚拟机技术,将IP数据包发送给物理机,物理机可以同时接收多个虚拟机发送的IP数据包。物理机在接收到多个虚拟机发送的IP数据包之后,可以对IP数据包进行网络IP解包,得到多个虚拟机的访问请求,并根据访问请求对显卡进行访问,从而达到硬件加速的目的。
根据本发明上述实施例,虚拟机获取访问请求,对访问请求进行打包,得到数据包,将数据包发送至物理机,并通过物理机对显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
可选地,在本发明上述实施例中,步骤S404,虚拟机对访问请求进行打包,得到数据包包括:
步骤S4042,虚拟机获取预设格式,其中,预设格式包括:预设标识信息。
具体地,上述的预设格式可以是对网卡进行I/O访问的数据的格式,例如,可以是IP格式,并且解包过程与打包过程相对应;上述的预设标识信息可以是对显卡进行访问的标志。
步骤S4044,虚拟机按照预设格式,对访问请求进行打包,得到数据包。
在一种可选的方案中,虚拟机对访问请求进行网络IP打包的过程中,需要将数据包的数据格式标记为对显卡的访问标志,从而物理机在对数据包进行网络IP解包时,可以确定该访问请求是否为对显卡的访问。
可选地,在本发明上述实施例中,步骤S406,虚拟机将数据包发送至物理机包括:
步骤S4062,虚拟机通过网卡驱动,发送数据包至物理机。
具体地,上述的网卡驱动可以是虚拟网卡驱动。
在一种可选的方案中,在将访问请求进行网络IP打包,得到数据包之后,可以将对显卡驱动的访问转换成对网卡驱动的访问,虚拟机的虚拟网卡驱动发起对I/O的访问,该访问会被Qemu截获,并将每一个对网卡进行I/O访问的数据包返回至Hypervisor中。
可选地,在本发明上述实施例中,在步骤S404,虚拟机对访问请求进行打包,得到数据包之前,该方法还包括如下步骤:
步骤S408,虚拟机判断访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求。
具体地,上述的预设接口可以是OpenGL/DirectX的API,上述的预设访问请求可以是对OpenGL/DirectX的API进行调用所生成的访问请求,也即对显卡进行访问的请求。
步骤S4010,如果访问请求为预设访问请求,则虚拟机对访问请求进行打包,得到数据包。
在一种可选的方案中,由于将对显卡的访问转换为对网卡的访问,因此,虚拟机在获取到访问请求之后,首先判断该访问请求是否为对OpenGL/DirectX的API进行调用所生成的访问请求,也即对显卡进行访问的请求,如果是,则需要对该访问请求进行网络IP打包,得到数据包;如果不是,则无需对该访问请求进行打包,可以按照现有的虚拟化的方法进行处理。
实施例3
根据本发明实施例,提供了一种显卡虚拟化的装置的实施例。
图5是根据本发明实施例的一种显卡虚拟化的装置的示意图,如图5所示,该装置包括:
接收模块51,用于接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包。
具体地,上述的至少一个虚拟机可以是通过虚拟化技术在物理机上运行的多个逻辑计算机终端,上述的物理机可以是计算机终端;上述的访问请求可以是虚拟机上安装的应用程序对OpenGL(开放图形库,是Open Graphics Library的简称)/DirectX(多媒体编程接口,是Direct eXtension的简称)的API(应用程序编程接口,是ApplicationProgramming Interface的简称)进行调用所生成的访问请求,从而对显卡进行访问。
解包模块53,用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求。
访问模块55,用于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。
在一种可选的方案中,当虚拟机上安装的应用程序对OpenGL/DirectX的API进行访问时,虚拟机可以截获访问请求,并对访问请求进行网络IP打包,生成IP数据包,从而实现将对显卡的访问转换成对网卡的访问,通过现有的网卡虚拟机技术,将IP数据包发送给物理机,物理机可以同时接收多个虚拟机发送的IP数据包。物理机在接收到多个虚拟机发送的IP数据包之后,可以对IP数据包进行网络IP解包,得到多个虚拟机的访问请求,并根据访问请求对显卡进行访问,从而达到硬件加速的目的。
根据本发明上述实施例,物理机接收至少一个虚拟机发送的数据包,对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
可选地,在本发明上述实施例中,接收模块包括:
建立子模块,用于建立至少一个进程,其中,至少一个进程与至少一个虚拟机一一对应。
可选地,在本发明上述实施例中,至少一个进程为并行运行的进程。
具体地,物理机上可以为每一个虚拟机建立一个Qemu,每一个Qemu即为一个进程,所有虚拟机对应的Qemu进程都会到Hypervisor中。
截获子模块,用于通过至少一个进程截获数据包。
在一种可选的方案中,虚拟机在将对显卡的访问转换成对网卡的访问之后,虚拟机上的虚拟网卡驱动会申请对输入输出I/O的访问,该访问会被Qemu截获,并将每一个对网卡进行I/O访问的数据包返回至Hypervisor中。
可选地,在本发明上述实施例中,该装置还包括:获取模块,用于获取至少一个虚拟机发送的数据包的数据类型;第一判断模块,用于判断至少一个虚拟机发送的数据包的数据类型是否为预设类型;解包模块还用于如果任意一个虚拟机发送的数据包的数据类型为预设类型,则按照预设格式,对任意一个虚拟机发送的数据包进行解包,得到任意一个虚拟机的访问请求。
可选地,在本发明上述实施例中,该装置还包括:第二判断模块,用于判断至少一个虚拟机的访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求;访问模块还用于如果任意一个虚拟机的访问请求为预设访问请求,则根据任意一个虚拟机的访问请求,对显卡进行访问。
可选地,在本发明上述实施例中,访问模块还用于在任意一个虚拟机的访问请求不为预设访问请求的情况下,根据任意一个虚拟机的访问请求,对物理机的网卡进行访问。
可选地,在本发明上述实施例中,访问模块包括:发送子模块,用于发送至少一个虚拟机的访问请求至显卡驱动,并通过显卡驱动对显卡进行访问。
可选地,在本发明上述实施例中,该装置还包括:第三判断模块,用于判断是否满足虚拟化条件;解包模块还用于如果判断出满足虚拟化条件,则对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机发送的访问请求。
实施例4
根据本发明实施例,还提供了一种显卡虚拟化的装置的实施例。
图6是根据本发明实施例的另一种显卡虚拟化的装置的示意图,如图6所示,该装置包括:
获取模块61,用于获取访问请求,其中,访问请求为用于访问显卡的请求。
具体地,上述的访问请求可以是虚拟机上安装的应用程序对OpenGL(开放图形库,是Open Graphics Library的简称)/DirectX(多媒体编程接口,是Direct eXtension的简称)的API(应用程序编程接口,是Application Programming Interface的简称)进行调用所生成的访问请求,从而对显卡进行访问。
打包模块63,用于对访问请求进行打包,得到数据包。
发送模块65,用于将数据包发送至物理机,并通过物理机对显卡进行访问。
具体地,上述的物理机可以是计算机终端,通过虚拟化技术在物理机上运行多个逻辑计算机终端,即多个虚拟机。
在一种可选的方案中,当虚拟机上安装的应用程序对OpenGL/DirectX的API进行访问时,虚拟机可以截获访问请求,并对访问请求进行网络IP打包,生成IP数据包,从而实现将对显卡的访问转换成对网卡的访问,通过现有的网卡虚拟机技术,将IP数据包发送给物理机,物理机可以同时接收多个虚拟机发送的IP数据包。物理机在接收到多个虚拟机发送的IP数据包之后,可以对IP数据包进行网络IP解包,得到多个虚拟机的访问请求,并根据访问请求对显卡进行访问,从而达到硬件加速的目的。
根据本发明上述实施例,虚拟机获取访问请求,对访问请求进行打包,得到数据包,将数据包发送至物理机,并通过物理机对显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
可选地,在本发明上述实施例中,打包模块包括:
获取子模块,用于获取预设格式,其中,预设格式包括:预设标识信息。
具体地,上述的预设格式可以是对网卡进行I/O访问的数据的格式,例如,可以是IP格式,并且解包过程与打包过程相对应;上述的预设标识信息可以是对显卡进行访问的标志。
打包子模块,用于按照预设格式,对访问请求进行打包,得到数据包。
在一种可选的方案中,虚拟机对访问请求进行网络IP打包的过程中,需要将数据包的数据格式标记为对显卡的访问标志,从而物理机在对数据包进行网络IP解包时,可以确定该访问请求是否为对显卡的访问。
可选地,在本发明上述实施例中,发送模块包括:发送子模块,用于通过网卡驱动,发送数据包至物理机。
可选地,在本发明上述实施例中,该装置还包括:判断模块,用于判断访问请求是否为预设访问请求,其中,预设访问请求为对预设接口进行调用所生成的访问请求;打包模块还用于如果访问请求为预设访问请求,则对访问请求进行打包,得到数据包。
实施例5
根据本发明实施例,提供了一种显卡虚拟化的系统的实施例。
图7是根据本发明实施例的一种显卡虚拟化的系统的示意图,如图7所示,该系统包括:至少一个虚拟机71和物理机73,至少一个虚拟机安装在物理机上。
其中,至少一个虚拟机用于获取访问请求,并对访问请求进行打包,得到数据包;物理机用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,并根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。
接收至少一个虚拟机发送的数据包,其中,数据包为至少一个虚拟机对访问请求进行打包所得到的数据包。
具体地,上述的至少一个虚拟机可以是通过虚拟化技术在物理机上运行的多个逻辑计算机终端,上述的访问请求可以是虚拟机上安装的应用程序对OpenGL(开放图形库,是Open Graphics Library的简称)/DirectX(多媒体编程接口,是Direct eXtension的简称)的API(应用程序编程接口,是Application Programming Interface的简称)进行调用所生成的访问请求,从而对显卡进行访问。
在一种可选的方案中,当虚拟机上安装的应用程序对OpenGL/DirectX的API进行访问时,虚拟机可以截获访问请求,并对访问请求进行网络IP打包,生成IP数据包,从而实现将对显卡的访问转换成对网卡的访问,通过现有的网卡虚拟机技术,将IP数据包发送给物理机,物理机可以同时接收多个虚拟机发送的IP数据包。物理机在接收到多个虚拟机发送的IP数据包之后,可以对IP数据包进行网络IP解包,得到多个虚拟机的访问请求,并根据访问请求对显卡进行访问,从而达到硬件加速的目的。
根据本发明上述实施例,至少一个虚拟机获取访问请求,并对访问请求进行打包,得到数据包,物理机对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求,并根据至少一个虚拟机的访问请求,对物理机的显卡进行访问。容易注意到的是,由于至少一个虚拟机对用于访问显卡的访问请求进行打包得到数据包,从而将对显卡驱动的访问转换成对网卡驱动的访问,达到硬件加速的效果,进而解决现有技术中虚拟机只能进行软件模拟显卡的问题;由于根据至少一个虚拟机的访问请求,对物理机的显卡进行访问,从而达到多个虚拟机同时对显卡进行访问的效果,解决了现有技术中的显卡虚拟化的方法实现多个虚拟机同时对物理机的显卡进行访问,负载度较高的技术问题;由于通过现有的网卡虚拟化的方式实现显卡虚拟化,达到软件修改量较小,从而达到方式简单的效果;由于对显卡的硬件没有特殊要求,从而达到降低成本的效果。
可选地,在本发明上述实施例中,图8是根据本发明实施例的一种物理机的示意图,如图8所示,物理机73包括:至少一个进程81。
其中,至少一个进程与至少一个虚拟机一一对应,用于截获至少一个虚拟机发送的数据包。
可选地,在本发明上述实施例中,至少一个进程为并行运行的进程。
具体地,物理机上可以为每一个虚拟机建立一个Qemu,每一个Qemu即为一个进程,所有虚拟机对应的Qemu进程都会到Hypervisor中。
在一种可选的方案中,虚拟机在将对显卡的访问转换成对网卡的访问之后,虚拟机上的虚拟网卡驱动会申请对输入输出I/O的访问,该访问会被Qemu截获,并将每一个对网卡进行I/O访问的数据包返回至Hypervisor中。
可选地,在本发明上述实施例中,如图8所示,物理机73还包括:至少一个解包模块83。
其中,至少一个解包模块与至少一个虚拟机一一对应,用于对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机的访问请求。
在一种可选的方案中,在解包模块接收到IP数据包之后,可以对IP数据包进行网络解包,得到对应的访问请求。
可选地,在本发明上述实施例中,如图8所示,物理机73还包括:显卡驱动85。
其中,显卡驱动与至少一个解包模块连接,用于根据至少一个虚拟机的访问请求,对显卡进行访问。
具体地,上述的显卡驱动可以是物理机的物理显卡驱动,通过物理显卡驱动可以访问物理显卡。
在一种可选的方案中,当确定访问请求是对显卡进行访问的访问请求之后,可以将访问请求传输至显卡驱动,通过显卡驱动进一步访问显卡。
可选地,在本发明上述实施例中,图9是根据本发明实施例的一种虚拟机的示意图,如图9所示,至少一个虚拟机71包括:打包模块91。
其中,打包模块用于获取预设格式,按照预设格式,对访问请求进行打包,得到数据包,其中,预设格式包括:预设标识信息、
具体地,上述的预设格式可以是对网卡进行I/O访问的数据的格式,例如,可以是IP格式,并且解包过程与打包过程相对应;上述的预设标识信息可以是对显卡进行访问的标志。
在一种可选的方案中,虚拟机对访问请求进行网络IP打包的过程中,需要将数据包的数据格式标记为对显卡的访问标志,从而物理机在对数据包进行网络IP解包时,可以确定该访问请求是否为对显卡的访问。
可选地,在本发明上述实施例中,如图9所示,至少一个虚拟机还71还包括:网卡驱动93。
其中,网卡驱动用于发送数据包至物理机。
具体地,上述的网卡驱动可以是虚拟网卡驱动。
在一种可选的方案中,在将访问请求进行网络IP打包,得到数据包之后,可以将对显卡驱动的访问转换成对网卡驱动的访问,虚拟机的虚拟网卡驱动发起对I/O的访问,该访问会被Qemu截获,并将每一个对网卡进行I/O访问的数据包返回至Hypervisor中。
可选地,在本发明上述实施例中,至少一个虚拟机还用于判断访问请求是否为预设访问请求,如果任意一个虚拟机的访问请求为预设访问请求,则对访问请求进行打包,得到数据包,其中,预设访问请求为对预设接口进行调用所生成的访问请求。
可选地,在本发明上述实施例中,物理机还用于获取至少一个虚拟机发送的数据包的数据类型,并判断至少一个虚拟机发送的数据包的数据类型是否为预设类型,如果任意一个虚拟机发送的数据包的数据类型为预设类型,则按照预设格式,对任意一个虚拟机发送的数据包进行解包,得到任意一个虚拟机的访问请求。
可选地,在本发明上述实施例中,物理机还用于判断至少一个虚拟机的访问请求是否为预设访问请求,如果任意一个虚拟机的访问请求为预设访问请求,则根据任意一个虚拟机的访问请求,对显卡进行访问。
可选地,在本发明上述实施例中,物理机还用于在任意一个虚拟机的访问请求不为预设访问请求的情况下,根据任意一个虚拟机的访问请求,对物理机的网卡进行访问。
可选地,在本发明上述实施例中,物理机还用于判断是否满足虚拟化条件,如果判断出满足虚拟化条件,则对至少一个虚拟机发送的数据包进行解包,得到至少一个虚拟机发送的访问请求。
实施例6
根据本发明实施例,提供了一种存储介质的实施例,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述实施例1和2中的显卡虚拟化的方法。
实施例7
根据本发明实施例,提供了一种处理器的实施例,处理器用于运行程序,其中,程序运行时执行上述实施例1和2中的显卡虚拟化的方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种显卡虚拟化的方法,其特征在于,包括:
物理机接收至少一个虚拟机发送的数据包,其中,所述数据包为所述至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包;
所述物理机对所述至少一个虚拟机发送的数据包进行解包,得到所述至少一个虚拟机的访问请求;
所述物理机根据所述至少一个虚拟机的访问请求,对所述物理机的显卡进行访问;
其中,在所述物理机根据所述至少一个虚拟机的访问请求,对所述物理机的显卡进行访问之前,所述方法还包括:所述物理机判断所述至少一个虚拟机的访问请求是否为预设访问请求,其中,所述预设访问请求为对预设接口进行调用所生成的访问请求;如果任意一个虚拟机的访问请求为所述预设访问请求,则所述物理机根据所述任意一个虚拟机的访问请求,对所述显卡进行访问;在所述任意一个虚拟机的访问请求不为所述预设访问请求的情况下,所述物理机根据所述任意一个虚拟机的访问请求,对所述物理机的网卡进行访问。
2.根据权利要求1所述的方法,其特征在于,物理机接收至少一个虚拟机发送的数据包包括:
所述物理机建立至少一个进程,其中,所述至少一个进程与所述至少一个虚拟机一一对应;
所述物理机通过所述至少一个进程截获所述数据包。
3.根据权利要求1所述的方法,其特征在于,在所述物理机对所述至少一个虚拟机发送的数据包进行解包,得到所述至少一个虚拟机的访问请求之前,所述方法还包括:
所述物理机获取所述至少一个虚拟机发送的数据包的数据类型;
所述物理机判断所述至少一个虚拟机发送的数据包的数据类型是否为预设类型;
如果任意一个虚拟机发送的数据包的数据类型为所述预设类型,则所述物理机按照预设格式,对所述任意一个虚拟机发送的数据包进行解包,得到所述任意一个虚拟机的访问请求。
4.一种显卡虚拟化的方法,其特征在于,包括:
虚拟机获取访问请求,其中,所述访问请求为用于访问显卡的请求;
所述虚拟机对所述访问请求进行打包,得到数据包;
所述虚拟机将所述数据包发送至物理机,并通过所述物理机对所述物理机的显卡进行访问;
其中,所述数据包为所述虚拟机对用于访问所述显卡的访问请求进行打包所得到的数据包,所述物理机对所述显卡进行访问之前,所述方法还包括:所述物理机判断所述访问请求是否为预设访问请求,其中,所述预设访问请求为对预设接口进行调用所生成的访问请求;如果所述虚拟机的访问请求为所述预设访问请求,则所述物理机根据所述虚拟机的访问请求,对所述显卡进行访问;在所述任意一个虚拟机的访问请求不为所述预设访问请求的情况下,所述物理机根据所述任意一个虚拟机的访问请求,对所述物理机的网卡进行访问。
5.根据权利要求4所述的方法,其特征在于,所述虚拟机对所述访问请求进行打包,得到数据包包括:
所述虚拟机获取预设格式,其中,所述预设格式包括:预设标识信息;
所述虚拟机按照所述预设格式,对所述访问请求进行打包,得到所述数据包。
6.一种显卡虚拟化的装置,其特征在于,包括:
接收模块,用于接收至少一个虚拟机发送的数据包,其中,所述数据包为所述至少一个虚拟机对用于访问显卡的访问请求进行打包所得到的数据包;
解包模块,用于对所述至少一个虚拟机发送的数据包进行解包,得到所述至少一个虚拟机的访问请求;
访问模块,用于根据所述至少一个虚拟机的访问请求,对物理机的显卡进行访问;
其中,所述装置还用于:在所述物理机根据所述至少一个虚拟机的访问请求,对所述物理机的显卡进行访问之前,所述物理机判断所述至少一个虚拟机的访问请求是否为预设访问请求,其中,所述预设访问请求为对预设接口进行调用所生成的访问请求;如果任意一个虚拟机的访问请求为所述预设访问请求,则所述物理机根据所述任意一个虚拟机的访问请求,对所述显卡进行访问;在所述任意一个虚拟机的访问请求不为所述预设访问请求的情况下,所述物理机根据所述任意一个虚拟机的访问请求,对所述物理机的网卡进行访问。
7.根据权利要求6所述的装置,其特征在于,所述接收模块包括:
建立子模块,用于建立至少一个进程,其中,所述至少一个进程与所述至少一个虚拟机一一对应;
截获子模块,用于通过所述至少一个进程截获所述数据包。
8.一种显卡虚拟化的装置,其特征在于,包括:
获取模块,用于获取访问请求,其中,所述访问请求为用于访问显卡的请求;
打包模块,用于对所述访问请求进行打包,得到数据包;
发送模块,用于将所述数据包发送至物理机,并通过所述物理机对所述物理机的显卡进行访问;
其中,所述数据包为所述虚拟机对用于访问所述显卡的访问请求进行打包所得到的数据包,所述物理机对所述显卡进行访问之前,判断所述访问请求是否为预设访问请求,其中,所述预设访问请求为对预设接口进行调用所生成的访问请求;如果所述虚拟机的访问请求为所述预设访问请求,则所述物理机根据所述虚拟机的访问请求,对所述显卡进行访问;在所述任意一个虚拟机的访问请求不为所述预设访问请求的情况下,所述物理机根据所述任意一个虚拟机的访问请求,对所述物理机的网卡进行访问。
9.根据权利要求8所述的装置,其特征在于,所述打包模块包括:
获取子模块,用于获取预设格式,其中,所述预设格式包括:预设标识信息,
打包子模块,用于按照所述预设格式,对所述访问请求进行打包,得到所述数据包。
10.一种显卡虚拟化的系统,其特征在于,包括:
至少一个虚拟机,用于获取访问请求,并对所述访问请求进行打包,得到数据包,其中,所述访问请求为用于访问显卡的请求;
物理机,所述物理机上安装所述至少一个虚拟机,用于对所述至少一个虚拟机发送的数据包进行解包,得到所述至少一个虚拟机的访问请求,并根据所述至少一个虚拟机的访问请求,对所述显卡进行访问;
其中,所述物理机还用于在根据所述至少一个虚拟机的访问请求,对所述显卡进行访问之前,判断所述至少一个虚拟机的访问请求是否为预设访问请求,其中,所述预设访问请求为对预设接口进行调用所生成的访问请求;如果任意一个虚拟机的访问请求为所述预设访问请求,则根据所述任意一个虚拟机的访问请求,对所述显卡进行访问;在所述任意一个虚拟机的访问请求不为所述预设访问请求的情况下,所述物理机根据所述任意一个虚拟机的访问请求,对所述物理机的网卡进行访问。
11.根据权利要求10所述的系统,其特征在于,所述物理机包括:
至少一个进程,与所述至少一个虚拟机一一对应,用于截获所述至少一个虚拟机发送的数据包。
12.根据权利要求11所述的系统,其特征在于,所述物理机还包括:
至少一个解包模块,与所述至少一个虚拟机一一对应,用于对所述至少一个虚拟机发送的数据包进行解包,得到所述至少一个虚拟机的访问请求。
13.根据权利要求12所述的系统,其特征在于,所述物理机还包括:
显卡驱动,与所述至少一个解包模块连接,用于根据所述至少一个虚拟机的访问请求,对所述显卡进行访问。
14.根据权利要求10所述的系统,其特征在于,所述至少一个虚拟机包括:
打包模块,用于获取预设格式,按照所述预设格式,对所述访问请求进行打包,得到所述数据包,其中,所述预设格式包括:预设标识信息。
15.根据权利要求14所述的系统,其特征在于,所述至少一个虚拟机还包括:
网卡驱动,与所述打包模块连接,用于发送所述数据包至所述物理机。
CN201710631117.3A 2017-07-28 2017-07-28 显卡虚拟化的方法、装置和系统 Active CN107423115B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710631117.3A CN107423115B (zh) 2017-07-28 2017-07-28 显卡虚拟化的方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710631117.3A CN107423115B (zh) 2017-07-28 2017-07-28 显卡虚拟化的方法、装置和系统

Publications (2)

Publication Number Publication Date
CN107423115A CN107423115A (zh) 2017-12-01
CN107423115B true CN107423115B (zh) 2020-06-02

Family

ID=60431507

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710631117.3A Active CN107423115B (zh) 2017-07-28 2017-07-28 显卡虚拟化的方法、装置和系统

Country Status (1)

Country Link
CN (1) CN107423115B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486624B (zh) * 2019-09-10 2023-01-06 北京东土科技股份有限公司 一种多个虚拟机系统的显示方法及物理机
CN114461287B (zh) * 2022-01-29 2024-01-30 亿咖通(湖北)技术有限公司 操作系统启动方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819449A (zh) * 2012-07-04 2012-12-12 深圳市京华科讯科技有限公司 一种显卡重定向方法及系统
CN103269333A (zh) * 2013-04-23 2013-08-28 深圳市京华科讯科技有限公司 基于虚拟化的多媒体加速系统
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
CN106020929A (zh) * 2016-05-13 2016-10-12 深圳市青葡萄科技有限公司 一种虚拟化环境下支持3d应用的系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102819449A (zh) * 2012-07-04 2012-12-12 深圳市京华科讯科技有限公司 一种显卡重定向方法及系统
CN103631634A (zh) * 2012-08-24 2014-03-12 中国电信股份有限公司 实现图形处理器虚拟化的方法与装置
CN103269333A (zh) * 2013-04-23 2013-08-28 深圳市京华科讯科技有限公司 基于虚拟化的多媒体加速系统
CN106020929A (zh) * 2016-05-13 2016-10-12 深圳市青葡萄科技有限公司 一种虚拟化环境下支持3d应用的系统和方法

Also Published As

Publication number Publication date
CN107423115A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
US9665921B2 (en) Adaptive OpenGL 3D graphics in virtual desktop infrastructure
CN108563517B (zh) 系统接口的调用方法及装置
WO2023087938A1 (zh) 数据处理方法、可编程网卡设备、物理服务器及存储介质
CN103888485B (zh) 云计算资源的分配方法、装置及系统
US10514937B2 (en) Auto-discovery service and method of discovering applications within a virtual network
CN102609298B (zh) 基于硬件队列扩展的网卡虚拟化系统及其方法
US8102881B1 (en) Streamlined guest networking in a virtualized environment
US9607351B2 (en) Systems and methods for GPU virtualization
US9720712B2 (en) Physical/virtual device failover with a shared backend
US20070011444A1 (en) Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
CN104704471A (zh) 虚拟网络中的虚拟机多播/广播
CN102819449A (zh) 一种显卡重定向方法及系统
CN111488196A (zh) 渲染方法及装置、存储介质、处理器
CN103942087A (zh) 虚拟机热迁移方法及相关装置和集群系统
US20180239715A1 (en) Secure zero-copy packet forwarding
CN108228309B (zh) 基于虚拟机的数据包发送和接收方法及装置
WO2017219250A1 (zh) 一种虚拟机内存的映射方法、装置及数据传输设备
US20130204924A1 (en) Methods and apparatuses for providing application level device transparency via device devirtualization
CN107423115B (zh) 显卡虚拟化的方法、装置和系统
US8860740B2 (en) Method and apparatus for processing a display driver in virture desktop infrastructure
CN106991057B (zh) 一种共享显卡虚拟化中内存的调用方法及虚拟化平台
CN103092676A (zh) 虚拟机集群的模拟输入输出方法、装置及系统
Jin et al. Virtual switching without a hypervisor for a more secure cloud
US20170371694A1 (en) Virtualization of a graphics processing unit for network applications
Ma et al. InfiniBand virtualization on KVM

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant