CN106155933A - 一种基于KSM及Pass‑through相结合的虚拟机内存共享方法 - Google Patents
一种基于KSM及Pass‑through相结合的虚拟机内存共享方法 Download PDFInfo
- Publication number
- CN106155933A CN106155933A CN201610529436.9A CN201610529436A CN106155933A CN 106155933 A CN106155933 A CN 106155933A CN 201610529436 A CN201610529436 A CN 201610529436A CN 106155933 A CN106155933 A CN 106155933A
- Authority
- CN
- China
- Prior art keywords
- page
- mapping
- ksm
- virtual machine
- iommu
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- 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
-
- 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/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- 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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于KSM及Pass‑through相结合的虚拟机内存共享方法,具体为:虚拟机管理器判断各客户机的操作系统是否使用IOMMU,若否,不参与KSM技术的共享映射;若是,对每个客户机内存页面进行判断,确认是否为映射页面,若是将各客户机的映射页面映射到宿主机中;若否,在保持Pass‑through特性的前提下,对于所有非映射页面使用KSM技术,合并多台虚拟机之间内容相同的内存页面,同时进行写保护处理。本发明把客户机内存页面区分为DMA专用和非DMA用途,进而选择性的仅把KSM技术应用到非DMA页面上,在保持Pass‑through特性的前提下,同时达到节省内存资源的目的。
Description
技术领域
本发明涉及一种基于KSM及Pass-through相结合的虚拟机内存共享方法。
背景技术
在系统虚拟化技术中,客户机(guest)的内存页由宿主机(host)的内存页所支持。例如,虚拟机管理器(VMM)可以利用Intel EPT技术,把客户机物理内存地址(GPA-guestphysical address)映射到宿主机的物理内存地址(HPA-host physical address)。同时,系统虚拟化还常用一些内存共享技术,例如KSM等。
KSM(kernel same page merging)技术,能够在多台虚拟机(VM)之间合并内容相同的内存页,同时设置写保护。例如,VM1中的某个内存页(guest PA1->host PA1),与另一个位于VM2中的内存页(guest PA2->host PA2)内容相同,则在宿主机中只须保留一个内存页(HPA_SH)用于支持映射,也就是说,可以让VM1的guest PA1和VM2的guest PA2都重新映射到同一个页面HPA_SH,并加写保护。该技术节省系统内存,尤其对于客户机中的只读内存页,例如代码页和全零页(zero page)。当虚拟机修改内存页的内容时,KSM利用写时拷贝COW(copy-on-write)机制,取消共享映射。
Pass-through是虚拟化系统中提高设备性能的一类常用技术,原理是通过IOMMU页表,把客户机内存的物理地址重映射到宿主机的内存物理地址,典型如Intel VT-d,将支持Pass-Through的虚拟机命名为PT-VM。PT-VM客户机对物理设备MMIO寄存器的访问,和对物理设备DMA(外设直接访问内存技术)的设置,都是直接方式,如图1所示。PT-VM被广泛应用在当前的虚拟化/云计算环境中,尤其是配合SR-IOV技术。SR-IOV仅需要对设备进行微小的硬件升级,就可以为多虚拟机提供高效的共享操作支持。图2是SR-IOV技术使用IOMMU的示意图。
一个好的系统虚拟化解决方案既要求较高的操作性能,如通过使用Pass-Through技术;又要求节省内存,例如通过使用KSM内存共享技术。
然而,目前KSM内存共享技术无法与DMA直接模式(属于Pass-through技术)同时使用,有两个原因:
一是DMA直接模式下,当修改内存页的内容时不会通知虚拟机管理器(VMM);
二是大多数现有平台都不支持在DMA过程中触发缺页异常(#PF)。
因此,VMM没有机会得知共享内存页的变化而解除共享,进而影响其它共享该内存页面的虚拟机。因此,对于PT-VM中用到的宿主机内存页(作为客户机内存页的映射目标),必须在使用KSM机制前预先排除,避免发生对这些页面实施共享映射。现有方法中缺少相应的技术来解决这个问题。
发明内容
本发明为了解决上述问题,提出了一种基于KSM及Pass-through相结合的虚拟机内存共享方法,本方法结合使用KSM和Pass-through技术,在虚拟机性能效率方面获得最佳的权衡,有效地解决了PT-VM中使用内存共享技术的限制问题。
为了实现上述目的,本发明采用如下技术方案:
一种基于KSM及Pass-through相结合的虚拟机内存共享方法,具体为:虚拟机管理器判断各客户机的操作系统是否使用IOMMU,若否,不参与KSM技术的共享映射;
若是,对每个客户机内存页面进行判断,确认是否为映射页面,若是将各客户机的映射页面映射到宿主机中;
若否,在保持Pass-through特性的前提下,对于所有非映射页面使用KSM技术,合并多台虚拟机之间内容相同的内存页面,同时进行写保护处理。
进一步的,所述虚拟机内存共享方法,具体包括以下步骤:
(1)虚拟机管理器跟踪每台客户机的操作系统,判断各客户机的操作系统是否使用IOMMU,若否,不参与KSM技术的共享映射,若是转入步骤(2);
(2)虚拟机管理器读取启动IOMMU的客户机的内存页面,判断其是否为映射内存页面,若是,将各客户机的映射页面映射到宿主机中,若否进入步骤(3);
(3)基于哈希算法为每台客户机的非映射内存页面数据生成一个页面标识列表,页面标识为页面内容的哈希值;
(4)合并页面标识相同的内存页面,在宿主机中建立一个共享的宿主页面以更新原有的映射,并对该共享的宿主页面进行写保护。
进一步的,判断客户机的操作系统是否使用IOMMU的具体方法为:通过跟踪客户虚拟机对IOMMU的操作,虚拟机管理器确定是否各个客户虚拟机启用了IOMMU,如果虚拟机使用Pass-through设备,但是客户操作系统没有启用IOMMU,虚拟机的所有页面作为DMA页面,即不参与KSM的共享映射。
进一步的,基于客户机IOMMU页表的写保护机制或跟踪IOTLB刷新的机制,虚拟机管理器感知到客户机对虚拟IOMMU页表的修改,并同步修改IOMMU影子页表。
判断是否为映射内存页面的具体方法为:基于IOMMU影子页表,虚拟机管理器确认是否有内存页作为DMA操作的目标页面,且所有的DMA页面都必然被客户机IOMMU页表所映射。
进一步的,当客户机的IOMMU页表的表项被设置时,该设置动作触发VM-exit,虚拟机管理器获知客户机正在写入的PTE内容,如果该PTE是新建一项指向目标页面的映射转换,虚拟机管理器将该目标页面加入到DMA页的链表中。
进一步的,虚拟机管理器建立一个反向映射表,维护从宿主机页帧号到客户机IOMMU中的设备空间地址的映射,以跟踪可能存在的别名映射,如果有客户机IOMMU页表的表项被删除或被更新,则目标页面不再被用于DMA页面,通过查阅反向映射表确认,将确认不再为映射页面的目标页面转移到非映射页面链表中。
使用KSM技术合并相同页面的具体方法为:采用哈希算法,为每一个虚拟机产生一个页面标识列表,页面标识即页面内容的哈希值,假如两个PI相同,认为对应的页面内容相同,发现不同或相同的虚拟机中包含一组内容一致的内存页时,把它们合并成一个。
进一步的,合并的具体做法为:将具有相同内存页的虚拟机的客户页帧号分别映射到一个宿主页帧号,虚拟机管理器基于一个共享的宿主页面更新原有的映射,并为这两个映射设置写保护。
进一步的,当有客户机修改了某共享页面的内容,因为设定的映射写保护机制,触发VM-exit,虚拟机管理器一旦检测到该触发信号,取消共享页面的映射。
所述取消共享页面的映射的具体方法为:
(i)另外分配新的宿主页面HPN2;
(ii)将原宿主共享页面HPN1的内容复制到新的宿主页面HPN2上;
(iii)分别向原有的具有相同内存页的虚拟机的客户页帧号分别映射到原宿主共享页面HPN1和新的宿主页面HPN2,同时取消两个映射的写保护;
(iv)模拟客户机现场环境,在之前触发VM-exit的断点位置恢复执行。
所述虚拟机管理器对IOMMU影子页表与客户机中的IOMMU页表相对应,具体措施包括为客户机IOMMU页表设置写保护或跟踪客户机的IOTLB刷新操作,以保证客户机修改IOMMU页表时,对应修改IOMMU影子页表。
进一步的,如果客户机修改了共享页面的内容,虚拟机管理器会撤销共享映射。
进一步的,是否为映射内存页面会因客户机的操作而改变,具体包括以下三种情况:
(a)从映射内存页面到非映射内存页面,待处理的客户页帧号之前在映射内存页面链表中,一旦检测到页面角色变化,就把该页面转移到非映射内存页面链表中,进行合并处理相同内容的页面;
(b)从未进行共享的非映射内存页面转化为映射内存页面,待处理的客户页帧号之前在非映射内存页面链表中,尚未建立共享映射,直接将该客户页帧号转移到所属虚拟机的映射内存页面链表中;
(c)从已经进行共享的非映射内存页面转化为映射内存页面,执行撤销共享映射过程,将原虚拟机的客户页帧号进行重映射,将原始客户页帧号转移到相应虚拟机的映射内存页面链表中。
本发明的有益效果为:
(1)目前没有其它技术方案,能够支持在Pass-Through虚拟机中使用KSM内存共享合并技术,本发明解决了这一难题,有效的解决了在Pass-Through虚拟机中使用KSM内存共享合并问题;
(2)Pass-through技术(包括SR-IOV)可以使虚拟机达到很高的DMA操作性能,但是虚拟机在内存页面共享方面表现很差,同时,普通虚拟机(没有采用Pass-through)能够基于KSM共享合并内存页面,但是设备IO性能很低,而本发明能够结合使用Pass-through和KSM两种技术,同时达成提高设备IO性能和节省内存资源的目标;
(3)本发明基于客户机中虚拟化的IOMMU,把客户机内存页面区分为DMA专用和非DMA用途,进而选择性的仅把KSM技术应用到非DMA页面上,在保持Pass-through特性的前提下,同时达到节省内存资源的目的。
附图说明
图1为本发明的虚拟机设备的Pass-through技术示意图;
图2为本发明的虚拟机SR-IOV示意图;
图3为本发明的KSM机制示意图;
图4为本发明的原生操作系统使用IOMMU实现隔离/保护过程示意图;
图5为本发明的基于影子IOMMU页表的IOMMU虚拟化过程示意图;
图6为本发明的流程示意图即KSM与Pass-through协作方法过程图。
具体实施方式:
下面结合附图与实施例对本发明作进一步说明。
本发明的目的,解决PT-VM中使用内存共享技术的限制问题,即结合使用KSM和Pass-through技术,在虚拟机性能效率方面获得最佳的权衡。下文中将该技术发明命名为SM_PT_VM。
SM_PT_VM基于客户机中虚拟化的IOMMU,把客户机内存页面区分为DMA专用和非DMA用途,进而选择性的仅把KSM技术应用到非DMA页面上,在保持Pass-through特性的前提下,同时达到节省内存资源的目的。要点如下:
1)向客户操作系统提供虚拟的IOMMU(目前KVM已经支持),利用客户操作系统自身的机制,支持DMA目标地址空间的保护。
2)识别客户机中内存页面的用途,包括非DMA页和(可能的)DMA页。可以通过跟踪客户机IOMMU页表来识别(当前KVM已经基于IOMMU影子页表机制支持IOMMU虚拟化功能)。只有在虚拟IOMMU页表中建立映射的页面才有可能是DMA页面,它们被设定为DMA专用(即不允许被KSM合并共享)。客户机中的其它页面都作为非DMA页面。
3)本发明的策略是:选择性的把KSM技术仅应用到非DMA页面上。由于通常情况下非DMA页面占大多数,所以该策略能保证很高的合并效率。
4)当KSM合并产生的共享页面需要在IOMMU页表中建立映射(通过截获客户机对IOMMU页面的修改动作),应当取消客户页面的共享映射(基于写时拷贝COW),即拷贝产生新的宿主页面,分离恢复两个单独映射,标记该页面属于某虚拟机的DMA专用页面。
5)当发现某页面对应的PTE项从IOMMU页表中删除时(采用2M大页时为PDE,采用1G大页时为PDPE),并且该页面没有被其它的PTE(PDE/PDPE)项映射,这个页面恢复成为非DMA页面,以后就可以被KSM技术处理。
A、KSM的原理
客户页帧号(GPN)到宿主页帧号(HPN)的映射管理是系统虚拟化的基础技术。Intel EPT(和AMD NPT)基于二维页表,直接在硬件支持下完成映射;影子页表则隐含采用类似原理完成从客户虚拟地址(GVA)到宿主物理地址的映射(HPA)。映射可能因为某些原因而动态变化,例如页面交换(page swap)和页面共享(page sharing,典型如KSM)。这种映射与操作系统内部的内存管理相适应,例如页面内容换出到磁盘的功能。
KSM在虚拟机应用的机制如图3所示。虚拟机管理器(VMM)可以是I型或II型,包括Xen、KVM、Vmware以及HyperV等,即术语VMM既可以代表直接运行于裸机上的Hypervisor型,也可以代表宿主型。KSM管理器位于VMM中,可以在一个独立线程中运行,它负责合并内存页面。KSM通常采用哈希算法,为每一个虚拟机产生一个页面标识(PI)列表,页面标识PI即页面内容的哈希值。假如两个PI相同,就可以认为对应的页面内容相同。
1.1)合并相同的内存页面
当KSM管理器发现不同或相同的虚拟机中包含一组内容一致的内存页时,有可能把它们合并成一个。假如,VM1的GPN1和VM2的GPN2分别映射到HPN1和HPN2,即
GPN1(of VM1)→HPN1
GPN2(of VM2)→HPN2
并且HPN1和HPN2的内容一致。VMM就可能基于一个共享的宿主页面HPN3更新原有的映射(HPN3可以是HPN1或HPN2或新页面但内容拷贝自HPN1/2)
GPN1(of VM1)→HPN3,加写保护
GPN2(of VM2)→HPN3,加写保护
同时,VMM通过EPT(NPT)或影子页表,为这两个映射设置写保护。如此,KSM减少了作为映射支持的宿主内存页的数量。
1.2)取消共享页面映射
一旦某客户机修改了某共享页面(假定GPN1)的内容,就会因为共享页面的写保护机制,触发VM-exit,是指CPU从非根模式切换到根模式,从客户机切换到虚拟机管理器VMM的过程。VMM检测到该条件,按照如下步骤取消共享映射:
a)分配新的宿主页面HPN4
b)拷贝原共享页面HPN3的内容到HPN4
c)映射VM1的GPN1到HPN3,取消写保护
d)映射VM2的GPN2到HPN4,取消写保护
e)模拟客户机现场环境,在之前触发VM-exit的断点位置恢复执行。
B、操作系统对IOMMU的使用以及IOMMU虚拟化
为了保护不同应用程序对设备的操作,操作系统使用IOMMU保护DMA操作。可以为每一个PCIe设备(通过BDF-Bus:Dev:Function作为设备标识)维护单独的IOMMU页表,防止为指定设备预分配的内存页面遭到破坏,也就是,对IOMMU保护的页面进行访问限制。如图4所示。
图5显示了典型VMM的对虚拟IOMMU的实现方法。VMM实现了一个实际的IOMMU页表(命名为IOMMU影子页表)与客户机中的IOMMU页表相对应。为了保证上述两个页表在内容上的同步,典型情况下,VMM可以为客户机IOMMU页表设置写保护,以便当客户机修改页表时,VMM得以及时修改对应的影子页表。另一个可选方案是跟踪客户机的IOTLB刷新操作,即每当客户机执行IOTLB刷新时,对应修改IOMMU影子页表。无论采用哪一种方案,VMM都能够跟踪监视设备DMA操作的目标内存页面。
在本文中,使用术语SIOPT-shadow iommu page tables代表实际的IOMMU页表(用
于客户机的DMA用途);术语“跟踪客户机IOMMU页表变化”包括发现IOMMU页表的变化和监视
IOTLB刷新两个意义。
为实现虚拟IOMMU,VMM需要实现IOMMU影子页表,并且在客户机改写IOMMU页表时触发陷入,以便保持IOMMU影子页表的实时更新。
C、KSM在SM_PT_VM的实现方法
在这一节中,假定客户操作系统使用IOMMU。通过跟踪客户机对IOMMU的操作,VMM可以很容易的确定是否启用了IOMMU(因为虚拟IOMMU是由VMM模拟的)。注意:如果虚拟机使用Pass-through设备,但是客户操作系统没有启用IOMMU,则不能使用SM_PT_VM的策略。该虚拟机的所有页面作为DMA页面,即不参与KSM的共享映射。
图6是SM_PT_VM使用KSM机制的完整示意图。在Pass-through方案中,客户机有直接操作设备DMA的能力,DMA通过IOMMU来实现保护。也就是说,当客户机提交DMA操作时,它需要设置虚拟IOMMU为DMA提供指示。如此,基于客户机IOMMU页表的写保护机制或跟踪IOTLB刷新的机制,VMM就可以感知到客户机对虚拟IOMMU页表的修改(见图5),然后同步修改IOMMU影子页表。
3.1)区分DMA页面和非DMA页面
基于IOMMU影子页表,VMM能够知道某内存页是否作为DMA操作的目标页面。所有的DMA页面都必然被客户机IOMMU页表所映射(进而会被IOMMU影子页表映射)。
典型实现方式是,初始情况下把客户机全部的页面作为非DMA页面(即都可以被KSM管理器合并处理)。一旦有PTE(客户机IOMMU页表的表项)被设置,这种动作会触发VM-exit(页表写保护触发或IOTLB触发),VMM就能及时获知客户机正在写入的PTE内容。如果该PTE是新建一项指向目标页面(GPNx)的映射转换(PTE的present位被设置),VMM把GPNx加入到DMA页的链表中。如图6所示。
VMM可以建立一个反向映射表,维护从HPN(宿主机页帧号)到IOVA(客户机IOMMU中的设备空间地址)的映射,用于跟踪可能存在的别名映射。假如PTE(指向GPNy)被删除(present位被清零)或被新PTE覆盖,则说明GPNy可能不再被用于DMA页面,这需要通过查阅反向映射表确认。一旦确定GPNy不再是DMA页面,VMM就把该页面转移到非DMA页的链表。
3.2)SM_PT_VM的页面共享
通常,KSM管理器可以处理非DMA页面,以共享映射的方式合并内容相同的页面。这里必须注意:共享合并只能应用到非DMA页面。当然,如果客户机修改了共享页面的内容,会执行一个撤销共享映射的过程,就像KSM常规处理过程一样。
并且,SM_PT_VM在工作过程中,页面的角色(DMA或非DMA)可能因客户机的操作而改变(区分DMA和非DMA页面一节中所述),这里分三种情况(以页面GPN5为例):
从DMA页到非DMA页:在这种情况下,GPN5之前在DMA页链表中,一旦检测到页面角色变化,就把该页面转移到非DMA页链表中(可以使用链表或其它数据结构),然后KSM管理器可以合并处理相同内容的页面,如上文过程。
从非DMA页(未共享)到DMA页:在这种情况下,GPN5之前在非DMA页链表中,但是尚未建立共享映射,VMM把GPN5转移到所属虚拟机的DMA页的链表中。
从非DMA页(已共享)到DMA页:在这种情况下,HPN1(VM1中的GPN1映射HPN1)之前被建立共享映射,VMM必须执行撤销共享映射过程,把HPN1拷贝到HPN2(例如),然后重映射VM1的GPN1到HPN1,映射VM2的GPN2到HPN2。与此同时,VMM把GPN1转移到VM1的DMA页的链表中,把GPN2转移到VM2的DMA页的链表中。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (14)
1.一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:虚拟机管理器判断各客户机的操作系统是否使用IOMMU,若否,不参与KSM技术的共享映射;
若是,对每个客户机内存页面进行判断,确认是否为映射页面,若是将各客户机的映射页面映射到宿主机中;
若否,在保持Pass-through特性的前提下,对于所有非映射页面使用KSM技术,合并多台虚拟机之间内容相同的内存页面,同时进行写保护处理。
2.如权利要求1所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:具体包括以下步骤:
(1)虚拟机管理器跟踪每台客户机的操作系统,判断各客户机的操作系统是否使用IOMMU,若否,不参与KSM技术的共享映射,若是转入步骤(2);
(2)虚拟机管理器读取启动IOMMU的客户机的内存页面,判断其是否为映射内存页面,若是,将各客户机的映射页面映射到宿主机中,若否进入步骤(3);
(3)基于哈希算法为每台客户机的非映射内存页面数据生成一个页面标识列表,页面标识为页面内容的哈希值;
(4)合并页面标识相同的内存页面,在宿主机中建立一个共享的宿主页面以更新原有的映射,并对该共享的宿主页面进行写保护。
3.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:判断客户机的操作系统是否使用IOMMU的具体方法为:通过跟踪客户虚拟机对IOMMU的操作,虚拟机管理器确定是否各个客户虚拟机启用了IOMMU,如果虚拟机使用Pass-through设备,但是客户操作系统没有启用IOMMU,虚拟机的所有页面作为DMA页面,即不参与KSM的共享映射。
4.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:基于客户机IOMMU页表的写保护机制或跟踪IOTLB刷新的机制,虚拟机管理器感知到客户机对虚拟IOMMU页表的修改,并同步修改IOMMU影子页表。
5.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:判断是否为映射内存页面的具体方法为:基于IOMMU影子页表,虚拟机管理器确认是否有内存页作为DMA操作的目标页面,且所有的DMA页面都必然被客户机IOMMU页表所映射。
6.如权利要求3所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:当客户机的IOMMU页表的表项被设置时,该设置动作触发VM-exit,虚拟机管理器获知客户机正在写入的PTE内容,如果该PTE是新建一项指向目标页面的映射转换,虚拟机管理器将该目标页面加入到DMA页的链表中。
7.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:虚拟机管理器建立一个反向映射表,维护从宿主机页帧号到客户机IOMMU中的设备空间地址的映射,以跟踪可能存在的别名映射,如果有客户机IOMMU页表的表项被删除或被更新,则目标页面不再被用于DMA页面,通过查阅反向映射表确认,将确认不再为映射页面的目标页面转移到非映射页面链表中。
8.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:使用KSM技术合并相同页面的具体方法为:采用哈希算法,为每一个虚拟机产生一个页面标识列表,页面标识即页面内容的哈希值,假如两个PI相同,认为对应的页面内容相同,发现不同或相同的虚拟机中包含一组内容一致的内存页时,把它们合并成一个。
9.如权利要求8所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:合并的具体做法为:将具有相同内存页的虚拟机的客户页帧号分别映射到一个宿主页帧号,虚拟机管理器基于一个共享的宿主页面更新原有的映射,并为这两个映射设置写保护。
10.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:当有客户机修改了某共享页面的内容,因为设定的映射写保护机制,触发VM-exit,虚拟机管理器一旦检测到该触发信号,取消共享页面的映射。
11.如权利要求10所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:所述取消共享页面的映射的具体方法为:
(i)另外分配新的宿主页面HPN2;
(ii)将原宿主共享页面HPN1的内容复制到新的宿主页面HPN2上;
(iii)分别向原有的具有相同内存页的虚拟机的客户页帧号分别映射到原宿主共享页面HPN1和新的宿主页面HPN2,同时取消两个映射的写保护;
(iv)模拟客户机现场环境,在之前触发VM-exit的断点位置恢复执行。
12.如权利要求1或2所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:所述虚拟机管理器对IOMMU影子页表与客户机中的IOMMU页表相对应,具体措施包括为客户机IOMMU页表设置写保护或跟踪客户机的IOTLB刷新操作,以保证客户机修改IOMMU页表时,对应修改IOMMU影子页表。
13.如权利要求12所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:如果客户机修改了共享页面的内容,虚拟机管理器会撤销共享映射。
14.如权利要求10所述的一种基于KSM及Pass-through相结合的虚拟机内存共享方法,其特征是:是否为映射内存页面会因客户机的操作而改变,具体包括以下三种情况:
(a)从映射内存页面到非映射内存页面,待处理的客户页帧号之前在映射内存页面链表中,一旦检测到页面角色变化,就把该页面转移到非映射内存页面链表中,进行合并处理相同内容的页面;
(b)从未进行共享的非映射内存页面转化为映射内存页面,待处理的客户页帧号之前在非映射内存页面链表中,尚未建立共享映射,直接将该客户页帧号转移到所属虚拟机的映射内存页面链表中;
(c)从已经进行共享的非映射内存页面转化为映射内存页面,执行撤销共享映射过程,将原虚拟机的客户页帧号进行重映射,将原始客户页帧号转移到相应虚拟机的映射内存页面链表中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610529436.9A CN106155933B (zh) | 2016-07-06 | 2016-07-06 | 一种基于KSM及Pass-through相结合的虚拟机内存共享方法 |
US15/256,195 US20180011797A1 (en) | 2016-07-06 | 2016-09-02 | Memory sharing method of virtual machines based on combination of ksm and pass-through |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610529436.9A CN106155933B (zh) | 2016-07-06 | 2016-07-06 | 一种基于KSM及Pass-through相结合的虚拟机内存共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106155933A true CN106155933A (zh) | 2016-11-23 |
CN106155933B CN106155933B (zh) | 2019-02-05 |
Family
ID=58062504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610529436.9A Active CN106155933B (zh) | 2016-07-06 | 2016-07-06 | 一种基于KSM及Pass-through相结合的虚拟机内存共享方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180011797A1 (zh) |
CN (1) | CN106155933B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329836A (zh) * | 2017-07-13 | 2017-11-07 | 北京元心科技有限公司 | 多系统的内存管理方法、管理装置以及移动终端 |
CN107577518A (zh) * | 2017-09-14 | 2018-01-12 | 郑州云海信息技术有限公司 | 一种虚拟机部署方法及装置 |
WO2018053830A1 (en) * | 2016-09-26 | 2018-03-29 | Intel Corporation | Apparatus and method for mediate pass through and shared memory page merge |
CN107967168A (zh) * | 2017-12-08 | 2018-04-27 | 中南大学 | 一种云数据中心里基于共享内存页面的虚拟机整合方法 |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111459849A (zh) * | 2020-04-20 | 2020-07-28 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN113076174A (zh) * | 2021-03-24 | 2021-07-06 | 海光信息技术股份有限公司 | 一种虚拟机内存的管理方法及管理系统 |
CN113176958A (zh) * | 2021-04-29 | 2021-07-27 | 深信服科技股份有限公司 | 一种内存共享方法、装置、设备及存储介质 |
CN115061784A (zh) * | 2022-08-17 | 2022-09-16 | 中诚华隆计算机技术有限公司 | 一种安全容器共享内存的方法及装置 |
CN116126472A (zh) * | 2023-01-20 | 2023-05-16 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086811B2 (en) | 2008-02-25 | 2011-12-27 | International Business Machines Corporation | Optimizations of a perform frame management function issued by pageable guests |
CN109690505B (zh) * | 2016-09-26 | 2023-08-08 | 英特尔公司 | 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法 |
US10394596B2 (en) * | 2017-12-07 | 2019-08-27 | Red Hat, Inc. | Tracking of memory pages by a hypervisor |
GB2570474B (en) | 2018-01-26 | 2020-04-15 | Advanced Risc Mach Ltd | Region fusing |
US10990374B2 (en) * | 2018-09-14 | 2021-04-27 | Microsofttechnology Licensing, Llc | Virtual machine update while keeping devices attached to the virtual machine |
US11494211B2 (en) * | 2019-04-22 | 2022-11-08 | Advanced Micro Devices, Inc. | Domain identifier and device identifier translation by an input-output memory management unit |
US10909053B2 (en) | 2019-05-27 | 2021-02-02 | Advanced Micro Devices, Inc. | Providing copies of input-output memory management unit registers to guest operating systems |
CN110618883B (zh) * | 2019-09-26 | 2022-09-13 | 迈普通信技术股份有限公司 | 一种用于共享内存链表的方法、装置、设备及存储介质 |
US11748135B2 (en) | 2020-07-30 | 2023-09-05 | Red Hat, Inc. | Utilizing virtual input/output memory management units (IOMMU) for tracking encryption status of memory pages |
CN114840330A (zh) * | 2022-03-01 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种内存回收方法、装置及控制设备 |
CN117453352B (zh) * | 2023-12-21 | 2024-04-09 | 麒麟软件有限公司 | 一种Xen下的设备直通方法 |
CN117850985B (zh) * | 2024-03-07 | 2024-07-26 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473139A (zh) * | 2009-07-24 | 2012-05-23 | 超威半导体公司 | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 |
US20120137045A1 (en) * | 2010-11-29 | 2012-05-31 | International Business Machines Corporation | Efficiently determining identical pieces of memory used by virtual machines |
CN102662857A (zh) * | 2010-12-21 | 2012-09-12 | 韩国电子通信研究院 | 用于对于存储进行虚拟化的设备和方法 |
US20150220354A1 (en) * | 2013-11-26 | 2015-08-06 | Dynavisor, Inc. | Dynamic I/O Virtualization |
-
2016
- 2016-07-06 CN CN201610529436.9A patent/CN106155933B/zh active Active
- 2016-09-02 US US15/256,195 patent/US20180011797A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473139A (zh) * | 2009-07-24 | 2012-05-23 | 超威半导体公司 | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 |
US20120137045A1 (en) * | 2010-11-29 | 2012-05-31 | International Business Machines Corporation | Efficiently determining identical pieces of memory used by virtual machines |
CN102662857A (zh) * | 2010-12-21 | 2012-09-12 | 韩国电子通信研究院 | 用于对于存储进行虚拟化的设备和方法 |
US20150220354A1 (en) * | 2013-11-26 | 2015-08-06 | Dynavisor, Inc. | Dynamic I/O Virtualization |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018053830A1 (en) * | 2016-09-26 | 2018-03-29 | Intel Corporation | Apparatus and method for mediate pass through and shared memory page merge |
CN109643277A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN109643277B (zh) * | 2016-09-26 | 2024-02-20 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
US10891237B2 (en) | 2016-09-26 | 2021-01-12 | Intel Corporation | Apparatus and method for mediate pass through and shared memory page merge |
CN107329836A (zh) * | 2017-07-13 | 2017-11-07 | 北京元心科技有限公司 | 多系统的内存管理方法、管理装置以及移动终端 |
CN107577518A (zh) * | 2017-09-14 | 2018-01-12 | 郑州云海信息技术有限公司 | 一种虚拟机部署方法及装置 |
CN107967168B (zh) * | 2017-12-08 | 2021-11-12 | 中南大学 | 一种云数据中心里基于共享内存页面的虚拟机整合方法 |
CN107967168A (zh) * | 2017-12-08 | 2018-04-27 | 中南大学 | 一种云数据中心里基于共享内存页面的虚拟机整合方法 |
CN111190752B (zh) * | 2019-12-30 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
WO2021212610A1 (zh) * | 2020-04-20 | 2021-10-28 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN111459849B (zh) * | 2020-04-20 | 2021-05-11 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN111459849A (zh) * | 2020-04-20 | 2020-07-28 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN113076174A (zh) * | 2021-03-24 | 2021-07-06 | 海光信息技术股份有限公司 | 一种虚拟机内存的管理方法及管理系统 |
CN113176958A (zh) * | 2021-04-29 | 2021-07-27 | 深信服科技股份有限公司 | 一种内存共享方法、装置、设备及存储介质 |
CN113176958B (zh) * | 2021-04-29 | 2024-02-23 | 深信服科技股份有限公司 | 一种内存共享方法、装置、设备及存储介质 |
CN115061784A (zh) * | 2022-08-17 | 2022-09-16 | 中诚华隆计算机技术有限公司 | 一种安全容器共享内存的方法及装置 |
CN115061784B (zh) * | 2022-08-17 | 2022-10-25 | 中诚华隆计算机技术有限公司 | 一种安全容器共享内存的方法及装置 |
CN116126472A (zh) * | 2023-01-20 | 2023-05-16 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
CN116126472B (zh) * | 2023-01-20 | 2023-06-09 | 北京麟卓信息科技有限公司 | 一种基于动态内存虚拟磁盘的跨运行环境文件快速共享方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106155933B (zh) | 2019-02-05 |
US20180011797A1 (en) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106155933A (zh) | 一种基于KSM及Pass‑through相结合的虚拟机内存共享方法 | |
US11175936B2 (en) | Dynamic I/O virtualization system having guest memory management for mapping virtual addresses in a hybrid address space | |
CN104040518B (zh) | 高效存储器和资源管理 | |
US8832352B2 (en) | Hypervisor-driven protection of data from virtual machine clones | |
US6732220B2 (en) | Method for emulating hardware features of a foreign architecture in a host operating system environment | |
CN101477496B (zh) | 基于分布式内存虚拟化的numa结构的实现方法 | |
US8775715B2 (en) | Protection of data from virtual machine clones via paravirtualization | |
US20190108051A1 (en) | Nested virtualization for virtual machine exits | |
US10055254B2 (en) | Accelerated data operations in virtual environments | |
US8464022B2 (en) | Virtualization with shadow page tables | |
US7467381B2 (en) | Resource partitioning and direct access utilizing hardware support for virtualization | |
US7260702B2 (en) | Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor | |
US20140108701A1 (en) | Memory protection unit in a virtual processing environment | |
US7370137B2 (en) | Inter-domain data mover for a memory-to-memory copy engine | |
US10055136B2 (en) | Maintaining guest input/output tables in swappable memory | |
CN103984591B (zh) | 计算机虚拟化系统的PCI设备INTx中断投递方法 | |
JP2007183952A (ja) | ゲストがメモリ変換されたデバイスにアクセスする方法及び装置 | |
US9569223B2 (en) | Mixed shared/non-shared memory transport for virtual machines | |
US10671419B2 (en) | Multiple input-output memory management units with fine grained device scopes for virtual machines | |
US9471226B2 (en) | Reverse copy on write for better cache utilization | |
US10853259B2 (en) | Exitless extended page table switching for nested hypervisors | |
US20160041917A1 (en) | System and method for mirroring a volatile memory of a computer system | |
US20140208034A1 (en) | System And Method for Efficient Paravirtualized OS Process Switching | |
US11762573B2 (en) | Preserving large pages of memory across live migrations of workloads | |
KR20120070326A (ko) | 메모리 가상화 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 901, 28-1 Jingqi Road, Shizhong District, Jinan City, Shandong Province Patentee after: Qian Yun Shuchuang (Shandong) Information Technology Research Institute Co., Ltd. Address before: 100193 Room 204, Area 2A, Second Floor, Building 5, 8 Wangxi Road, Haidian District, Beijing Patentee before: Sun Chong Chong (Beijing) Information Technology Research Institute Co., Ltd. |