CN101706736B - 一种高效的脏页获取方法 - Google Patents
一种高效的脏页获取方法 Download PDFInfo
- Publication number
- CN101706736B CN101706736B CN200910243439A CN200910243439A CN101706736B CN 101706736 B CN101706736 B CN 101706736B CN 200910243439 A CN200910243439 A CN 200910243439A CN 200910243439 A CN200910243439 A CN 200910243439A CN 101706736 B CN101706736 B CN 101706736B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- page table
- shadow page
- list item
- machine manager
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种高效的脏页获取方法,属于虚拟化技术领域。本方法为:1)虚拟机管理器为每个第一级影子页表维护一n位的标记;2)在一执行周期之前,虚拟机管理器将第一级影子页表的所有页表项设置为只读,并将对应标记设置为0;3)在该执行周期内,虚拟机管理器根据截获的缺页异常信息,将对应的页面记录为脏页面;同时将该影子页表表项置为可写,并将其所对应的标记位设置为1;4)在该执行周期结束时,虚拟机管理器记录主虚拟机的所有脏页;同时遍历标记位为1的影子页表表项段,将所有可写影子页表表项设置为只读;5)虚拟机管理器恢复主虚拟机的执行,重复2)~4),开始新的执行周期。本发明可大大提升主虚拟机的性能。
Description
技术领域
本发明涉及一种脏页获取方法,该技术涉及到基于虚拟化的可靠性系统中虚拟机管理器获取主虚拟机检查点的方法,属于虚拟化技术和可靠性系统领域。
背景技术
基于虚拟化的可靠性系统是在虚拟机管理器之上实现的可靠性系统方案,目前在这方面的系统包括加拿大英属哥伦比亚大学开发的Remus(Remus:High availability viaasynchronous virtual machine replication),日本NTT公司开发的Kemari(Kemari:Virtualmachine synchronization for fault tolerance),以及北京大学网络实验室开发的Taiji(http://net.pku.edu.cn/vc/files/ft/index.html)。相对于传统的可靠性解决方案,基于虚拟化的可靠性系统具有经济、透明、易于部署等优点。
该系统的核心是Checkpoint/Recovery机制。在每一个执行周期,虚拟机管理器监测主虚拟机修改的内存页面,并在执行周期结束时把脏页面发送到备份虚拟机。目前,在以上系统的实现中,赃页获取技术采用了虚拟机迁移中的赃页获取方法。虚拟机迁移中的赃页获取方法是在每一个执行周期开始时,虚拟机管理器销毁主虚拟机的所有的影子页表表项;在执行周期中,主虚拟机对任何页面的第一次修改都会发生缺页异常,从而虚拟机管理器可以探测到哪些页面被修改。这种方法对主虚拟机的性能产生了很大的影响。本发明主要是基于系统运行行为的分析,公开了一项高效的赃页获取技术,该项技术提高了基于虚拟化的可靠性系统的性能。
发明内容
本发明的目的是为基于虚拟化的可靠性系统提供一种高效的赃页获取方法。本发明可使虚拟机管理器在主虚拟机的每个执行周期都能截获到主虚拟机修改的内存页面,同时还不对主虚拟机的性能产生较大的影响。
本发明的技术方案为:
一种高效的脏页获取方法,其步骤为:
1)虚拟机管理器为每个主虚拟机维护一个影子页表,并为每个第一级影子页表维护一n位的标记;其中n为正整数,第一级影子页表表项划分为n段,每一段对应于n位标记中的一位;
2)在一执行周期之前,虚拟机管理器将第一级影子页表的所有页表项设置为只读,相应的每个第一级影子页表的标记都设置为所述n位标记中的未修改标记号;
3)在该执行周期内,当主虚拟机通过某个影子页表表项发生第一次写操作时,虚拟机管理器截获到一缺页异常信息;
4)虚拟机管理器根据截获到的该缺页异常信息,将该影子页表表项对应的页面记录为脏页面;同时将该影子页表表项置为可写,并将其所对应的标记位设置为所述n位标记中的修改标记号;
5)在该执行周期结束时,主虚拟机停止执行,虚拟机管理器记录主虚拟机的所有脏页;同时,虚拟机管理器遍历标记位为修改标记号的影子页表表项段,将所有可写影子页表表项设置为只读;
6)虚拟机管理器恢复主虚拟机的执行,重复步骤2)~5),开始新的执行周期。
进一步的,当所述虚拟机管理器截获缺页异常信息时,虚拟机管理器将与该缺页异常的影子页表表项相邻的影子页表表项预设置为可写。
进一步的,所述虚拟机管理器首先为每个第一级影子页表维护一个数值his_stride,用来描述第一级影子页表在历史的执行周期中发生写操作的局部性行为;然后虚拟机管理器将与发生缺页异常的影子页表表项相邻的前his_stride个影子页表表项和后his_stride/3个影子页表表项预设置为可写。
进一步的,所述his_stride的计算方法为:his_stride=his_stride*a+ave_stride*(1-a);其中ave_stride为影子页表中所有连续的可写影子页表表项段长度的平均值,a为一权重参数,a取值范围为(0,1)。
进一步的,所述虚拟机管理器将所述预设置为可写的影子页表表项添加一预测标记,并且清空该表项的脏页位。
进一步的,所述虚拟机管理器遍历所有第一级影子页表,将带所述预测标记的影子页表表项中,脏页位没有被设置的页表项所对应的页面确定为非脏页面,脏页位被设置的页表项所对应的页面确定为脏页面。
进一步的,所述执行周期结束时,虚拟机管理器把脏页面发送到一备份虚拟机。
进一步的,所述第一级影子页表表项平均划分为n段;所述n取值为8。
进一步的,所述n位标记由0、1标记号组成,其中标号1为修改标记号,标号0为未修改标记号。
相对于现有技术,本发明的积极效果为:
本发明可提高主虚拟机的性能,与虚拟机迁移中使用的脏页获取方法不同,本发明采用遍历影子页表表项的方法收回所有页表项写权限,并且采用一个八位的标记,选择性地遍历影子页表;另外,在主虚拟机执行过程中,采用基于历史行为的预测,有效地减少了虚拟机执行过程中的缺页次数,进一步调高了主虚拟机执行的效率。图2是性能对比。在这个试验中,主虚拟机的执行周期是20msec。“迁移”表示使用迁移代码中的脏页获取方法,“本发明”表示采用本发明中陈述的脏页获取方法。通过图2可以看到,主虚拟机中分别运行四种不同的基准测试程序时,主虚拟机的性能都得到了较大的提升。
附图说明
图1表示一个影子页表上发生缺页异常,预测程序预测和校正的过程;
图2表示本发明的脏页获取方法与Xen的迁移的脏页获取方法的性能比较。
具体实施方式
本发明涉及到的赃页获取方法应用在基于虚拟化的可靠性系统中,该系统包括如下两个部分:主虚拟机和虚拟机管理器。主虚拟机是受保护的虚拟机,其中运行关键性服务;虚拟机管理器运行在硬件之上,维护虚拟机的运行,在基于虚拟化的可靠性系统中,虚拟机管理器还需要记录主虚拟机执行过程中修改的内存页面,并把所有脏页在每个执行周期结束时发送给备份虚拟机。影子页表是内存虚拟化机制。虚拟机管理器为每个运行在其上的虚拟机维护一个影子页表,影子页表表项实现虚拟地址到物理地址的转换。为了记录主虚拟机执行过程中修改的脏页,本发明的方法如下:
1)虚拟机管理器为每个第一级影子页表维护了一个八位的标记,每一位对应于这个第一级影子页表八分之一的影子页表表项段。例如,对于32位PAE系统,每个第一级影子页表有512个页表项,那么该标记的第一位就对应着这个影子页表的前64个影子页表表项,第二位对应第65个到第128个影子页表表项,等等。
2)在开始新的执行周期之前,第一级影子页表的所有页表项都被设置为只读,相应的每个第一级影子页表的标记都为0,表明所有的影子页表中没有可写的影子页表表项。
3)主虚拟机恢复执行,由于该虚拟机的影子页表表项都是只读,当主虚拟机通过某个影子页表表项发生第一次写操作时,将会发生缺页异常。虚拟机管理器截获到该异常,并把该影子页表表项对应的页面记录为脏页面;同时,把这个影子页表表项置为可读写,这样,在这个执行周期中,再次通过该页表项修改页面将不会发生缺页异常;同时,虚拟机管理器根据发生缺页异常的影子页表表项的位置,查看相应的标记位,如果对应的标记位为0,则把这个位设置为1,表明这个位对应的影子页表表项段中出现了可读写页表项。
4)在每个执行周期结束时,主虚拟机停止执行,虚拟机管理器把主虚拟机修改过的页面发送到备份虚拟机;同时,为了在新的执行周期中记录主虚拟机修改的脏页,虚拟机管理器需要把主虚拟机的所有内存重新标记为只读。虚拟机管理器根据每个第一级影子页表的标记位选择性地遍历影子页表表项,即虚拟机管理器只遍历那些标记位为1的影子页表表项段,因为只有这些影子页表表项段中有可读写的影子页表表项,其他影子页表表项段不需要遍历。通过这种方法,虚拟机管理器提高了遍历影子页表表项的效率。在遍历过程中,所有可写的影子页表表项都被重新设置为只读页表项,相应的将每个第一级影子页表的标记1都修改为0。
5)在完成4)的基础上,虚拟机管理器使主虚拟机恢复执行,开始新的执行周期。
在上述的脏页获取方法中,每一个执行周期开始时,本发明保留了所有的影子页表表项,仅仅通过去除可写权限,便可达到设置所有页面只读的目的;另外,通过为每个第一级影子页表设置标记,提高了遍历影子页表的效率。
本发明的另一目的是,在以上方法的基础上,尽量减少主虚拟机执行过程中发生缺页的次数。本发明使用了一种预测方法:根据主虚拟机的执行行为,预测在同一个执行周期中还有哪些页面可能被修改,从而提前把这些页面标记为脏页面,把对应的影子页表表项置为可读写,具体过程如下:
a)虚拟机管理器为每个第一级影子页表维护一个数值his_stride,用来描述每个第一级影子页表在历史的执行周期中发生写操作的局部性行为。his_stride的定义如下:
his_stride=his_stride*a+ave_stride*(1-a)
其中,ave_stride描述了第一级影子页表在前一个执行周期中发生写操作的局部性特征;ave_stride表示这个影子页表中所有连续的可写影子页表表项段长度的平均值。ave_stride体现了在上一个执行周期中影子页表表项发生写操作的局部性,越大表明局部性越好;越小表明局部性越差。例如,ave_stride等于0,说明在上一个执行周期中没有页表项被置为可写,也就是没有通过该影子页表发生写操作;ave_stride等于512,说明所有的页表项都发生了写操作,所有页表项都具有可写权限。在此基础上,为了体现影子页表发生可写操作的局部性的历史行为,his_stride由ave_stride得到,并通过参数a进行控制,a越小,则his_stride的值越依赖于最近的执行周期的ave_stride;a越大,his_stride则依赖于较长的历史行为信息。
b)由于所有的影子页表表项最初都被标记为只读,所以,主虚拟机对某个页面的第一次访问都会发生缺页异常。当发生缺页异常的时候,虚拟机管理器根据his_stride的值进行预测,即将与发生缺页异常的影子页表表项相邻的前his_stride个影子页表表项和后his_stride/3个影子页表表项都预测为将会发生写操作,然后将这些影子页表表项设置为可写。这样,在这个执行周期内,通过这些影子页表表项发生的写操作将不再发生缺页异常。
c)在b)中,可能会发生预测错误,也就是说有些页面在这个执行周期中没有被修改,而预测程序把这个页面标记为脏页面。为了找出这些错误的预测,虚拟机管理器给被预测的影子页表表项添加了一个预测标记(预测标记位可以是页表项中的一个可用位),并且清空该表项的Dirty位(即脏页位)。当这个影子页表表项真正发生写操作时,其Dirty位会被CPU自动设置。在每个执行周期结束时,虚拟机管理器遍历所有的第一级影子页表,在所有被预测的影子页表表项中(即添加有预测标记的影子页表表项中),Dirty位没有被设置的页表项都是预测错误的页表项,即其对应的页面为非脏页面,Dirty位被设置的页表项对应的页面为脏页面。
图1是脏页预测的一个例子。在这个例子中,初始状态时,所有的影子页表表项都被设置为只读;第五个页表项由于写操作发生缺页异常,预测程序把发生缺页异常的这个页表项标记为可写,同时把3、6、7和8这几个页表项预测为发生写操作,并把这些页表项的Dirty位去除;在这个执行周期结束时,第六个页表项的Dirty位为0,表明这个页表项没有发生写操作,所以,第六个页表项对应的页面不是脏页。在这个例子中,3、7和8这三个页表项的写操作被成功预测,在执行过程中,通过这些页表项发生的写操作不发生缺页异常,提高了主虚拟机的执行效率。
Claims (9)
1.一种高效的脏页获取方法,其步骤为:
1)虚拟机管理器为每个主虚拟机维护一个影子页表,并为每个影子页表的第一级影子页表维护一n位的标记;其中n为正整数,第一级影子页表表项划分为n段,每一段对应于n位标记中的一位;
2)在一执行周期之前,虚拟机管理器将第一级影子页表的所有页表项设置为只读,相应的每个第一级影子页表的标记都设置为所述n位标记中的未修改标记号;
3)在该执行周期内,当主虚拟机通过某个影子页表表项发生第一次写操作时,虚拟机管理器截获到一缺页异常信息;
4)虚拟机管理器根据截获到的该缺页异常信息,将该影子页表表项对应的页面记录为脏页面;同时将该影子页表表项置为可写,并将其所对应的标记位设置为所述n位标记中的修改标记号;
5)在该执行周期结束时,主虚拟机停止执行,虚拟机管理器记录主虚拟机的所有脏页;同时,虚拟机管理器遍历标记位为修改标记号的影子页表表项段,将所有可写影子页表表项设置为只读;
6)虚拟机管理器恢复主虚拟机的执行,重复步骤2)~5),开始新的执行周期。
2.如权利要求1所述的方法,其特征在于当所述虚拟机管理器截获缺页异常信息时,虚拟机管理器将与该缺页异常的影子页表表项相邻的影子页表表项预设置为可写。
3.如权利要求2所述的方法,其特征在于所述虚拟机管理器首先为每个第一级影子页表维护一个数值his_stride,用来描述第一级影子页表在历史的执行周期中发生写操作的局部性行为;然后虚拟机管理器将与发生缺页异常的影子页表表项相邻的前his_stride个影子页表表项和后his_stride/3个影子页表表项预设置为可写。
4.如权利要求3所述的方法,其特征在于所述his_stride的计算方法为:his_stride=his_stride*a+ave_stride*(1-a);其中ave_stride为影子页表中所有连续的可写影子页表表项段长度的平均值,a为一权重参数,a取值范围为0<a<1。
5.如权利要求3或4所述的方法,其特征在于所述虚拟机管理器将所述预设置为可写的影子页表表项添加一预测标记,并且清空该表项的脏页位。
6.如权利要求5所述的方法,其特征在于所述虚拟机管理器遍历所有第一级影子页表,将带所述预测标记的影子页表表项中,脏页位没有被设置的页表项所对应的页面确定为非脏页面,脏页位被设置的页表项所对应的页面确定为脏页面。
7.如权利要求1或6所述的方法,其特征在于所述执行周期结束时,虚拟机管理器把脏页面发送到一备份虚拟机。
8.如权利要求1所述的方法,其特征在于所述第一级影子页表表项平均划分为n段;所述n取值为8。
9.如权利要求1所述的方法,其特征在所述n位标记由0、1标记号组成,其中标号1为修改标记号,标号0为未修改标记号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910243439A CN101706736B (zh) | 2009-12-22 | 2009-12-22 | 一种高效的脏页获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910243439A CN101706736B (zh) | 2009-12-22 | 2009-12-22 | 一种高效的脏页获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101706736A CN101706736A (zh) | 2010-05-12 |
CN101706736B true CN101706736B (zh) | 2012-10-10 |
Family
ID=42376962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910243439A Expired - Fee Related CN101706736B (zh) | 2009-12-22 | 2009-12-22 | 一种高效的脏页获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706736B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101972951B (zh) * | 2010-10-15 | 2012-12-12 | 绵阳市维博电子有限责任公司 | 一种数控深孔拉床的圆光栅用防护装置 |
US8370310B2 (en) * | 2011-03-04 | 2013-02-05 | Microsoft Corporation | Managing database recovery time |
CN102981962B (zh) * | 2012-10-26 | 2015-03-04 | 华中科技大学 | 一种快速扫描全虚拟化虚拟机脏页位图的方法 |
EP3311286A4 (en) * | 2015-06-17 | 2019-01-16 | Intel Corporation | DATA PROCESSING DEVICE AND METHOD WITH PERSISTENT MEMORY |
CN105677480B (zh) * | 2015-12-31 | 2019-03-26 | 杭州华为数字技术有限公司 | 一种数据处理方法及装置 |
CN112241310B (zh) * | 2020-10-21 | 2023-01-31 | 海光信息技术股份有限公司 | 页表管理、信息获取方法、处理器、芯片、设备及介质 |
CN112506941B (zh) * | 2021-02-03 | 2021-05-11 | 北京金山云网络技术有限公司 | 核查点的处理方法和装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609850A (zh) * | 2003-05-30 | 2005-04-27 | 微软公司 | 调整数据库大小的系统和方法 |
CN1746866A (zh) * | 2005-10-08 | 2006-03-15 | 浙江大学 | 操作Linux内核页表加速模拟PowerPC体系结构的方法 |
-
2009
- 2009-12-22 CN CN200910243439A patent/CN101706736B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609850A (zh) * | 2003-05-30 | 2005-04-27 | 微软公司 | 调整数据库大小的系统和方法 |
CN1746866A (zh) * | 2005-10-08 | 2006-03-15 | 浙江大学 | 操作Linux内核页表加速模拟PowerPC体系结构的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101706736A (zh) | 2010-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101706736B (zh) | 一种高效的脏页获取方法 | |
CN101169751B (zh) | 具有闪存设备的系统及其数据恢复方法 | |
CN103488583B (zh) | 一种高性能高可靠的固态盘实现方法 | |
CN103455432B (zh) | 用来管理一记忆装置的方法以及其相关的记忆装置 | |
CN101233498B (zh) | 快闪存储器中利用直接数据文件存储的数据操作 | |
CN100524238C (zh) | 基于块级的增量备份和整卷恢复的方法 | |
Wang et al. | Hybrid checkpointing for MPI jobs in HPC environments | |
CN102750317B (zh) | 数据持久化处理方法、装置及数据库系统 | |
CN105453054B (zh) | 基于堆区域的内容动态选择垃圾收集算法的系统和方法 | |
CN102436420A (zh) | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 | |
CN101944115B (zh) | 一种日志搜索方法和系统 | |
CN103019884A (zh) | 基于虚拟机快照的内存页去重方法及装置 | |
CN102024020A (zh) | 一种分布式文件系统中高效的元数据访存方法 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN104899071A (zh) | 集群中虚拟机的恢复方法和系统 | |
CN101645034B (zh) | 用于检测数据存取违例的方法和装置 | |
CN106844607B (zh) | 一种适用于非整型主键与空闲块合并的SQLite数据恢复方法 | |
CN104239438A (zh) | 基于分离存储的文件信息存储方法和文件信息读写方法 | |
CN103902407A (zh) | 一种虚拟机恢复方法及服务器 | |
CN104050103A (zh) | 一种用于数据恢复的缓存替换方法与系统 | |
WO2009140157A3 (en) | System and method for recovering information in nand gate array memory systems | |
CN104484131A (zh) | 多磁盘服务器的数据处理装置及对应的处理方法 | |
CN102521256B (zh) | 高可靠性的实时/历史数据库数据保护方法 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN103729166A (zh) | 程序的线程关系确定方法、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121010 Termination date: 20141222 |
|
EXPY | Termination of patent right or utility model |