CN115061781A - 页表处理方法和装置 - Google Patents
页表处理方法和装置 Download PDFInfo
- Publication number
- CN115061781A CN115061781A CN202210724070.6A CN202210724070A CN115061781A CN 115061781 A CN115061781 A CN 115061781A CN 202210724070 A CN202210724070 A CN 202210724070A CN 115061781 A CN115061781 A CN 115061781A
- Authority
- CN
- China
- Prior art keywords
- host
- page table
- virtual machine
- access flag
- flag bit
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
- 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/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本说明书提供一种页表处理方法和装置。所述方法包括:在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
Description
技术领域
本说明书涉及虚拟化技术领域,尤其涉及页表处理方法和装置。
背景技术
在虚拟化技术中,主机可以为虚拟机分配物理资源,例如,内存资源。虚拟机可以发送虚拟地址,该虚拟地址通过页表映射为内存的物理地址,从而实现内存访问。由于虚拟机对物理资源的正常访问需要依赖虚拟机页表,因此,有必要对页表的处理方式进行改进,以保证虚拟机对物理资源的正常访问。
发明内容
根据本说明书实施例的第一方面,提供一种页表处理方法,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述方法应用于KVM;所述方法包括:
在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
在一些实施例中,所述将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态,包括:
获取所述虚拟机在发生缺页异常的情况下发送的超级调用指令;其中,所述虚拟机在发生缺页异常时发送所述超级调用指令,并将所述第一映射关系写入所述虚拟机页表;
响应于所述超级调用指令将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态。
在一些实施例中,所述超级调用指令中包括所述虚拟机页表中对应于所述目标虚拟机虚拟地址的第一虚拟机页表项的第一指针信息;所述响应于所述超级调用指令将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态,包括:
将所述第一指针信息翻译成所述第一主机页表项的第二指针信息;
根据所述第二指针信息将所述第一主机页表项的保留位设置为异常状态。
在一些实施例中,所述超级调用指令中携带所述目标虚拟机物理地址;在将所述目标虚拟机物理地址翻译成目标主机物理地址之前,所述方法还包括:
从所述超级调用指令中解析出所述目标虚拟机物理地址。
在一些实施例中,所述主机页表中的每个主机页表项还包括存在标志位,一个主机页表项的存在标志位用于标志所述主机页表项中的虚拟机虚拟地址是否被映射到主机物理地址;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被设置为异常状态,且所述第一主机页表项的存在标志位被设置为目标状态,陷出到主机进行缺页异常处理;所述目标状态用于标志所述第一主机页表项中的虚拟机虚拟地址已被映射到主机物理地址。
在一些实施例中,所述主机页表中的每个主机页表项包括:
对应于MMU的第一访问标志位,用于标志所述主机页表项中的主机物理地址是否被访问过;
对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;
对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过;
其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。
在一些实施例中,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位;和/或
在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
在一些实施例中,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中;和/或
在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
在一些实施例中,以下操作通过原子操作执行,所述原子操作用于使以下操作中的一者生效:
将所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位所述虚拟机更新到所述主机页表项中的操作;以及
将所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位所述主机更新到所述主机页表项中的操作。
根据本说明书实施例的第二方面,提供一种页表处理方法,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述方法应用于虚拟机;所述方法包括:
获取访存请求中携带的目标虚拟机虚拟地址,所述目标虚拟机虚拟地址未被映射到目标虚拟机物理地址;
将所述目标虚拟机虚拟地址翻译成目标虚拟机物理地址,并将所述目标虚拟机虚拟地址与所述目标虚拟机物理地址之间的映射关系写入虚拟机页表,以触发KVM尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
其中,在翻译失败的情况下,所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位被设置为异常状态,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
根据本说明书实施例的第三方面,提供一种页表处理方法,应用于虚拟机,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机物理地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系,所述主机页表中的每个主机页表项还包括第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过;所述主机页表的存储地址预先被映射到虚拟机的超空间中的目标地址;所述方法包括:
获取目标虚拟机页表的目标页框号和预先建立的地址数组;所述地址数组中的每个元素分别用于记录一个虚拟机页表的页框号与所述超空间中的一个地址之间的映射关系;
基于所述页框号和所述地址数组获取所述主机页表的存储地址;
从所述主机页表的存储地址中读取第二主机页表项的第一访问标志位。
在一些实施例中,所述主机页表中的每个主机页表项还包括:
对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;
对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过;
其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。
在一些实施例中,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位;和/或
在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
在一些实施例中,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中;和/或
在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
在一些实施例中,以下操作通过原子操作执行,所述原子操作用于使以下操作中的一者生效:
将所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位所述虚拟机更新到所述主机页表项中的操作;以及
将所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位所述主机更新到所述主机页表项中的操作。
根据本说明书实施例的第四方面,提供一种页表处理装置,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述装置应用于KVM;所述装置包括:
翻译模块,用于在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
设置模块,用于若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
根据本说明书第五方面,提供一种页表处理装置,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述装置应用于虚拟机;所述装置包括:
第一获取模块,用于获取访存请求中携带的目标虚拟机虚拟地址,所述目标虚拟机虚拟地址未被映射到目标虚拟机物理地址;
写模块,用于将所述目标虚拟机虚拟地址翻译成目标虚拟机物理地址,并将所述目标虚拟机虚拟地址与所述目标虚拟机物理地址之间的映射关系写入虚拟机页表,以触发KVM尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
其中,在翻译失败的情况下,所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位被设置为异常状态,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
根据本说明书第六方面,提供一种页表处理装置,应用于虚拟机,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机物理地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系,所述主机页表中的每个主机页表项还包括第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过;所述主机页表的存储地址预先被映射到虚拟机的超空间中的目标地址;所述装置包括:
第二获取模块,用于获取目标虚拟机页表的目标页框号和预先建立的地址数组;所述地址数组中的每个元素分别用于记录一个虚拟机页表的页框号与所述超空间中的一个地址之间的映射关系;
第三获取模块,用于基于所述页框号和所述地址数组获取所述主机页表的存储地址;
读取模块,用于从所述主机页表的存储地址中读取第二主机页表项的第一访问标志位。
根据本说明书第七方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行本说明书任一实施例所述的方法。
根据本说明书第八方面,提供一种计算机可读介质,包括:
该指令被处理器执行时实现本说明书任一实施例所述的方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
基于主机页表中各主机页表项的保留位的状态来决定是否需要陷出到主机进行缺页异常处理。只有存在被置为异常状态的第一主机页表项的情况下,才需要陷出到主机进行缺页异常处理,如果不存在保留位被置为异常状态的主机页表项,则不需要陷出到主机进行缺页异常处理。因此,本说明书实施例的方案减少了陷出次数,提高了缺页异常的处理效率。
预先将主机页表的存储地址映射到虚拟机的超空间,并通过地址数组记录了虚拟机页表的页框号与超空间中的地址的映射关系。这样,虚拟机就可以基于该映射关系和虚拟机页表的页框号从主机页表的存储地址中读取到主机页表,从而读取到主机页表中的第二主机页表项中的第一访问标志位,无需通过陷出来获取第一访问标志位,减少了获取第一访问标志位时的陷出操作,降低了存在缺页异常时对主机处理资源的占用,提高了缺页异常的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是虚拟化系统的示意图。
图2是本说明书根据一示例性实施例示出的一种页表处理方法的流程图。
图3是本说明书根据一示例性实施例示出的设置rsvd和present位的过程的示意图。
图4是本说明书根据另一示例性实施例示出的一种页表处理方法的流程图。
图5是本说明书根据再一示例性实施例示出的一种页表处理方法的流程图。
图6是本说明书根据一示例性实施例示出的备份主机页表与虚拟机页表的映射方式的示意图。
图7是本说明书根据一示例性实施例示出的一种页表处理装置的框图。
图8是本说明书根据另一示例性实施例示出的一种页表处理装置的框图。
图9是本说明书根据再一示例性实施例示出的一种页表处理装置的框图。
图10是本说明书根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1示出了一些实施例中的虚拟化系统,该虚拟化系统包括:
物理机(host)101,也被称作主机或者宿主机,包括内存、处理器等硬件资源;
虚拟机监控器(Virtual Machine Monitor,VMM)102,在一实施例中也被称作基于内核的虚拟机(Kernel-based Virtual Machine,KVM),被将主机101上的硬件资源分配给虚拟机(guest)103;
虚拟机103,运行在主机101上,一台主机101上可以运行一台或多台虚拟机103。虚拟机103可以根据虚拟机监控器102分配的硬件资源建立,在被分配硬件资源之后,虚拟机103上可以运行一个或多个进程。
虚拟机103上的进程访问内存空间时会携带访问地址,该访问地址为虚拟机虚拟地址(Guest Virtual Address,GVA),KVM 102能够将GVA翻译成主机物理地址(HostPhysical Address,HPA)。翻译的过程可以基于页表实现,页表中包括多个页表项,每个页表项均用于记录一个GVA与HPA之间的映射关系。由于物理地址一般是按需分配给虚拟机103的,因此,并非每个GVA都被映射到HPA,往往是在进程需要访问内存资源的时候才将对应的HPA映射到GVA。每个页表项还包括一些比特位,例如,Abit(用于记录该页表项对应的物理地址是否被访问过,包括读访问和写访问),Dbit(用于记录该页表项对应的物理地址是否被写访问过),present(用于记录该页表项中的虚拟地址对应的物理地址是否存在)。
页表包括虚拟机页表(Guest Page Table,GPT)和宿主机页表(Host Page Table,HPT),GPT用于记录GVA与虚拟机物理地址(Guest Physical Address,GPA)之间的映射关系,HPT用于记录GPA与HPA之间的映射关系,或者直接记录GVA与HPA之间的映射关系。在进行地址翻译时,KVM 102可以直接将GVA翻译成HPA,或者先将GVA翻译成GPA,再将GPA翻译成HPA。
如前所述,某些GVA与HPA之间的映射关系可能无法从页表中获取到,此时会发生缺页异常(page fault)。在发生缺页异常时,需要通过软件方式将GVA与HPA之间的映射关系写入页表,通过软件方式写映射关系的过程称为陷出。然而,相关技术中的陷出开销比较大。下面结合一个实施例对相关技术中处理缺页异常的过程进行说明。具体的处理过程包括如下步骤:
(1)虚拟机103上的进程访问GVA,在页表中没有记录该GVA与HPA的映射关系,从而触发page fault。
(2)中断进程的访存操作,进入page fault处理流程。
(3)在page fault处理流程中,陷出到虚拟机103,以使虚拟机103在GPT中建立GVA与GPA之间的映射关系。
(4)进程再次访问该GVA,页表中仍未记录该GVA与HPA的映射关系,从而再次触发page fault。
(5)再次中断进程的访存操作,进入第二次page fault处理流程。
(6)在第二次page fault处理流程中,再次陷出,由KVM先将GPA翻译成HPA,再将GVA与HPA之间的映射关系写到HPT中。
(7)进程再次访问GVA,由于此时GVA与HPA之间的映射关系已经存在,因此,进程能够顺利访问。
可以看出,上述过程在处理缺页异常时需要陷出两次,导致陷出开销较大。为了解决上述问题,本说明书实施例提供一种页表处理方法,本说明书实施例中的页表包括主机页表(HPT)和虚拟机页表(GPT),所述主机页表用于记录虚拟机物理地址(GPA)与主机物理地址(HPA)之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址(GVA)与虚拟机物理地址之间的映射关系。所述方法应用于KVM,参见图2,所述方法包括:
步骤201:在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
步骤202:若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
本说明书实施例基于主机页表中各主机页表项的保留位的状态来决定是否需要陷出到主机进行缺页异常处理。只有存在被置为异常状态的第一主机页表项的情况下,才需要陷出到主机进行缺页异常处理,如果不存在保留位被置为异常状态的主机页表项,则不需要陷出到主机进行缺页异常处理。因此,本说明书实施例的方案减少了陷出次数,提高了缺页异常的处理效率。
在步骤201中,目标虚拟机虚拟地址(以下记为GVA0)为存在缺页异常的地址,即,GVA0未被映射到目标主机物理地址(以下记为HPA0)。其中,GVA0未被映射到HPA0包括两种情况,第一种情况是GVA0未被映射到目标虚拟机物理地址(以下称为GPA0),也未被映射到HPA0;第二种情况是GVA0被映射到GPA0,但未被映射到HPA0。由于虚拟机可以将GVA与GPA之间的映射关系写入GPT,因此,在第一种情况下,可以由虚拟机103将GVA0与GPA0之间的第一映射关系写入GPT。在上述过程中,主机页表中的保留位的状态为正常状态,因此,上述第一种缺页异常的情况无需陷出。
在上述写操作完成后,将进入第二种情况,即GVA0被映射到GPA0,但未被映射到HPA0。虚拟机103的上述写操作可以触发KVM 102尝试将GVA0翻译成HPA0。在步骤202中,由于在第二种情况下,GVA0未被映射到HPA0,因此,KVM 102的上述翻译过程会失败。在翻译失败时,KVM 102可以将HPT中对应于GVA0的第一主机页表项中的保留位(以下记为rsvd)的状态从正常状态调整为异常状态。其中,HPT中对应于GVA0的第一主机页表项为HPT中用于记录GVA0与HPA0之间的映射关系的主机页表项。
在一些实施例中,操作系统最多支持的HPA的位数大于实际使用的HPA的位数,操作系统最多支持的HPA中超出实际使用的HPA的位数称为保留位。例如,X86最多支持52位的HPA,但实际只用了46位,最高的6位均为保留位。在实际应用中,需要将保留位全部置为0,否则操作系统会报rsvd错误。上述将保留位设置为异常状态可以是将任意一位或多位保留位设置为1。如果GVA0被进程访问,则一旦GVA0所在的主机页表项的保留位并非全0,该GVA0就会被陷出到主机进行缺页异常处理。也就是说,只有对于GVA0被映射到GPA0,但未被映射到HPA0这种缺页异常,才会陷出到主机来处理缺页异常。
下面结合一个实施例对本说明书实施例中处理缺页异常的过程进行说明。具体的处理过程包括如下步骤:
(1)虚拟机103上的进程访问GVA0,在页表中没有记录该GVA0与HPA0的映射关系,从而触发page fault。
(2)中断进程的访存操作,进入page fault处理流程。
(3)在page fault处理流程中,由虚拟机103在GPT中建立GVA0与GPA0之间的映射关系,并触发KVM将GVA0翻译成HPA0。
(4)KVM 102翻译失败,将HPT中GVA0所在的页表项中的保留位置为异常状态。
(5)陷出到主机101进行缺页异常处理。
在上述流程中,可以采用pfec mask/match实现仅对存在rsvd错误的page fault进行陷出。这样,所有没有映射过HPA的GVA就会从主机上陷出,而虚拟机内部的page fault(即没有映射过GPA的GVA)就不会陷出。
根据前文对相关技术中处理缺页异常的过程的说明可知,相关技术需要通过两次陷出来处理上述缺页异常,第一次陷出为陷出到虚拟机,以使虚拟机将GVA0与目标虚拟机物理地址(以下记为GPA0)之间的映射关系写入GPT;第二次陷出为陷出到主机,以使主机将GVA0与HPA0之间的映射关系写入HPT。然而,在本说明书的处理方式中,只有在第一主机页表项的保留位被置为异常状态的情况下,才会陷出到主机来对GVA0进行缺页处理,而在第一主机页表项的保留位未被置为异常状态的情况下,仍然通过虚拟机来处理缺页异常。这样,只需要进行一次陷出即可处理缺页异常,减少了陷出次数,提高了缺页异常的处理效率。
在一些实施例中,KVM 102可以获取所述虚拟机103在发生缺页异常的情况下发送的超级调用(hypercall)指令,并响应于所述超级调用指令将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态。
其中,虚拟机103上的处理器(称为vCPU)即为主机101上的一个线程,该线程包括主机状态和虚拟机状态,在虚拟机状态下,该线程作为虚拟机103的一部分来运行;在主机状态下,该线程作为主机101的一部分来运行。在发生page fault的情况下,虚拟机103可以分别执行以下两个操作:
1)主动执行一个超级调用指令,这个hypercall指令可以被KVM 102获取到,使vCPU从虚拟机状态切换回主机状态,在主机状态下,可以通过KVM 102来进行地址翻译。
2)将GVA0与GPA0之间的第一映射关系写入GPT。这样,KVM 102可以在vCPU切换回主机状态之后,将第一主机页表项的保留位设置为异常状态,然后进行地址翻译。
在一些实施例中,所述超级调用指令中包括所述虚拟机页表中对应于所述目标虚拟机虚拟地址的第一虚拟机页表项的第一指针信息。其中,第一虚拟机页表项即为虚拟机页表中用于记录GVA0与GPA0之间的映射关系的虚拟机页表项。第一指针信息用于指向第一虚拟机页表项的存储地址,KVM 102可以基于第一指针信息获取到第一虚拟机页表项,然后基于第一虚拟机页表项确定第一主机页表项。具体来说,KVM 102可以将所述第一指针信息翻译成所述第一主机页表项的第二指针信息,并根据所述第二指针信息确定第一主机页表项。在确定第一主机页表项之后,KVM 102可以将所述第一主机页表项的保留位设置为异常状态。在一些实施例中,所述超级调用指令中还携带所述目标虚拟机物理地址。这样,KVM102可以直接从所述超级调用指令中解析出所述目标虚拟机物理地址。
由于KVM 102能够直接基于超级调用指令中的第一指针信息确定第一主机页表项,并能够直接从超级调用指令中解析出GPA0,因此,无需陷出到主机101来通过读取(walk)页表的方式确定第一主机页表项和GPA0,从而减少了陷出次数,完全去除了缺页模拟walk页表带来的虚拟化开销。
在一些实施例中,所述主机页表中的每个主机页表项还包括存在标志位(记为present),一个主机页表项的存在标志位用于标志所述主机页表项中的虚拟机虚拟地址是否被映射到主机物理地址。一个主机页表项的存在标志位可以包括第一状态和第二状态,所述第一状态用于标志所述主机页表项中的虚拟机虚拟地址已被映射到主机物理地址,所述第二状态用于标志所述主机页表项中的虚拟机虚拟地址未被映射到主机物理地址。在一些实施例中,所述第一状态和所述第二状态分别对应二进制数值“1”和“0”。
在主机页表项包括存在标志位的情况下,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被设置为异常状态,且所述第一主机页表项的存在标志位被设置为目标状态,陷出到主机进行缺页异常处理。如果第一主机页表项的保留位未被设置为异常状态,或者第一主机页表项的存在标志位未被设置为目标状态,则均不需要陷出到主机进行缺页异常处理。其中,所述目标状态即为上述第一状态,用于标志所述第一主机页表项中的虚拟机虚拟地址已被映射到主机物理地址。
参见图3,假设在GPT中包括两个虚拟机页表项,这两个虚拟机页表项的页框号分别记为gfn1和gfn2,且这两个虚拟机页表项中的存在标志位均为第一状态,记为(P)。其中,gfn1被映射到hfn1,gfn2未被映射到任何一个物理地址。在HPT中包括两个主机页表项,其中一个主机页表项的页框号记为hfn1,该页表项对应于gfn1所在的虚拟机页表项;另一个主机页表项中的保留位被设置为异常状态(记为rsvd),该页表项对应于gfn2所在的虚拟机页表项。此外,两个主机页表项中的存在标志位均为第一状态,记为(P)。由于HPT中存在同时满足保留位异常,以及存在标志位为第一状态的主机页表项,因此,可以判定发生pagefault(记为#PF),然后从该主机页表项对应的虚拟机页表项(即gfn2所在的页表项)中获取gfn2,将gfn2翻译成hfn2,再将hfn2与gfn2之间的映射关系写入HPT。
由于主机物理地址是按需分配的,在一个虚拟机虚拟地址对应的主机物理地址未被访存请求所访问的情况下,该虚拟机虚拟地址不会被分配主机物理地址,因此,在这种情况下,无论该虚拟机虚拟地址对应的主机页表项中的保留位是否被置为异常状态,都没有必要进行陷出。因此,本说明书实施例将第一主机页表项的存在标志位置位目标状态,其作用是表示第一主机页表项中GVA0对应的HPA0已经被访问过,从而本该被映射到某个主机物理地址;但通过将rsvd置为异常状态,又指示了GVA0映射的主机物理地址是一个错误的物理地址。这样,KVM 102基于上述两个互相矛盾的信息,就可以识别出存在缺页异常,从而陷出到主机101对缺页异常进行处理。
综上所述,本说明书实施例的缺页异常处理方式与相关技术中的处理方式的区别在于:
(1)陷出次数的不同,本说明书的处理方式只需要陷出一次,相关技术中的处理方式需要陷出两次。
(2)相关技术中的处理方式只关心HPT有没有被同步过,不关注虚拟机有没有对GPT进行写操作。本说明书的处理方式则关注虚拟机有没有对GPT进行写操作,是在写GPT的时候触发陷出的。
在一些实施例中,主机页表中的每个主机页表项除了包括rsvd之外,还可以包括访问标志位,用于标志所述主机页表项中的主机物理地址是否被访问过。访问标志位可以包括A bit,也可以包括D bit。
在虚拟化过程中,需要对主机页表中各主机页表项的第一访问标志位进行设置,以便主机和虚拟机确定该主机页表项对应的HPA是否曾经被访问过。主机和虚拟机都可能对访问标志位进行清除,需要满足以下条件:主机在主机上一次清除访问标志位到当前时刻之间,需要能够获取到访问标志位,从而确定各个HPA是否被访问过;虚拟机在虚拟机上一次清除访问标志位到当前时刻之间,也需要能够获取到访问标志位,从而确定各个HPA是否被访问过。但是,如果虚拟机在主机两次清除访问标志位之间执行了清除访问标志位的操作,那主机就无法确定对应的HPA是否被访问过了。同理,如果主机在虚拟机两次清除访问标志位之间执行了清除访问标志位的操作,那虚拟机就无法确定对应的HPA是否被访问过了。
为了解决上述问题,本说明书设置了三个访问标志位,包括:对应于MMU的第一访问标志位,用于标志所述主机页表项中的主机物理地址是否被访问过;对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;以及对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过。其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。上述第一访问标志位、第二访问标志位和第三访问标志位统称为访问标志位。
主机和虚拟机都可以从主机页表项中读取第一访问标志位、第二访问标志位和第三访问标志位。在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位。
例如,假设从主机页表项中读取的第一访问标志位、第二访问标志位和第三访问标志位依次记为{1,1,1},若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,则第一访问标志位和第三访问标志位被更新为0;同时,为了使主机能够获取到主机页表项中对应物理地址的访问状态,可以将虚拟机清除之前的第一访问标志位(即“1”)更新到第二访问标志位上,即第二访问标志位仍然为1。这样,虚拟机执行清除操作后,第一访问标志位、第二访问标志位和第三访问标志位依次记为{0,1,0}。
又例如,假设从主机页表项中读取的第一访问标志位、第二访问标志位和第三访问标志位依次记为{1,0,1},若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,则第一访问标志位和第三访问标志位被更新为0;同时,为了使主机能够获取到主机页表项中对应物理地址的访问状态,可以将虚拟机清除之前的第一访问标志位(即“1”)更新到第二访问标志位上,即第二访问标志位从“0”更新为“1”。这样,虚拟机执行清除操作后,第一访问标志位、第二访问标志位和第三访问标志位依次记为{0,1,0}。
同理,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
例如,假设从主机页表项中读取的第一访问标志位、第二访问标志位和第三访问标志位依次记为{1,1,0},若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,则第一访问标志位和第二访问标志位被更新为0;同时,为了使虚拟机能够获取到主机页表项中对应物理地址的访问状态,可以将主机清除之前的第一访问标志位(即“0”)更新到第三访问标志位上,即第三访问标志位从“0”更新为“1”。这样,主机执行清除操作后,第一访问标志位、第二访问标志位和第三访问标志位依次记为{0,0,1}。
在主机或虚拟机执行清除操作之后,各访问标志位会发生改变,因此,需要将改变后的访问标志位更新到主机页表项中。然而,可能存在主机和虚拟机同时更新主机页表项的情况,如果主机和虚拟机的更新操作都生效,则可能导致更新错误。
为了解决更新错误的问题,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中。
接着前面的例子,假设主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位依次为{1,1,1},从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位(即虚拟机执行清除操作前读取到的各访问标志位)也依次为{1,1,1},虚拟机对第一访问标志位和第三访问标志位进行清除之后,第一访问标志位、第二访问标志位和第三访问标志位依次为{0,1,0}。由于读出的各访问标志位({1,1,1})与主机页表项中存储的各访问标志位({1,1,1})分别一致,这表示在虚拟机执行清除操作之后,且在虚拟机将各访问标志位更新到主机页表项之前,主机页表项中的各访问标志位没有被主机更新过。因此,可以将虚拟机执行清除操作之后的各访问标志位({0,1,0})更新到主机页表项中,从而主机页表项中各访问标志位从{1,1,1}被更新为{0,1,0}。
如果主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位依次为{0,0,1},但从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位(即虚拟机执行清除操作前读取到的各访问标志位)依次为{1,1,1},则读出的各访问标志位({1,1,1})与主机页表项中存储的各访问标志位({0,0,1})不一致,这表示在虚拟机执行清除操作之后,且在虚拟机将各访问标志位更新到主机页表项之前,主机页表项中的各访问标志位被主机更新过。因此,不会将虚拟机执行清除操作之后的各访问标志位更新到主机页表项中,从而主机页表项中各访问标志位仍为{0,0,1}。
同样地,在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
通过上述方式,可以避免主机和虚拟机同时对第二主机页表项中的访问标志位进行更新导致的错误。
进一步地,以下操作通过原子操作执行:将所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位所述虚拟机更新到所述主机页表项中的操作;以及将所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位所述主机更新到所述主机页表项中的操作。通过采用原子操作,能够使上述两个更新操作中只有一者生效,从而避免主机和虚拟机同时对第二主机页表项中的访问标志位进行更新导致的错误。
以所述第一访问标志位、第二访问标志位和第三访问标志位均为A bit为例,为了便于区分,将第一标志位、第二访问标志位和第三访问标志位分别记为S_A_bit、H_A_bit和G_A_bit。
在上述方案中,主机可以清除H_A_bit和S_A_bit,但不能清除虚拟机的G_A_bit;虚拟机可以清除虚拟机的G_A_bit和S_A_bit,但不可以清除H_A_bit。由于采用了三个访问标志位,在虚拟机执行了清除访问标志位的操作之后,主机仍然可以基于H_A_bit来确定HPA是否被访问过。例如,如果虚拟机把S_A_bit清除掉了,由于H_A_bit中保存了S_A_bit清除前的状态,因此,主机可以根据H_A_bit确定HPA是否被访问过;同理,如果主机把S_A_bit清除掉了,由于G_A_bit中保存了S_A_bit清除前的状态,因此,虚拟机可以根据G_A_bit确定HPA是否被访问过。
具体实现方式如下:
在虚拟机执行清除操作时:
new_hpte=old_hpte&~G&~A
if(old_hpte&A)
new_hpte|=H_A_bit
cmpxchg(hptep,new_hpte,old_hpte)
在上述代码中,old_hpte表示从HPT中的页表项中读出的访问标志位,包括第一访问标志位、第二访问标志位和第三访问标志位。~G用于表示虚拟机是否对第三访问标志位进行了置位,如果~G为真,表示虚拟机未对第三访问标志位进行置位,否则表示虚拟机对第三访问标志位进行了置位;~A用于表示虚拟机是否对第一访问标志位进行了置位,如果~A为真,表示虚拟机未对第一访问标志位进行置位,否则表示虚拟机对第一访问标志位进行了置位。在进行与操作时,~G和读出的访问标志位中的G_A_bit进行与运算得到新的第三访问标志位,~A和读出的访问标志位中的A_bit进行与运算得到新的第一访问标志位。新的第二访问标志位用于保存S_A_bit清除前的状态。
在这种情况下,可以通过原子操作cmpxchg对hptep中当前存储的访问标志位与从old_hpte中读取的访问标志位进行比较。如果二者一致,则将new_hpte更新到hptep中,否则不执行更新操作。其中,hptep表示hpte(即主机页表项)的存储地址。
同理,在宿主机执行清除操作时:
new_hpte=old_hpte&~H&~A
if(old_hpte&A)
new_hpte|=G_A_bit
cmpxchg(hptep,new_hpte,old_hpte)
在上述代码中,old_hpte表示从HPT中的页表项中读出的访问标志位,包括第一访问标志位、第二访问标志位和第三访问标志位。~H用于表示主机是否对第二访问标志位进行了置位,如果~H为真,表示主机未对第二访问标志位进行置位,否则表示主机对第二访问标志位进行了置位;~A用于表示主机是否对第一访问标志位进行了置位,如果~A为真,表示主机未对第一访问标志位进行置位,否则表示主机对第一访问标志位进行了置位。在进行与操作时,~H和读出的访问标志位中的H_A_bit进行与运算得到新的第二访问标志位,~A和读出的访问标志位中的A_bit进行与运算得到新的第一访问标志位。新的第三访问标志位用于保存S_A_bit清除前的状态。
在这种情况下,可以通过原子操作cmpxchg对hptep中当前存储的访问标志位与当前从old_hpte中读取的访问标志位进行比较。如果二者一致,则将new_hpte更新到hptep中,否则不执行更新操作。其中,hptep表示hpte(即主机页表项)的存储地址。
在一些实施例中,除了可以通过主机和虚拟机对A_bit进行清除之外,还可以通过硬件,例如,内存管理单元(Memory Management Unit,MMU),对S_A_bit进行清除。MMU对S_A_bit进行清除后,可以对G_A_bit和H_A_bit也分别进行清除。
无论是对访问标志位进行清除之前还是清除之后,虚拟机和主机都可以从主机页表项中读取访问标志位,虚拟机读取到的内容为:
(*hptep&G_A_bit)or(*hptep&A_bit);
主机读取到的内容为:
(*hptep&H_A_bit)or(*hptep&A_bit)。
其中,*hptep表示hptep这一存储地址中存储的内容,即主机页表项的内容。
参见图4,本说明书实施例还提供一种页表处理方法,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述方法应用于虚拟机103;所述方法包括:
步骤401:获取访存请求中携带的目标虚拟机虚拟地址,所述目标虚拟机虚拟地址未被映射到目标虚拟机物理地址;
步骤402:将所述目标虚拟机虚拟地址翻译成目标虚拟机物理地址,并将所述目标虚拟机虚拟地址与所述目标虚拟机物理地址之间的映射关系写入虚拟机页表,以触发KVM102尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
其中,在翻译失败的情况下,所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位被设置为异常状态,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
在步骤401中,访存请求可以是虚拟机103上运行的进程所发送的,用来访问某个虚拟机虚拟地址(即目标虚拟机虚拟地址,以下记为GVA0)。虚拟机103可以从该访存请求中提取出GVA0。上述GVA0为存在缺页异常的地址,即GVA0未被映射到目标虚拟机物理地址(以下记为GPA0)。同时,GVA0也未被映射到目标主机物理地址(以下记为HPA0)。
在步骤402中,虚拟机103可以先将GVA0翻译成GPA0,再将GVA0与GPA0之间的映射关系写入GPT。这样,就在GPT中建立了GVA0与GPA0之间的映射关系。
上述写操作可以触发KVM 102尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址。然而,由于此时GVA0与HPA0之间的映射关系还未被写入主机页表(HPT),因此,KVM102的上述翻译过程将失败。在这种情况下,KVM 102可以将HPT中对应于GVA0的第一主机页表项的保留位(记为rsvd)置为异常状态。
在上述实施例中,基于主机页表中各主机页表项的保留位的状态来决定是否需要陷出到主机进行缺页异常处理。只有存在被置为异常状态的第一主机页表项的情况下,才需要陷出到主机进行缺页异常处理,如果不存在保留位被置为异常状态的主机页表项,则不需要陷出到主机进行缺页异常处理。换言之,由于在GVA0既未被映射到GPA0,又未被映射到HPA0时,虚拟机103写GPT的过程中并未将rsvd置为异常状态,因此,这种情况下虽然也存在缺页异常,但并不会陷出到主机101,只需要由虚拟机103来处理GPT中的缺页即可。只有在虚拟机103写完GPT之后,GVA0已经被映射到GPA0,但尚未被映射到HPA0,KVM 102才会将rsvd置为异常状态,从而陷出到主机。因此,相对于相关技术中需要进行两次陷出的方式,本说明书实施例的方案只需要进行一次陷出,减少了陷出次数,提高了缺页异常的处理效率。
本实施例描述了在虚拟机103侧执行的步骤,其具体细节可以参考图1对应的实施例,为了简洁,此处不再赘述。
如上所述,主机页表中的每个主机页表项还包括A bit和D bit,即上述第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过。主机和虚拟机都需要读取第一访问标志位,以便确定HPA的被访问状态。在相关技术中,KVM只会将第一访问标志位写入HPT,而不会写入GPT,因此,虚拟机在读取第一访问标志位时,需要进行陷出,这样就导致了额外的陷出开销。
基于此,本说明书实施例还提供一种页表处理方法,应用于虚拟机,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机物理地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系,所述主机页表中的每个主机页表项还包括第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过。所述主机页表的存储地址预先被映射到虚拟机的超空间中的目标地址。参见图5,所述方法包括:
步骤501:获取目标虚拟机页表的目标页框号和预先建立的地址数组;所述地址数组中的每个元素分别用于记录一个虚拟机页表的页框号与所述超空间中的一个地址之间的映射关系;
步骤502:基于所述页框号和所述地址数组获取所述主机页表的存储地址;
步骤503:从所述主机页表的存储地址中读取第二主机页表项的第一访问标志位。
Kernel在内核地址空间预留了8T空间给hypervisor,这段空间称为虚拟机103的超空间(hyperspace)。可以利用hyperspace将各种数据映射进虚拟机103的内核空间,辅助降低陷出开销。本公开实施例预先将主机页表的存储地址映射到hyperspace,并通过地址数组记录了虚拟机页表的页框号与hyperspace中的地址的映射关系。这样,在步骤501和步骤502中,虚拟机103就可以基于该映射关系和虚拟机页表的页框号从主机页表的存储地址中读取到主机页表,从而读取到主机页表中的第二主机页表项中的第一访问标志位,无需通过陷出来获取第一访问标志位,减少了获取第一访问标志位时的陷出操作,降低了存在缺页异常时对主机处理资源的占用,提高了缺页异常的处理效率。
在一些实施例中,上述地址数组记为g2h_mapping。g2h_mapping可以是一个以虚拟机页表的页框号为下标的数组,记录备份主机页表在所述超空间中的存储地址。例如,在图6所示的实施例中,假设虚拟机页表的页框号为n,记为gpt n,则gpt n对应的主机页表存储在g2h_mapping数组中下标为n的元素中,从下标为n的元素中取出主机页表的存储地址,记为hpt n。
在步骤503中,在获取到主机页表的存储地址之后,可以从所述主机页表的存储地址中读取主页页表,并进一步从主机页表中读取第二主机页表项的第一访问标志位。
为了使主机和虚拟机能够独立地获取到物理地址的被访问状态,本说明书实施例额外设置了两个访问标志位,包括:对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;以及对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过。其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。上述第一访问标志位、第二访问标志位和第三访问标志位统称为访问标志位。
主机和虚拟机都可以从主机页表项中读取第一访问标志位、第二访问标志位和第三访问标志位。在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位。
同理,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
进一步地,为了避免主机和虚拟机同时更新访问标志位导致的错误的问题,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中。
同样地,在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中当前存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
通过上述方式,可以避免主机和虚拟机同时对第二主机页表项中的访问标志位进行更新导致的错误。
进一步地,以下操作通过原子操作执行:将所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位所述虚拟机更新到所述主机页表项中的操作;以及将所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位所述主机更新到所述主机页表项中的操作。通过采用原子操作,能够使上述两个更新操作中只有一者生效,从而避免主机和虚拟机同时对第二主机页表项中的访问标志位进行更新导致的错误。
本说明书实施例的方案具有以下优点:
(1)使用一级页表直接记录GVA到HPA之间的映射关系,相比于扩展页表(ExtendedPage Table,EPT)和嵌套页表(Nested Page Table,NPT)等采用二级页表的方案,能够有效降低虚拟地址翻译开销;并且,对大页的依赖大大减少,可以实现内存弹性,而不用担心碎片化。而且在使用大页时,性能也会有些许提升。
(2)通过页表协议的优化,配置vmcs pfec mask/match,仅允许rsvd error的pagefault陷出。HPT分配时将所有页表项置为Present|Rsvd,这样所有没有映射过的GVA就会从host上陷出,而guest内部的page fault就不会陷出,减少了page fault模拟的开销,使得该方案可以真正实现一级页表的性能优势。
(3)guest在内部page fault时使用hypercall修改页表,当物理页不存在的时候,将rsvd置上,使得guest在访问该不存在的物理页时陷出。当guest访问没有被host物理页映射的GVA时,会产生rsvd page fault,并且陷出到host。这个时候KVM会walk GPT,将GVA翻译为GPA。该GPA对应的物理页在此时分配,并且填在缺失的HPTE(HPT的页表项)里,从而实现按需分页的效果。
(4)读取A/Dbit也需要陷出模拟,将主机页表的存储地址映射到hyperspace,并通过地址数组记录了虚拟机页表的页框号与超空间中的地址的映射关系,从而减少了读取A/Dbit的陷出开销。
(5)host和guest都需要读A/Dbit,并且是要独立对待。例如,当guest访问导致A/Dbit被置上时,host也需要读到A/Dbit。但是host来清除A/Dbit的时候,都不能影响guest的状态,guest依旧需要读到A/Dbit。反之亦然。可以看到,数据源来自MMU的硬件,但是我们需要分别记录两个状态。
guest/host读的A/Dbit状态均以HPTE为准,以Abit为例,在HPTE上定义两个额外两个bit,G_A_bit以及H_A_bit。加上MMU提供的硬件的Abit(S_A_bit),总共三个bit来维持状态。
Abit的清除有三个源头,原则是将MMU的Abit以及自身的Abit都清除了,若当前MMU的Abit被置上了,则将其状态保存到对端的Abit上。
Abit的读取会从两个方向来,需要将同时读取自身的A_bit,以及硬件的A_bit,任何一个为真,都认为当前的Abit被置上了。
(6)通过原子操作来实现了一个同时服务host与guest的A/Dbit的协议,完全去除了A/Dbit带来的陷出与walk页表开销,并使得该技术能够在linux等目前较为常用的环境里使用。
与前述方法的实施例相对应,本说明书还提供了装置的实施例。
如图7所示,是本说明书根据一示例性实施例示出的一种页表处理装置,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述装置应用于KVM;所述装置包括:
翻译模块701,用于在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
设置模块702,用于若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
如图8所示,是一种页表处理装置,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述装置应用于虚拟机;所述装置包括:
第一获取模块801,用于获取访存请求中携带的目标虚拟机虚拟地址,所述目标虚拟机虚拟地址未被映射到目标虚拟机物理地址;
写模块802,用于将所述目标虚拟机虚拟地址翻译成目标虚拟机物理地址,并将所述目标虚拟机虚拟地址与所述目标虚拟机物理地址之间的映射关系写入虚拟机页表,以触发KVM尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
其中,在翻译失败的情况下,所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位被设置为异常状态,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
如图9所示,是一种页表处理装置,应用于虚拟机,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机物理地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系,所述主机页表中的每个主机页表项还包括第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过;所述主机页表的存储地址预先被映射到虚拟机的超空间中的目标地址;所述装置包括:
第二获取模块901,用于获取目标虚拟机页表的目标页框号和预先建立的地址数组;所述地址数组中的每个元素分别用于记录一个虚拟机页表的页框号与所述超空间中的一个地址之间的映射关系;
第三获取模块902,用于基于所述页框号和所述地址数组获取所述主机页表的存储地址;
读取模块903,用于从所述主机页表的存储地址中读取第二主机页表项的第一访问标志位。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本说明书还提供一种电子设备100,如图10所示,包括:
处理器1001,用于存储处理器可执行指令的存储器1002;其中,所述处理器1001被配置为执行本说明书任一实施例所述的方法。
处理器1001可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器1002可以包括至少一种类型的存储介质,存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,设备可以与通过网络连接执行存储器的存储功能的网络存储装置协作。存储器1002可以是电子设备100的内部存储单元,例如电子设备100的硬盘或内存。存储器1002也可以是电子设备100的外部存储设备,例如电子设备100上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器1002还可以既包括电子设备100的内部存储单元也包括外部存储设备。存储器1002用于存储计算机程序以及设备所需的其他程序和数据。存储器1002还可以用于暂时地存储已经输出或者将要输出的数据。
电子设备100可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。设备可包括,但不仅限于,处理器1001、存储器1002。本领域技术人员可以理解,图10仅仅是电子设备100的示例,并不构成对电子设备100的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如设备还可以包括输入输出设备、网络接入设备、总线等。
上述设备中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (14)
1.一种页表处理方法,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述方法应用于KVM;所述方法包括:
在存在缺页异常的目标虚拟机虚拟地址与目标虚拟机物理地址之间的第一映射关系被虚拟机写入所述虚拟机页表的情况下,尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
若翻译失败,将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
2.根据权利要求1所述的方法,所述将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态,包括:
获取所述虚拟机在发生缺页异常的情况下发送的超级调用指令;其中,所述虚拟机在发生缺页异常时发送所述超级调用指令,并将所述第一映射关系写入所述虚拟机页表;
响应于所述超级调用指令将所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位设置为异常状态。
3.根据权利要求2所述的方法,所述超级调用指令中携带所述目标虚拟机物理地址;在将所述目标虚拟机物理地址翻译成目标主机物理地址之前,所述方法还包括:
从所述超级调用指令中解析出所述目标虚拟机物理地址。
4.根据权利要求1所述的方法,所述主机页表中的每个主机页表项还包括存在标志位,一个主机页表项的存在标志位用于标志所述主机页表项中的虚拟机虚拟地址是否被映射到主机物理地址;
其中,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被设置为异常状态,且所述第一主机页表项的存在标志位被设置为目标状态,陷出到主机进行缺页异常处理;所述目标状态用于标志所述第一主机页表项中的虚拟机虚拟地址已被映射到主机物理地址。
5.根据权利要求1所述的方法,所述主机页表中的每个主机页表项包括:
对应于MMU的第一访问标志位,用于标志所述主机页表项中的主机物理地址是否被访问过;
对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;
对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过;
其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。
6.根据权利要求5所述的方法,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位;和/或
在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
7.根据权利要求6所述的方法,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中;和/或
在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
8.一种页表处理方法,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机虚拟地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系;所述方法应用于虚拟机;所述方法包括:
获取访存请求中携带的目标虚拟机虚拟地址,所述目标虚拟机虚拟地址未被映射到目标虚拟机物理地址;
将所述目标虚拟机虚拟地址翻译成目标虚拟机物理地址,并将所述目标虚拟机虚拟地址与所述目标虚拟机物理地址之间的映射关系写入虚拟机页表,以触发KVM尝试将所述目标虚拟机虚拟地址翻译成目标主机物理地址;
其中,在翻译失败的情况下,所述主机页表中对应于所述目标虚拟机虚拟地址的第一主机页表项的保留位被设置为异常状态,在所述目标虚拟机虚拟地址被访问时,若所述第一主机页表项的保留位被置为异常状态,陷出到主机进行缺页异常处理。
9.一种页表处理方法,应用于虚拟机,所述页表包括主机页表和虚拟机页表,所述主机页表用于记录虚拟机物理地址与主机物理地址之间的映射关系,所述虚拟机页表用于记录虚拟机虚拟地址与虚拟机物理地址之间的映射关系,所述主机页表中的每个主机页表项还包括第一访问标志位,一个主机页表项的第一访问标志位用于标志所述主机页表项中的主机物理地址是否被访问过;所述主机页表的存储地址预先被映射到虚拟机的超空间中的目标地址;所述方法包括:
获取目标虚拟机页表的目标页框号和预先建立的地址数组;所述地址数组中的每个元素分别用于记录一个虚拟机页表的页框号与所述超空间中的一个地址之间的映射关系;
基于所述页框号和所述地址数组获取所述主机页表的存储地址;
从所述主机页表的存储地址中读取第二主机页表项的第一访问标志位。
10.根据权利要求9所述的方法,所述主机页表中的每个主机页表项还包括:
对应于主机的第二访问标志位,用于为所述主机记录所述主机页表项中的主机物理地址是否被访问过;
对应于虚拟机的第三访问标志位,用于为所述虚拟机记录所述主机页表项中的主机物理地址是否被访问过;
其中,所述主机能够清除所述第一访问标志位和所述第二访问标志位,所述虚拟机能够清除所述第一访问标志位和所述第三访问标志位。
11.根据权利要求10所述的方法,在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除,读出的第二访问标志位被更新为所述虚拟机清除前读出的第一访问标志位;和/或
在一个主机页表项中的第一访问标志位、第二访问标志位和第三访问标志位被读出之后,若读出的第一访问标志位和读出的第二访问标志位被所述主机清除,读出的第三访问标志位被更新为所述主机清除前读出的第一访问标志位。
12.根据权利要求11所述的方法,在读出的第一访问标志位和读出的第三访问标志位被所述虚拟机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与虚拟机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述虚拟机清除后的第一访问标志位、更新后的第二访问标志位和所述虚拟机清除后的第三访问标志位被所述虚拟机更新到所述主机页表项中;和/或
在读出的第一访问标志位和读出的第二访问标志位被所述主机清除之后,若所述主机页表项中存储的第一访问标志位、第二访问标志位和第三访问标志位与主机执行清除操作前从所述主机页表项中读出的第一访问标志位、第二访问标志位和第三访问标志位分别一致,所述主机清除后的第一访问标志位、所述主机清除后的第二访问标志位和更新后的第三访问标志位被所述主机更新到所述主机页表项中。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行如权利要求1-12任意一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现权利要求1-12任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210724070.6A CN115061781A (zh) | 2022-06-23 | 2022-06-23 | 页表处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210724070.6A CN115061781A (zh) | 2022-06-23 | 2022-06-23 | 页表处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115061781A true CN115061781A (zh) | 2022-09-16 |
Family
ID=83202977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210724070.6A Pending CN115061781A (zh) | 2022-06-23 | 2022-06-23 | 页表处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061781A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117850985A (zh) * | 2024-03-07 | 2024-04-09 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
-
2022
- 2022-06-23 CN CN202210724070.6A patent/CN115061781A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117850985A (zh) * | 2024-03-07 | 2024-04-09 | 济南浪潮数据技术有限公司 | 一种虚拟机内存资源管理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093407B2 (en) | Increasing granularity of dirty bit information in hardware assisted memory management systems | |
US10089111B2 (en) | Performing an operation absent host intervention | |
US7363463B2 (en) | Method and system for caching address translations from multiple address spaces in virtual machines | |
US7783838B1 (en) | Maintaining coherency of derived data in a computer system | |
US7360115B2 (en) | Systems and methods for replicating virtual memory on a host computer and debugging using replicated memory | |
EP1904926B1 (en) | Facilitating processing within computing environments supporting pageable guests | |
US9218302B2 (en) | Page table management | |
BR112014031436B1 (pt) | Comparar e substituir entrada de tabela dat | |
US10884946B2 (en) | Memory state indicator check operations | |
US9864698B2 (en) | Resolving cache lookup of large pages with variable granularity | |
US20070011431A1 (en) | ROM software breakpoints | |
CN115061781A (zh) | 页表处理方法和装置 | |
US10120709B2 (en) | Guest initiated atomic instructions for shared memory page host copy on write | |
US11074181B2 (en) | Dirty data tracking in persistent memory systems | |
US11010311B2 (en) | Processing device and method for controlling processing device | |
US12013799B2 (en) | Non-interrupting portable page request interface | |
US20210216244A1 (en) | An apparatus and method for triggering action |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |