CN106991057A - 一种共享显卡虚拟化中内存的调用方法及虚拟化平台 - Google Patents

一种共享显卡虚拟化中内存的调用方法及虚拟化平台 Download PDF

Info

Publication number
CN106991057A
CN106991057A CN201710233189.2A CN201710233189A CN106991057A CN 106991057 A CN106991057 A CN 106991057A CN 201710233189 A CN201710233189 A CN 201710233189A CN 106991057 A CN106991057 A CN 106991057A
Authority
CN
China
Prior art keywords
rear end
internal memory
page table
object function
memory page
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.)
Granted
Application number
CN201710233189.2A
Other languages
English (en)
Other versions
CN106991057B (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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201710233189.2A priority Critical patent/CN106991057B/zh
Publication of CN106991057A publication Critical patent/CN106991057A/zh
Application granted granted Critical
Publication of CN106991057B publication Critical patent/CN106991057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种共享显卡虚拟化中内存的调用方法和系统,应用于虚拟化平台,调用方法包括:前端接收到应用程序调用后端目标函数的请求时,确定目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找目标函数对应的后端内存地址,确定与后端内存地址对应的指针数据,生成包含有指针数据及目标函数调用指令的消息,后端查找预先建立的后端内存页表中与目标函数对应的后端内存地址,并依据指针数据在该后端内存地址中获取目标函数的相关参数,依据相关参数,运行目标函数。因此,在前端调用后端函数时,仅需要将函数参数打包为指针数据,无需传输原函数的相关参数,大大减小了在传输过程中的数据量,提高了前端和后端的性能。

Description

一种共享显卡虚拟化中内存的调用方法及虚拟化平台
技术领域
本发明涉及虚拟化技术领域,更具体的说,是涉及一种共享显卡虚拟化中内存的调用方法及虚拟化平台。
背景技术
随着虚拟化技术的不断发展,利用虚拟化平台实现共享显卡虚拟化的技术也越来越成熟。现有技术中,实现共享显卡虚拟化的方式主要分为两种,一种是硬件实现的方式,另一种是软件的方式实现。
其中,硬件的实现方式通常需要显卡厂商来提供支持,在显卡的硬件上进行改动,来实现共享显卡虚拟化。但是,此种实现方式成本较高。
软件的实现方式通常包括前端、后端以及传输通信层,虚拟机一端称为前端需要负责接收、打包应用程序下发的API调用数据包,并通过传输通信层发送到后端。传输通信层主要负责提供前段和后端的通信传输。在具有物理显卡的一端称为后端,主要负责解析传输通信层发送的数据包,并调用前端API。
传输通信层主要采用远程调用形式完成前端和后端的通信。远程调用形式主要包括网络通信以及共享内存两种。网络通信采用TCP/IP协议等方式,共享内存采用如VirtIO等半虚拟化方式完成。相对于硬件的实现方式,软件的实现方式成本较低,容易被用户所接受。
但是,在软件的实现方式中,由于前端打包的API调用数据包占用的空间大且次数多,在传输过程中每秒都会有几百M甚至上G的数据需要传输,因此,对前端和后端的性能均会造成很大影响。
发明内容
有鉴于此,本发明提供了一种共享显卡虚拟化中内存的调用方法及系统,来解决上述技术问题。
本发明提供了一种共享显卡虚拟化中内存的调用方法,应用于虚拟化平台,包括:
前端接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
后端获取所述消息,确定所述指针数据及所述目标函数;
所述后端查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;
所述后端依据所述相关参数,运行所述目标函数。
优选的,所述预先建立的后端内存页表是通过下列方法建立的:
当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
优选的,当前端判断所述应用程序启动时还包括:
所述前端暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
优选的,所述后端获取所述消息,确定所述指针数据及所述目标函数包括:
所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
优选的,还包括:
所述后端的页表管理器捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
本发明另一方面提供了一种共享显卡的虚拟化平台,包括前端和后端;
所述前端用于接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
所述后端用于获取所述消息,确定所述指针数据及所述目标函数;查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;依据所述相关参数,运行所述目标函数。
优选的,所述预先建立的后端内存页表是通过下列方法建立的:
当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
优选的,当前端判断所述应用程序启动时还包括:
所述前端还用于暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
优选的,所述后端获取所述消息,确定所述指针数据及所述目标函数包括:
所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
优选的,还包括后端的页表管理器:
所述后端的页表管理器用于捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种共享显卡虚拟化中内存的调用方法和虚拟化平台,所述调用方法应用于虚拟化平台,包括:前端接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;后端获取所述消息,确定所述指针数据及所述目标函数;所述后端查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;依据所述相关参数,运行所述目标函数。由于本发明中在后端重建了与前端相一致的内存页表,因此,在前端调用后端函数时,前端仅需要将函数参数打包为指针数据,后端通过指针数据,直接读取相应位置的函数参数,无需传输原函数的相关参数,大大减小了在传输过程中的数据量,提高了内存调用效率,进而提高了前端和后端的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明提供的一种共享显卡虚拟化中内存的调用方法的流程示意图;
图2是本发明实施例中预先建立后端内存页表的流程示意图;
图3是本发明提供的一种共享显卡虚拟化中内存的调用方法的另一种流程示意图;
图4是本发明提供的一种共享显卡的虚拟化平台的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面对发明中的专业术语进行一下解释,以便于更好的理解技术方案。
虚拟化平台:Virtual Machine Platform(VMP),指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机的软件。通过虚拟化平台,可以在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟机:Virtual Machine(VM)。指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。VM需要运行在虚拟化平台上。也可称为Guest。
宿主机:Host。是相对给定的虚拟机而言的,指该虚拟机(VM)所运行的虚拟化平台主机。宿主机向自身所运行的VM提供计算、存储、网络等软硬件资源。
显卡虚拟化:指通过相应的技术,将一张显卡提供给多个虚拟机(VM)使用的方案。该技术分为通过硬件和软件实现两种方式,其中,硬件实现的显卡虚拟化通常需要显卡厂商的技术支持。
虚拟机监视器:(Virtual Machine Monitor,VMM):指虚拟化平台中,负责向VM提供、划分、管理硬件资源的重要组件。
本发明的核心思想是通过将前端应用程序的内存页表在后端进行重建,实现前端VM内的应用程序和后端的内存同布局映射,在调用发生时,仅需向后端传输内存指针数据即可,从而避免大量的内存拷贝。
下面对本发明的技术方案进行详细介绍。
参见图1,图1是本发明提供的一种共享显卡虚拟化中内存的调用方法的流程示意图。
本发明提供的一种共享显卡虚拟化中内存的调用方法,应用于虚拟化平台,包括:
S101、前端接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
本发明实施例中,应用程序优选是指定的3D应用程序,由于只有指定的3D应用程序在传输过程中所占用的数据量较大,因此,对指定3D应用程序在调用内存的过程中进行优化,提高的性能最为明显。指定的3D应用程序可以根据需求提前进行设定。
本发明实施例中,调用后端目标函数会携带相关参数,例如图元、纹理等,而这些参数通常都会占用较大的内存空间,这些参数通常保存在前端的内存地址空间中。本发明实施例中首先确定相关参数在前端的内存地址。
根据预先建立的前端内存页表,查找与该内存地址对应的后端内存地址,得到指针数据。指针数据通常包括有偏移量和大小,如0x0000,100M。
本发明中前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系。前端内存页表优选采用影子页表。影子页表是现有技术中常用的一种软件实现内存地址转译的方式。其通常包括从GVA(Guest Virtual Address)到GPA(GuestPhysical Address),GPA到HVA(Host Virtual Address),HVA到HPA(Host PhysicalAddress)。其中,GVA是虚拟机内的虚拟地址,每个进程都有独立的线性虚拟地址空间(如32位为0-4G);GPA是虚拟机内的线性物理地址,整个虚拟机具有一个线性地址空间(如4G内存0-4G);HVA是宿主机上的虚拟地址;HPA是宿主机上的物理地址。实现了由虚拟机的虚拟地址到宿主机的物理地址的转换。
本发明实施例中,将得到的指针数据以及目标函数调用指令进行打包,得到包含有所述指针数据及所述目标函数调用指令的消息,存放到共享内存中。
其中,共享内存是通过现有技术中EPT技术所实现的。EPT即Intel Extend PageTable英特尔扩展页表。其可以提供共享内存,共享内存中至少包括两个部分,一个部分是前端可以写入由后端读取的地址空间,另一个部分是由后端写入由前端读取的地址空间。共享内存在VM开机时已经初始化完成。本发明实施例中,将消息存放在共享内存中由后端读取的位置。
在实际使用中,VM中设置了特定的插件,使得指定的3D应用程序在运行时,不加载原有的插件,而加载本发明中所特定的插件,在指定的3D应用程序调用原有的API如OPGL的API函数时,先调用特定的插件所指定的函数。
特定的插件请求虚拟化平台在共享内存中分配指定大小的地址空间,分配完成后由指定的3D应用程序发送调用API的请求。
本发明实施例中,如果是指定的3D应用程序,则使用本发明中的调用方法,否则,则使用现有技术中的VirtIO类半虚拟化方式完成。最大限度的提高数据的传输效率和性能。需要说明的是,如果是非3D应用程序,则不使用本发明中的调用方法。
S102、后端获取所述消息,确定所述目标函数的调用指令及所述指针数据;
具体包括,所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
本发明实施例中,前端将消息打包后存放到共享内存中,后端读取共享内存中的消息,解析消息得到目标函数的调用指令以及目标函数参数的指针数据。
在实际使用中,后端设置有代理程序,会定时检测共享内存中是否存在有应用程序发送的消息。当检测到有消息时,获取所述消息,对所述消息进行解析和处理。
S103、所述后端查找预先建立的后端内存页表中与所述函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;
本发明实施例中,由于前端内存页表和后端内存页表的内容是一致的,因此,后端可以依据指针数据来查找共享内存中存储的数据,就可以直接读取由前端将目标函数的相关参数打包后存放到共享内存中的数据。
S104、所述后端依据所述相关参数,运行所述目标函数。
最后运行目标函数,执行相应的操作,例如调用API生成纹理。
需要在此说明的是,执行完成后,还会返回给应用程序执行目标函数的结果。例如成功、失败或返回参数等。
而具体处理完成后得到的数据如纹理或图元数据,本申请技术方案并不关注,其可以通过现有技术中成熟的技术进行处理,如发送到客户端进行显示,或者转发到另外的装置进行处理,或者返回到虚拟机中等。
通过上述技术方案可以看出,由于本发明中在后端重建了与前端相一致的内存页表,因此,在前端调用后端函数时,前端仅需要将函数参数打包为指针数据,后端通过指针数据,直接读取相应位置的函数参数,无需传输原函数的相关参数,大大减小了在传输过程中的数据量,提高了内存调用效率,进而提高了前端和后端的性能。
上述调用方法中,提到了预先建立后端内存页表的过程,下面对此过程进行详细介绍。
如图2所示,图2是本发明实施例中预先建立后端内存页表的流程示意图,所述预先建立的后端内存页表是通过下列方法建立的:
S201、当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
S202、所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
本发明实施例中,如果每一个应用程序进程都预先建立内存页表,显然会浪费资源,因此,只在应用程序启动时,才会申请内存映射,在后端建立内存页表。
本发明实施例中,调用方法还包括:
当前端判断所述应用程序启动时,所述前端暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
实际使用中,在VM的内核层设置有特定的进程进行监控,当监控到指定的3D应用程序启动时,会发出VM暂停运行的指令,使得VM暂时停止运行。由宿主机中的页表管理器来查找此指定的3D应用程序对应的页目录,初始化该指定的3D应用程序的前端影子页表,该前端影子页表的内容与后端影子页表的内容相一致。初始化完成之后,控制VM继续运行,使得程序继续运行。
图3是本发明提供的一种共享显卡虚拟化中内存的调用方法的另一种流程示意图。
所述调用方法包括:
S301、前端接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
S302、后端获取所述消息,确定所述目标函数的调用指令及所述指针数据;
S303、所述后端查找预先建立的后端内存页表中与所述函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同
S304、所述后端依据所述相关参数,运行所述目标函数;
S305、所述后端的页表管理器捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
其中,步骤S301到步骤S304的执行过程与步骤S101与步骤S104相同,在此,不进行赘述。
具体解释一下步骤S305。
在本发明实施例中,如果前端内存页表出现故障时,如果后端内存页表与其不保持同步,则会造成读取数据不存在或读取错误的情况。
因此,需要对前端内存页表的状态进行监控。如果前端内存页表发生故障时,如缺页的情况,则需要执行同步操作,使得前端内存页表和后端内存页表相一致。
在实际使用中,指定的3D应用程序需要申请内存,VM会给其分配内存地址空间,当3D应用程序读取该内存地址空间时,发生缺页,VM会暂停。并对前端内存页表进行修改。
此时,页表管理器捕获到此异常,则会将后端内存页表更新与所述前端内存页表相一致。并同步该3D应用程序的内存映射,在后端地址空间中建立同布局的内存映射。并返回到虚拟机中,控制该3D应用程序继续运行。
需要说明的是,本发明的前后端仅要求运行在同一主机上,并不限制是运行在VM内或宿主机上。可以分别运行在两个VM中,也可以分别运行在VM和宿主机上。
本发明不限制应用场景。不仅可以对显卡虚拟化的场景进行优化,也可以适用于其余的同主机远程调用场景。
本发明不限制前端和后端的操作系统,可以是异构的。
本发明的调用方法中,针对VM内的应用程序通过内存页表同布局映射,可以很大程度提高大内存访问的同主机调用性能。
本发明另一方面提供了一种共享显卡的虚拟化平台,参见图4,图4是本发明提供的一种共享显卡的虚拟化平台的结构示意图,包括前端401和后端402;
所述前端401用于接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
所述后端402用于获取所述消息,确定所述指针数据及所述目标函数;查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;依据所述相关参数,运行所述目标函数。
优选的,所述预先建立的后端内存页表是通过下列方法建立的:
当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
优选的,当前端判断所述应用程序启动时还包括:
所述前端还用于暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
优选的,所述后端获取所述消息,确定所述指针数据及所述目标函数包括:
所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
优选的,其特征在于,还包括后端的页表管理器:
所述后端的页表管理器用于捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
需要说明的是,本实施例的一种共享显卡的虚拟化平台可以采用上述方法实施例中的一种共享显卡虚拟化中内存的调用方法,用于实现上述方法实施例中的全部技术方案,其前端、后端以及其它模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
通过上述技术方案可以看出,由于本发明中的虚拟化平台在后端重建了与前端相一致的内存页表,因此,在前端调用后端函数时,前端仅需要将函数参数打包为指针数据,后端通过指针数据,直接读取相应位置的函数参数,无需传输原函数的相关参数,大大减小了在传输过程中的数据量,提高了内存调用效率,进而提高了前端和后端的性能。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种共享显卡虚拟化中内存的调用方法,应用于虚拟化平台,其特征在于,包括:
前端接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
后端获取所述消息,确定所述指针数据及所述目标函数;
所述后端查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;
所述后端依据所述相关参数,运行所述目标函数。
2.根据权利要求1所述的调用方法,其特征在于,所述预先建立的后端内存页表是通过下列方法建立的:
当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
3.根据权利要求2所述的调用方法,其特征在于,当前端判断所述应用程序启动时还包括:
所述前端暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
4.根据权利要求2所述的调用方法,其特征在于,所述后端获取所述消息,确定所述指针数据及所述目标函数包括:
所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
5.根据权利要求1至4任意一项所述的调用方法,其特征在于,还包括:
所述后端的页表管理器捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
6.一种共享显卡的虚拟化平台,其特征在于,包括前端和后端;
所述前端用于接收到应用程序调用后端目标函数的请求时,确定所述目标函数的相关参数在前端的内存地址,并根据预先建立的前端内存页表,查找所述目标函数对应的后端内存地址,确定与所述后端内存地址对应的指针数据,生成包含有所述指针数据及所述目标函数调用指令的消息,所述前端内存页表中包含有所述应用程序对应的前端内存地址与后端内存地址的对应关系;
所述后端用于获取所述消息,确定所述指针数据及所述目标函数;查找预先建立的后端内存页表中与所述目标函数对应的后端内存地址,并依据所述指针数据在该后端内存地址中获取所述目标函数的相关参数,所述后端内存页表的内容与前端内存页表的内容相同;依据所述相关参数,运行所述目标函数。
7.根据权利要求6所述的虚拟化平台,其特征在于,所述预先建立的后端内存页表是通过下列方法建立的:
当前端判断所述应用程序启动时,发送用于表征所述应用程序启动的启动指令到后端的内存页表管理器;
所述内存页表管理器根据所述启动指令建立后端内存页表,并在共享内存中建立所述应用程序的内存映射;所述共享内存为前端和后端均可以访问的内存地址空间。
8.根据权利要求7所述的虚拟化平台,其特征在于,当前端判断所述应用程序启动时还包括:
所述前端还用于暂停所述应用程序的启动;
所述内存页表管理器若成功建立所述应用程序的内存映射,则向所述共享内存中后端读取的地址空间存放建立成功的标识;
当所述前端读取到所述标识时,控制所述应用程序继续运行。
9.根据权利要求7所述的虚拟化平台,其特征在于,所述后端获取所述消息,确定所述指针数据及所述目标函数包括:
所述后端读取所述共享内存中由所述前端生成并放入所述共享内存中的消息;
解析所述消息得到目标函数的调用指令以及目标函数参数的指针数据;
根据所述调用指令确定目标函数。
10.根据权利要求6至9任意一项所述的虚拟化平台,其特征在于,还包括后端的页表管理器:
所述后端的页表管理器用于捕获到所述前端内存页表发生故障时,将所述后端内存页表更新与所述前端内存页表相一致。
CN201710233189.2A 2017-04-11 2017-04-11 一种共享显卡虚拟化中内存的调用方法及虚拟化平台 Active CN106991057B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710233189.2A CN106991057B (zh) 2017-04-11 2017-04-11 一种共享显卡虚拟化中内存的调用方法及虚拟化平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710233189.2A CN106991057B (zh) 2017-04-11 2017-04-11 一种共享显卡虚拟化中内存的调用方法及虚拟化平台

Publications (2)

Publication Number Publication Date
CN106991057A true CN106991057A (zh) 2017-07-28
CN106991057B CN106991057B (zh) 2020-09-11

Family

ID=59415043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710233189.2A Active CN106991057B (zh) 2017-04-11 2017-04-11 一种共享显卡虚拟化中内存的调用方法及虚拟化平台

Country Status (1)

Country Link
CN (1) CN106991057B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436797A (zh) * 2017-08-14 2017-12-05 深信服科技股份有限公司 一种基于虚拟化环境的指令数据处理方法及装置
CN109426570A (zh) * 2017-08-29 2019-03-05 阿里巴巴集团控股有限公司 一种数据的获取方法、装置及设备
CN109614230A (zh) * 2018-12-03 2019-04-12 联想(北京)有限公司 资源虚拟化方法、装置和电子设备
CN110851181A (zh) * 2018-08-20 2020-02-28 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104685479A (zh) * 2012-08-29 2015-06-03 超威半导体公司 客户虚拟机内的虚拟输入/输出存储器管理单元
WO2015117405A1 (zh) * 2014-08-22 2015-08-13 中兴通讯股份有限公司 Xen虚拟化系统的全映射方法及装置
US20160026567A1 (en) * 2014-07-22 2016-01-28 National Tsing Hua University Direct memory access method, system and host module for virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104685479A (zh) * 2012-08-29 2015-06-03 超威半导体公司 客户虚拟机内的虚拟输入/输出存储器管理单元
US20160026567A1 (en) * 2014-07-22 2016-01-28 National Tsing Hua University Direct memory access method, system and host module for virtual machine
WO2015117405A1 (zh) * 2014-08-22 2015-08-13 中兴通讯股份有限公司 Xen虚拟化系统的全映射方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭萃芬: "XenRPC:虚拟机远程过程调用系统研究", 《计算机科学与技术 湖南大学 2010》 *
徐千洋: "《Linux C函数库参考手册》", 31 December 2002 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436797A (zh) * 2017-08-14 2017-12-05 深信服科技股份有限公司 一种基于虚拟化环境的指令数据处理方法及装置
CN109426570A (zh) * 2017-08-29 2019-03-05 阿里巴巴集团控股有限公司 一种数据的获取方法、装置及设备
CN110851181A (zh) * 2018-08-20 2020-02-28 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
CN110851181B (zh) * 2018-08-20 2023-04-18 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
CN109614230A (zh) * 2018-12-03 2019-04-12 联想(北京)有限公司 资源虚拟化方法、装置和电子设备

Also Published As

Publication number Publication date
CN106991057B (zh) 2020-09-11

Similar Documents

Publication Publication Date Title
CN106991057A (zh) 一种共享显卡虚拟化中内存的调用方法及虚拟化平台
CN108183871B (zh) 一种虚拟交换机、虚拟交换机启动方法,电子设备
CN102932408B (zh) 一种服务器集群的管理方法和平台
CN104965757A (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
CN105979007A (zh) 加速资源处理方法、装置及网络功能虚拟化系统
CN108563517A (zh) 系统接口的调用方法及装置
US9396014B2 (en) Data swap in virtual machine environment
CN102333037A (zh) 虚拟机迁移方法及装置
CN104239227A (zh) 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法
CN106774277A (zh) 一种多虚拟控制器之间的数据共享方法
CN107870879A (zh) 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN103440111B (zh) 虚拟机磁盘空间的扩展方法、宿主机和平台
CN103207965A (zh) 一种虚拟环境下License认证的方法及装置
CN103918239A (zh) 负载均衡方法、装置、系统及计算机可读介质
CN111240605A (zh) 云计算环境下裸金属服务器的部署装置及部署方法
CN113034629A (zh) 图像处理方法、装置、计算机设备及存储介质
CN115292020A (zh) 一种数据处理方法、装置、设备以及介质
CN111338769A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN106385330A (zh) 一种网络功能虚拟化编排器的实现方法及装置
CN105262604B (zh) 虚拟机迁移方法及设备
CN106557280A (zh) 数据存储方法、存储阵列及主机服务器
US10733689B2 (en) Data processing
CN103942149B (zh) 用户态程序与内核交互报文的方法及系统
CN103716221A (zh) 一种在未来网络ndn下的广域网中虚拟机在线迁移方法
CN110795209B (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