一种内存快照管理方法、装置、设备及介质转让专利
申请号 : CN202210119840.4
文献号 : CN114153567B
文献日 : 2022-05-10
发明人 : 王亮 , 周胜利 , 冯振
申请人 : 苏州浪潮智能科技有限公司
摘要 :
权利要求 :
1.一种内存快照管理方法,其特征在于,包括:当获取到内存快照生成命令,则暂停虚拟机;
复制所述虚拟机的二级页表以得到第一快照页表,并将所述第一快照页表保存至内存中,以及为所述二级页表的页表项设置只读标识;
通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
2.根据权利要求1所述的内存快照管理方法,其特征在于,所述将所述虚拟机由暂停状态恢复至运行状态之后,还包括:在所述虚拟机的运行过程中,若检测到所述虚拟机内存页中的内存数据发生更改,则执行内存写入操作。
3.根据权利要求2所述的内存快照管理方法,其特征在于,所述执行内存写入操作的过程中,还包括:
控制所述虚拟机进入虚拟机监控程序,并通过所述虚拟机监控程序查询所述二级页表的页表项以得到查询结果;
若所述查询结果为所述页表项携带有所述只读标识,则将当前内存页进行复制以得到复制内存页,并减少所述内存数据未更改前的所述内存页的引用计数;
将所述二级页表中的页表项的指针指向所述复制内存页,并清除所述二级页表项中所述页表项的所述只读标识,以及控制所述虚拟机退出所述虚拟机监控程序。
4.根据权利要求1所述的内存快照管理方法,其特征在于,还包括:当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表;
删除所述虚拟机的当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
5.根据权利要求4所述的内存快照管理方法,其特征在于,所述删除所述虚拟机的当前二级页表之前,还包括:
通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数;
通过所述当前二级页表的页表项获取相应的内存页,并减少所述内存页的引用计数;
其中,所述第一快照页表的页表项对应的内存页与所述当前二级页表的页表项对应的内存页相同。
6.根据权利要求1至5任一项所述的内存快照管理方法,其特征在于,还包括:当获取到内存快照删除命令,则通过所述第一快照页表的页表项获取相应的内存页,并减少所述内存页的引用计数;
删除所述第一快照页表。
7.一种内存快照管理装置,其特征在于,包括:命令获取模块,用于当获取到内存快照生成命令,则暂停虚拟机;
页表复制模块,用于复制所述虚拟机的二级页表以得到第一快照页表,并将所述第一快照页表保存至内存中,以及为所述二级页表的页表项设置只读标识;
引用计数调整模块,用于通过所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟机由暂停状态恢复至运行状态。
8.根据权利要求7所述的内存快照管理装置,其特征在于,所述内存快照管理装置,还包括:
页表复制单元,用于当获取到内存快照恢复命令,则对所述第一快照页表进行复制以得到第二快照页表;
页表删除单元,用于删除所述虚拟机的当前二级页表,并将所述第二快照页表作为所述虚拟机当前新的二级页表,以及清除相应的页面缓存。
9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至6任一项所述的内存快照管理方法的步骤。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的内存快照管理方法的步骤。
说明书 :
一种内存快照管理方法、装置、设备及介质
技术领域
背景技术
盘中,对虚拟机执行内存快照的操作很慢,影响了内存快照在现实场景中的使用。
发明内容
方案如下:
内存页相同。
一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所述虚拟
机由暂停状态恢复至运行状态。由此可见,本申请当获取到内存快照生成命令后,需要暂停
虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存快照,
以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状态恢复
至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁盘,因
而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速度。此
外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区分。
附图说明
发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
具体实施方式
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
内存快照的操作很慢,影响了内存快照在现实场景中的使用。为此本申请实施例公开了一
种内存快照管理方法、装置、设备及介质,能够避免将内存数据写入磁盘给实际操作带来的
影响,并提高内存快照的创建速度。
例在暂停虚拟机后,不再复制所有内存数据,而是只复制虚拟机的二级页表,以完成内存快
照的创建。本实施例中将第一快照页表记为PT1,并将PT1作为快照索引使用。此外,还需要
在KVM层面为虚拟机原有二级页表中的页表项设置只读标识,也即将原有二级页表中的所
有页表项设置为快照只读模式,通过只读标识的设置能够与一般的只读区分开,实现内存
快照和虚拟机内存的相互区分和隔离,并将该二级页表记为PT0。需要指出的是,上述创建
的页表仍然保存于内存中,避免了将内存快照写入磁盘的IO(input/Output,即输入输出)
操作,而复制页表的过程非常迅速,因此通过这种方式提高了内存快照的创建速度,且保证
创建内存快照的时间限制在毫秒级别。
露,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次,每删除一
次引用,引用计数就会减少一次,当一个对象的引用计数减为零时,就自动删除指向的堆内
存。本实施例在增加引用计数之后,需要清除相应的页面缓存,再将虚拟机由暂停状态恢复
至运行状态。
操作。可以理解的是,在虚拟机的运行过程中,若虚拟机内存页中的内存数据没有发生更
改,则无需执行内存写入操作。
携带有所述只读标识,则将所述当前内存页进行复制以得到复制内存页,并减少所述内存
数据未更改前的所述内存页的引用计数;将所述二级页表中的页表项的指针指向所述复制
内存页,并清除所述二级页表项中所述页表项的所述只读标识,以及将所述虚拟机重新进
入虚拟态。需要指出的是,由于之前为二级页表的页表项设置了只读标识,也即当前的页表
项为快照只读模式,则意味着当前对虚拟机内存进行了写保护,那么当虚拟机执行内存写
入操作时,会产生EPT misconfig,也即造成了内存配置异常。此时虚拟机则需要退出虚拟
态到虚拟机监控程序中,并通过虚拟机监控器(Virtual Machine Monitor)进入内存配置
异常处理流程,首先查询二级页表(即PT0)中内存配置异常的页表项,如果该页表项携带有
只读标识,则执行页面复制得到复制内存页,并减小原内存页面的引用计数,然后将PT0页
表项中的指针指向复制内存页,最后清除PT0页表项中的快照只读模式,并通过虚拟机监控
程序恢复虚拟机的正常运行,即将虚拟机重新进入虚拟态。通过上述方式,可以实现第一快
照页表(即PT1)所指向的内存页的内存数据不会发生改变,因此依靠PT1就可以找到快照时
刻的所有内存数据。
所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所
述虚拟机由暂停状态恢复至运行状态。由此可见,本申请当获取到内存快照生成命令后,需
要暂停虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存
快照,以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状
态恢复至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁
盘,因而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速
度。此外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区
分。
实施例还可以进一步包括:
页的引用计数;其中,所述第一快照页表的页表项对应的内存页与所述当前二级页表的页
表项对应的内存页相同。
所有内存页,并减小这些内存页的引用计数。其中,PT1的页表项对应的内存页与PT_temp的
页表项对应的内存页相同。
快照页表作为虚拟机当前新的二级页表,然后增加内存页的引用计数,再删除原有的当前
二级页表,最后清除相应的页表缓存,以实现内存快照的恢复。通过复制页表的方式创建快
照页表,使得恢复内存快照时的速度也得到了提高,其中,恢复内存快照的时间和创建内存
快照的时间级别相同,都限制在毫秒级别。此外,通过上述技术方案提高了内存快照的可用
性。
实施例还可以进一步包括:
数,再直接删除调第一快照页表。通过复制页表的方式创建快照页表,使得删除内存快照时
的速度也得到了提高。
所述第一快照页表的页表项获取相应的内存页,并增加所述内存页的引用计数,以及将所
述虚拟机由暂停状态恢复至运行状态。由此可见,本申请当获取到内存快照生成命令后,需
要暂停虚拟机,并通过复制虚拟机二级页表的方式得到第一快照页表以创建虚拟机的内存
快照,以及为二级页表的页表项设置只读标识,并在创建步骤完成之后将虚拟机由暂停状
态恢复至运行状态。其中,通过上述步骤创建的内存快照仍保存于内存中,无需再写入至磁
盘,因而避免了将内存数据写入磁盘给实际操作带来的影响,并提高了内存快照的创建速
度。此外,通过为虚拟机二级页表设置只读标识,实现了内存快照和虚拟机内存的相互区
分。
引用计数;
当前二级页表的页表项对应的内存页相同。
所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现
前述任一实施例公开的由计算机设备执行的内存快照管理方法中的相关步骤。
够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用
于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选
取,在此不进行具体限定。
Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程
逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处
理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing
Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在
一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU
用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI
(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算
操作。
是短暂存储或者永久存储。
Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由计算机设备20执
行的内存快照管理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作
的计算机程序。数据223除了可以包括计算机设备接收到的由外部设备传输进来的数据,也
可以包括由自身输入输出接口25采集到的数据等。
理过程中执行的方法步骤。
置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分
说明即可。
软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本申请的范围。
储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术
领域内所公知的任意其它形式的存储介质中。
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些 要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据
本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不
应理解为对本发明的限制。