CN106033368B - 一种多核虚拟机确定性重演的方法 - Google Patents
一种多核虚拟机确定性重演的方法 Download PDFInfo
- Publication number
- CN106033368B CN106033368B CN201510102323.6A CN201510102323A CN106033368B CN 106033368 B CN106033368 B CN 106033368B CN 201510102323 A CN201510102323 A CN 201510102323A CN 106033368 B CN106033368 B CN 106033368B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- processing unit
- perfoming block
- execution
- vcpu
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公布了一种多核虚拟机确定性重演的方法,该方法将虚拟机中的虚拟中央处理单元(VCPU)的执行划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段,记录阶段包括执行前记录当前虚拟中央处理单元的状态、执行过程中记录操作和执行结束后记录操作;重演阶段包括获得当前执行块的执行窗口、在虚拟机退出的位置设置断点并进入虚拟机、在断点处处理中断和非确定性事件的插入等操作。本发明在现有多核CPU(中央处理单元)架构下,可解决多核虚拟机内存访问的随机性问题,加快多核虚拟机确定性重演的记录速度,同时大大降低记录日志文件的大小。
Description
技术领域
本发明属于计算机软件技术领域,涉及计算机操作系统与软件系统设计,尤其涉及一种多核虚拟机确定性重演的方法。
背景技术
虚拟化技术是一种将物理硬件进行虚拟的抽象和隔离,使得计算在虚拟的环境上运行的一种技术。虚拟机指的是将CPU(中央处理单元)、内存、输入输出设备的虚拟抽象聚合起来,在这个完全隔离环境中运行的完整计算机系统。虚拟机技术能够在较少的牺牲性能的前提下提供良好的隔离型和可控性,使其能够广泛应用在大规模计算、入侵检测、程序调试、高可用性等多个领域。虚拟机技术已经成为目前云计算、信息安全等领域最为基础和重要的技术之一。
虚拟机确定性重演指的是通过某种技术手段使得虚拟机在两次执行过程中能够执行完全相同的指令序列,从而获得完全相同的执行结果。该技术在多核程序调试、入侵分析等领域有着广泛和深入的应用。虚拟机确定性重演目前常用的技术一般分为两个部分:a)记录虚拟机在运行时刻所有非确定性的事件内容及发生位置,包括读取TSC(Time StampCounter,时间戳计数器)、I/O(输入输出)操作、软/硬中断等;b)在虚拟机的另一次执行中,在记录的位置插入完全同样的非确定性事件。由于虚拟机的其它执行流程中所执行的指令都是确定性的,因此该技术能够满足虚拟机的两次执行能够活的完全相同的执行结果。
然而目前的虚拟机确定性重演技术在多核环境下遇到了巨大挑战。当前的主流的多核CPU(中央处理单元)架构中不同的核对相同的内存访问并不会保证访问顺序的一致性,即在虚拟机的两次执行过程中,即使在指定位置插入相同的非确定性事件,两个核对某内存的访问顺序也有可能不同,从而使虚拟机两次执行的最终结果有所不同。目前有一些简单的系统能够用来解决这个问题,然而这些系统均在某些方面有着重大缺陷,包括但不限于以下几方面:
一、记录内存访问的日志过大,在双核环境下最少需要40GB/天的日志;
二、无法使用硬件虚拟化支持导致性能较差,相比于在物理环境执行慢40倍以上;
三、不能支持虚拟机全系统的确定性重演,只能支持对某个进程的确定性重演;
四、不能支持精确的确定性重演,重演的结果可能存在一定的误差。
发明内容
为了克服上述现有技术的不足,本发明提供一种多核虚拟机确定性重演的方法,在现有多核CPU(中央处理单元)架构下,针对多核内存访问顺序随机性问题,该方法能够记录不确定性事件,实现确定性重演,且记录的日志文件很小,是一种高效的多核确定性软件重演的新的虚拟机执行系统设计方法。
为了便于说明,本文约定:采用“VCPU”表示虚拟机中的虚拟中央处理单元。
本发明的原理是:将VCPU的指令执行序列人为划分为多个执行块,一般每个执行块的大小为1万到10万条CPU指令;在记录阶段每个执行块执行之前,记录当前VCPU的相关状态;在每个执行块执行期间,记录所有的不确定性事件,并记录所有读写访问的内存页面,并且使用写时复制技术将所有写的内存页面写到独立的区域中;在每个执行块执行结束后,通过判断该块执行过程中读写的内存页面是否与其他VCPU写的内存页面存在冲突,如果存在冲突则回滚该执行块,恢复执行块执行前的VCPU状态,重新执行该执行块,如果不存在冲突则提交该执行块,记录该执行块的执行次序约束,将执行过程中写的内存页面复制回原地址空间,并将该执行块写的内存页面扩散到其他VCPU,以便其他VCPU进行冲突检测。在重演阶段,执行块严格按照记录阶段的大小划分;在记录阶段对应的VCPU上执行,执行顺序需要满足执行窗口的序号约定;在记录阶段对应位置插入相同的不确定性事件,从而得到完全相同的执行过程和执行结果。
本发明提供的技术方案是:
一种多核虚拟机确定性重演的方法,将虚拟机中的虚拟中央处理单元(VCPU)的执行划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段,具体包括如下步骤:
对于记录阶段:
A.在每个执行块执行之前,记录当前VCPU的状态,执行如下操作:
A1.记录VCPU的寄存器状态;
A2.导出并记录VCPU的FPU(浮点计算单元)相关寄存器状态;
A3.记录VCPU的I/O APIC(输入输出高级可编程中断控制器)状态;
A4.记录VCPU相关MSR(机器状态寄存器)状态;
B.在每个执行块执行期间,执行如下操作:
B1.记录外部中断;
B2.记录非确定性事件,如RDTSC(Read Time Stamp Counter,读时间戳计数器)指令、生成随机数指令、输入输出指令和虚拟机控制指令;
B3.通过写时复制方法处理VCPU写的内存页面;
B4.记录VCPU在该执行块中读和写的内存页面;
C.在每个执行块执行结束后,执行如下操作:
C1.获得提交锁;
C2.检测该执行块与其他VCPU的执行是否有冲突;
C3.如果存在冲突,则执行回滚操作;
C4.如果不存在冲突,则执行提交操作;
C5.释放提交锁;
对于重演阶段:
D.在重演阶段,对于B中对应的每一个执行块,执行如下操作:
D1.获得当前执行块的执行窗口;
D2.在虚拟机退出的位置设置断点,并进入虚拟机;
D3.在断点处处理中断和非确定性事件的插入;
D4.重复执行D2~D3过程,直到该执行块中的全部指令执行结束。
上述多核虚拟机确定性重演的方法中,对VCPU的执行划分的执行块执行结束的时间点为以下三种中的一种:
1)VCPU需要执行I/O(输入输出)指令时;
2)VCPU需要执行MMIO(内存映射输入输出)指令时;
3)VCPU已经执行指定条数的指令时。
针对执行块执行结束的时间点,进一步地,当VCPU需要执行I/O(输入输出)指令时划分执行块执行结束,该划分可以通过Intel VT技术提供的虚拟机I/O指令退出机制完成;当VCPU需要执行MMIO(内存映射输入输出)指令时执行块执行结束,该划分可以通过IntelVT技术提供的扩展页表配置失效(EPT Misconfiguration)机制完成;当VCPU已经执行指定条数的指令时执行块执行结束,该划分可以通过Intel VT技术提供的VCPU计时器(Preemption Timer)机制完成。
上述多核虚拟机确定性重演的方法,优选地,可通过采用磁盘DMA(直接内存访问)的方法来加快虚拟机访问磁盘的速度,从而提高系统的性能;具体是开启磁盘DMA(直接内存访问)的支持,将磁盘DMA模块单独作为最高优先级的执行块来处理,DMA激活期间停止其它VCPU执行块的提交工作。
上述多核虚拟机确定性重演的方法中,A1中的VCPU的寄存器包括通用寄存器、段寄存器和指令寄存器等。
在本发明实施例中,上述多核虚拟机确定性重演的方法用于Linux系统;在A2中导出并记录VCPU的FPU(浮点计算单元)相关寄存器状态之前,需要首先导出FPU的状态,然后才可以记录VCPU的FPU(浮点计算单元)相关寄存器状态。在A4中记录VCPU相关MSR(机器状态寄存器)状态,具体通过Intel VT的MSR保存/恢复方法来实现。
上述多核虚拟机确定性重演的方法中,在B1中记录的外部中断包括中断号和响应中断的VCPU号,将外部中断按照其触发的顺序存储,并记录该中断发生时的VCPU执行位置;VCPU的执行位置包括下述三元组:指令寄存器、转移指令寄存器和RCX寄存器。
上述多核虚拟机确定性重演的方法中,优选地,在B3处理写时复制页面时,提前对该页面进行冲突检测,如果该页面与其他VCPU在该执行块执行过程中提交的页面有冲突,则在该位置提前截断该执行块,即进入步骤C执行块结束之后的提交操作。该提前检测方法能够在已经确定产生冲突的情况下,提前提交以避免该冲突的产生,能够有效降低冲突执行块的比例,从而减少执行块的回滚。
在B4中记录VCPU在该执行块中读和写的内存页面,该内存页面记录以位图方式进行存储:将写过的页面存储在“写位图”中,将读写的页面存储在“读写位图”中。优选地,在B4中,可以通过Intel VT提供的扩展页表硬件辅助方法来完成对读写页面的记录;在开启扩展页表硬件辅助技术后,可以在执行块执行结束后完成扫描扩展页表(EPT)的Access(访问)位和Dirty(写脏)位来获得该执行块中VCPU对内存的读写情况。
在C3中,执行回滚操作过程具体如下:
a.销毁B3阶段写时复制的页面;
b.恢复VCPU的EPT(扩展页表)使其指向原页面;
c.恢复A1~A4阶段记录的VCPU状态;
d.插入B1阶段记录的所有中断;
在C4中,执行提交操作过程如下:
a.将B3阶段写时复制的页面内容拷贝回原页面;
b.恢复VCPU的EPT(扩展页表)使其指向原页面;
c.销毁B3阶段写时复制的页面;
d.将B1、B2阶段记录的信息保存在日志文件中;
e.获得唯一的提交序号,将当前执行块的执行约束和VCPU的执行位置三元组保存在日志文件中;执行块的执行约束指该执行块需要在哪个执行块之后被执行;
上述C4(b)中,优选地,可以延迟恢复写时复制的页面对应的页表内容,在之后有需要的时候(如其他VCPU访问该页面等)再恢复对应页表。根据局部性原理,该技术能够减少在下一个执行块中写时复制页面的数量,从而提高系统的性能。
上述在D1中获得当前执行块的执行窗口,具体通过检查系统为当前VCPU维护的执行序号是否大于等于当前执行块的执行序号,如果是,则将系统中每个VCPU的执行序号加1,并获得执行窗口;否则,轮询等待系统的执行序号,直到其满足上述检查条件。
在本发明实施例中,D2设置断点采用的是单步执行方法,即单步执行每一条虚拟机指令,直到执行到断点位置。
与现有技术相比,本发明的有益效果是:
本发明提供一种多核虚拟机确定性重演的方法,在现有多核CPU(中央处理单元)架构下,针对多核内存访问顺序随机性问题,通过本发明提供的技术方案,可以解决多核虚拟机内存访问的随机性问题,加快多核虚拟机确定性重演的记录速度,同时能够大大降低记录日志文件的大小,并且能够以不慢于记录的速度进行重演操作。
附图说明
图1是本发明在记录阶段的流程框图。
图2是本发明在重演阶段的流程框图。
图3是本发明实施例一两个VCPU虚拟机系统中的记录阶段的一段指令运行片段;
图4是本发明实施例二两个VCPU虚拟机系统中的重演阶段的一个执行片段;
图3~图4中,两个VCPU名称分别为VCPU 0和VCPU 1;虚线框表示执行块的边界。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种多核虚拟机确定性重演的方法,该方法将虚拟机中的虚拟中央处理单元(VCPU)的执行划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段。
在Linux系统上,对VCPU的执行划分的执行块,其执行结束的时间点为以下三种中的一种:
1)VCPU需要执行I/O(输入输出)指令时,该划分可以通过Intel VT技术提供的虚拟机I/O指令退出机制完成;
2)VCPU需要执行MMIO(内存映射输入输出)指令时,该划分可以通过Intel VT技术提供的扩展页表配置失效(EPT Misconfiguration)机制完成;
3)VCPU已经执行指定条数的指令时,该划分可以通过Intel VT技术提供的VCPU计时器(Preemption Timer)机制完成。
图1是本发明在记录阶段的流程框图。对于记录阶段,执行如下操作:
A.在执行块执行之前,记录当前VCPU的状态,执行如下操作:
A1.记录VCPU的寄存器状态,包括通用寄存器、段寄存器、指令寄存器等;
A2.导出并记录VCPU的FPU(浮点计算单元)相关寄存器状态,由于Linux采用延迟FPU方法,所以该处需要首先导出FPU的状态后才可以记录;
A3.记录VCPU的I/O APIC(输入输出高级可编程中断控制器)状态;
A4.记录VCPU相关MSR(机器状态寄存器)状态,该记录需要Intel VT的MSR保存/恢复相关技术配合操作;
B.在执行块执行期间,执行如下操作:
B1.记录外部中断,包括中断号、响应中断的VCPU号,将中断按照其触发的顺序存储,并记录该中断发生时的VCPU执行位置;VCPU的执行位置由下述三个寄存器的值组成的三元组唯一确定:指令寄存器、转移指令寄存器和RCX寄存器;
B2.记录其他非确定性事件,如RDTSC指令、生成随机数指令、输入输出指令和虚拟机控制指令,并记录该事件发生时VCPU的执行位置;
B3.采用写时复制技术处理VCPU写的页面:即首先将写的页面复制到新的内存区域,修改VCPU的EPT(扩展页表)指向新的内存区域;该操作可以使得VCPU对于该页面的所有写操作都作用在复制出来的页面上;
B4.记录VCPU在该执行块中读和写的页面;该记录以位图方式进行存储:将写过的页面存储在“写位图”中,将读写的页面存储在“读写位图”中;
C.在执行块执行结束后,执行如下操作:
C1.获得提交锁,该锁被所有VCPU共享;
C2.检测该执行块与其他VCPU的执行是否有冲突;检测方式为:检测“读写位图”;与“冲突位图”是否存在重叠,如果存在重叠则表示有冲突,反之则表示没有冲突;
C3.如果存在冲突,则执行回滚操作;回滚操作过程如下:
a.销毁B3阶段写时复制的页面;
b.恢复VCPU的EPT(扩展页表)使其指向原页面;
c.恢复A1~A4阶段记录的VCPU状态;
d.插入B1阶段记录的所有中断;
C4.如果不存在冲突,则执行提交操作;提交操作过程如下:
a.将B3阶段写时复制的页面内容拷贝回原页面;
b.恢复VCPU的EPT(扩展页表)使其指向原页面;
c.销毁B3阶段写时复制的页面;
d.将B1、B2阶段记录的信息保存在日志文件中;
e.获得唯一的提交序号,将当前执行块的执行约束和VCPU的执行位置三元组保存在日志文件中;执行块的执行约束指该执行块需要在哪个执行块之后被执行;
C5.释放C1阶段获得的提交锁;
图2是本发明在重演阶段的流程框图。对于重演阶段,包括如下操作:
D.在重演阶段,对于B中对应每一个执行块,执行如下操作:
D1.获得当前块的执行窗口;获得的方式为:检查系统为当前VCPU维护的执行序号是否大于等于当前块的执行序号,如果是,则将系统中每个VCPU的执行序号加1,并继续以下操作;否则重复该检查过程直到满足上述检查条件;获得当前块的执行窗口的原理是:系统为每个VCPU维护一个执行序号,在某个执行块准备执行之前,需要检查是否满足“当前VCPU的执行序号大于等于当前块的执行序号”,该条件表示当前执行块进入到了当前VCPU的可执行窗口中。
D2.在虚拟机退出的位置设置断点,并进入虚拟机;设置断点采用的是单步执行技术,即单步执行每一条虚拟机指令,直到执行到断点位置;
D3.在断点处处理中断和非确定性事件的插入;对于B1阶段记录的每个中断和B2阶段的每个非确定性事件,将中断插入到对应断点位置;
D4.重复执行D2~D3过程,直到该执行块中的全部指令执行结束;
在具体实施过程中,可以通过如下几个方面对系统的性能进行优化:
1.在B4阶段中,可以通过Intel VT提供的扩展页表硬件辅助技术来完成对读写页面的记录工作;在开启扩展页表硬件辅助技术后,可以在执行块执行结束后完成扫描扩展页表(EPT)的Access(访问)位和Dirty(写脏)位来获得该执行块中VCPU对内存的读写情况。
2.可以开启磁盘DMA(直接内存访问)的支持,需要将磁盘DMA模块单独作为最高优先级的执行块来处理,DMA激活期间停止其它VCPU执行块的提交工作。加入DMA的支持可以加快虚拟机访问磁盘的速度,从而提高系统的性能。其原理是:DMA和VCPU是同样层面的结构,可以认为DMA是一个特殊的VCPU,且比VCPU具有更高的优先级,DMA的执行是一定可以提交并反映在相应内存中的,所以DMA激活期间其他VCPU需要等待DMA执行结束才可以继续执行。
3.延迟页表修改方法。在C4(b)阶段,延迟修改写时复制的页面对应的页表内容,在之后有需要的时候(如其他VCPU访问该页面等)再修改对应页表。根据局部性原理,该技术能够减少在下一个执行块中写时复制页面的数量,从而提高系统的性能。
4.提前检测方法。在B3阶段处理写时复制页面时,提前对该页面进行冲突检测,如果该页面与其他VCPU在该执行块执行过程中提交的页面有冲突,则在该位置提前截断该执行块,进入提交阶段(C阶段)。该方法能够在已经确定产生冲突的情况下,提前提交以避免该冲突的产生,能够有效降低冲突执行块的比例,从而减少执行块的回滚。
下面通过实施例对本发明做具体说明。
实施例一:
本实施例在一个拥有两个VCPU的虚拟机系统中使用本发明的确定性重演方法,以下描述的是在记录阶段的一个执行片段。两个VCPU分别命名为VCPU 0和VCPU 1;图3描述了该虚拟机系统两个VCPU的一段可能的指令运行片段,其中VCPU 0和VCPU 1下面对应的是其指令执行情况,虚线框表示执行块的边界;该片段的执行情况如下:
1)VCPU 0与VCPU 1在运行执行块之前需要首先记录VCPU的状态;
2)在VCPU 0与VCPU 1的执行过程中,二者分别写了内存页面A,这两次写操作分别触发了写时复制技术,二次写操作的内容都被写入到了VCPU私有的页面中;
3)VCPU 0和VCPU 1执行过程中,需要记录所有的外部中断(外部中断1和外部中断2);
4)VCPU 0首先结束执行块,检测冲突;由于此时没有其他执行块提交,不存在冲突,提交该执行块,将执行过程中复制的页面A写回到公共内存中;VCPU 0开始下一个执行块的执行;将VCPU 0写的页面(页面A)扩散给VCPU 1;
5)VCPU 1随后结束执行块,检测冲突;由于VCPU 0刚刚写过内存页面A,与VCPU 1在该执行块中写的内存页面A冲突,则VCPU 1该执行块需要回滚;回滚需要如下三个操作:
a.摧毁VCPU 1上一个执行块写时复制的页面1;
b.恢复执行块执行之前记录的VCPU状态;
c.重新插入外部中断2;
6)随后VCPU 1重新运行该执行块,并写时复制内存页面A;此次执行与VCPU 0的执行没有冲突,可以提交;
7)该运行片段结束,VCPU 0与VCPU 1继续运行其后的执行块。
实施例二:
本实施例在一个拥有两个VCPU的虚拟机系统中使用本发明的确定性重演系统,以下描述的是在重演阶段的一个执行片段,见图4所示。两个VCPU分别命名为VCPU 0和VCPU1;虚线框表示执行块的边界;该片段的执行情况如下:
1)VCPU 0首先等待满足执行约束,其首先满足执行约束并运行执行块1;
2)在执行块1运行过程中需要在适当位置退出虚拟机执行,并插入外部中断等异步事件;
3)VCPU 1中执行块2的执行约束需要满足在执行块1结束之后,所以VCPU 1需要等待知道VCPU 0的执行块1执行结束才能够开始执行块2的运行;
4)执行块1执行结束后,VCPU 0检测执行块3的执行约束,其满足执行约束,即可与执行块2并行执行;
5)该运行片段结束,VCPU 0与VCPU 1继续运行其后的执行块。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (10)
1.一种多核虚拟机确定性重演的方法,所述方法将虚拟机中的虚拟中央处理单元的指令执行序列划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段,具体包括如下步骤:
对于记录阶段:
A.在每个执行块执行之前,记录当前虚拟中央处理单元的状态,执行如下操作:
A1.记录虚拟中央处理单元的寄存器的状态;
A2.导出并记录虚拟中央处理单元的浮点计算单元相关寄存器的状态;
A3.记录虚拟中央处理单元的输入输出高级可编程中断控制器的状态;
A4.记录虚拟中央处理单元相关机器状态寄存器的状态;
B.在每个执行块执行期间,执行如下操作:
B1.记录外部中断;
B2.记录非确定性事件;
B3.通过写时复制方法处理虚拟中央处理单元写的内存页面;
B4.记录虚拟中央处理单元在该执行块中读和写的内存页面;
C.在每个执行块执行结束后,执行如下操作:
C1.获得提交锁;
C2.检测该执行块与其他虚拟中央处理单元的执行是否有冲突;
C3.如果存在冲突,则执行回滚操作;
C4.如果不存在冲突,则执行提交操作;
C5.释放提交锁;
对于重演阶段:
D.在重演阶段,对于B中对应的每一个执行块,执行如下操作:
D1.获得当前执行块的执行窗口;
D2.在虚拟机退出的位置设置断点,并进入虚拟机;
D3.在断点处处理中断和非确定性事件的插入;
D4.重复执行步骤D2~D3,直到该执行块中的全部指令执行结束。
2.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,所述执行块执行结束的时间点为以下三种中的一种:
1)虚拟中央处理单元需要执行输入输出指令时;
2)虚拟中央处理单元需要执行内存映射输入输出指令时;
3)虚拟中央处理单元已经执行指定条数的指令时。
3.如权利要求2所述多核虚拟机确定性重演的方法,其特征是,当所述执行块执行结束的时间点为虚拟中央处理单元需要执行输入输出指令时,通过Intel VT技术提供的虚拟机输入输出指令退出机制完成;当所述执行块执行结束的时间点为虚拟中央处理单元需要执行内存映射输入输出指令时,通过Intel VT技术提供的扩展页表配置失效机制完成;当所述执行块执行结束的时间点为虚拟中央处理单元已经执行指定条数的指令时,通过IntelVT技术提供的虚拟中央处理单元计时器机制完成。
4.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,通过开启磁盘直接内存访问的方法来加快虚拟机访问磁盘的速度,使得系统的性能提高。
5.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,所述多核虚拟机确定性重演的方法用于Linux系统,在步骤A2中所述导出并记录虚拟中央处理单元的浮点计算单元相关寄存器状态之前,首先导出浮点计算单元的状态。
6.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,步骤A4所述记录虚拟中央处理单元相关机器状态寄存器的状态,具体通过Intel VT的机器状态寄存器保存/恢复方法来实现。
7.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,步骤B3通过所述写时复制方法处理虚拟中央处理单元写的内存页面时,提前对该内存页面进行冲突检测,若确定产生冲突,提前提交以避免该冲突的产生,从而减少执行块的回滚。
8.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,步骤C3所述执行回滚操作过程具体如下:
a.销毁B3阶段写时复制的页面;
b.恢复虚拟中央处理单元的扩展页表,使其指向原页面;
c.恢复A1~A4阶段记录的虚拟中央处理单元状态;
d.插入B1阶段记录的所有中断。
9.如权利要求1所述多核虚拟机确定性重演的方法,其特征是,步骤C4所述执行提交操作过程具体如下:
a.将B3阶段写时复制的页面内容拷贝回原页面;
b.恢复虚拟中央处理单元的扩展页表,使其指向原页面;
c.销毁B3阶段写时复制的页面;
d.将B1、B2阶段记录的信息保存在日志文件中;
e.获得唯一的提交序号,将当前执行块的执行约束和虚拟中央处理单元的执行位置保存在日志文件中。
10.如权利要求9所述多核虚拟机确定性重演的方法,其特征是,步骤b延迟操作,在有其他虚拟中央处理单元访问该页面时,再进行步骤b恢复相应扩展页表的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510102323.6A CN106033368B (zh) | 2015-03-09 | 2015-03-09 | 一种多核虚拟机确定性重演的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510102323.6A CN106033368B (zh) | 2015-03-09 | 2015-03-09 | 一种多核虚拟机确定性重演的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106033368A CN106033368A (zh) | 2016-10-19 |
CN106033368B true CN106033368B (zh) | 2019-02-22 |
Family
ID=57150300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510102323.6A Expired - Fee Related CN106033368B (zh) | 2015-03-09 | 2015-03-09 | 一种多核虚拟机确定性重演的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106033368B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775597A (zh) * | 2016-12-06 | 2017-05-31 | 复旦大学 | 一种松耦合结构的并行多核全系统模拟器 |
US11526358B2 (en) | 2019-10-15 | 2022-12-13 | Raytheon Company | Deterministic execution replay for multicore systems |
CN111913779B (zh) * | 2020-06-29 | 2024-07-30 | 中国科学院信息工程研究所 | 一种基于持续快照的虚拟机并行记录重放方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563674A (zh) * | 2006-12-21 | 2009-10-21 | 国际商业机器公司 | 对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统 |
CN104216764A (zh) * | 2014-07-31 | 2014-12-17 | 昆明理工大学 | 一种基于多线程嵌入式系统并行程序跟踪与回放方法 |
CN104246696A (zh) * | 2012-01-26 | 2014-12-24 | 惠普发展公司,有限责任合伙企业 | 基于图像的应用自动化 |
CN104375819A (zh) * | 2013-08-12 | 2015-02-25 | 国际商业机器公司 | 用于应用执行的自动记录和重放的系统、方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078666A1 (en) * | 2009-05-26 | 2011-03-31 | University Of California | System and Method for Reproducing Device Program Execution |
-
2015
- 2015-03-09 CN CN201510102323.6A patent/CN106033368B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101563674A (zh) * | 2006-12-21 | 2009-10-21 | 国际商业机器公司 | 对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统 |
CN104246696A (zh) * | 2012-01-26 | 2014-12-24 | 惠普发展公司,有限责任合伙企业 | 基于图像的应用自动化 |
CN104375819A (zh) * | 2013-08-12 | 2015-02-25 | 国际商业机器公司 | 用于应用执行的自动记录和重放的系统、方法和装置 |
CN104216764A (zh) * | 2014-07-31 | 2014-12-17 | 昆明理工大学 | 一种基于多线程嵌入式系统并行程序跟踪与回放方法 |
Non-Patent Citations (1)
Title |
---|
Scalable Deterministic Replay in a Parallel Full-system Emulator;Yufei Chen;《ACM SIGPLAN symposium on Principies and Practice of Parallel Programming》;20130228;第207-217页 |
Also Published As
Publication number | Publication date |
---|---|
CN106033368A (zh) | 2016-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10474471B2 (en) | Methods and systems for performing a replay execution | |
US8170859B1 (en) | Methods, apparatuses and computer program products for simulating arbitrary unmodified code | |
EP1856612B1 (en) | Method for counting instructions for logging and replay of a deterministic sequence of events | |
TWI498728B (zh) | 非搶占式圖形處理單元上互動除錯之方法和裝置 | |
US9329958B2 (en) | Efficient incremental checkpointing of virtual devices | |
US8843910B1 (en) | Identifying a set of functionally distinct reorderings in a multithreaded program | |
US8457943B2 (en) | System and method for simulating a multiprocessor system | |
US11030076B2 (en) | Debugging method | |
CN101339581B (zh) | 基于中断通讯的嵌入式系统的在线调试仿真方法 | |
US9607120B2 (en) | Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit | |
US10055248B1 (en) | Virtual processor scheduling via memory monitoring | |
US10346330B2 (en) | Updating virtual machine memory by interrupt handler | |
TWI738680B (zh) | 監視處理器之操作之系統 | |
Lu et al. | Fast memory state synchronization for virtualization-based fault tolerance | |
CN106033368B (zh) | 一种多核虚拟机确定性重演的方法 | |
Petrovic et al. | Implementing virtual machine replication: A case study using xen and kvm | |
US20150212835A1 (en) | Automatic identification of interesting interleavings in a multithreaded program | |
US9697040B2 (en) | Software replayer for transactional memory programs | |
US20120233410A1 (en) | Shared-Variable-Based (SVB) Synchronization Approach for Multi-Core Simulation | |
Ko et al. | Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms | |
Chen et al. | Asymmetric virtual machine replication for low latency and high available service | |
Shi et al. | SyncSnap: Synchronized live memory snapshots of virtual machine networks | |
US8893092B1 (en) | Using hints to direct the exploration of interleavings in a multithreaded program | |
CN102073551B (zh) | 可自我重置的微处理器及其方法 | |
Efimov et al. | Features of the deterministic replay in the case of a minimum device set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Chunqi Inventor after: Ren Shiru Inventor after: Tan Le Inventor after: Xiao Zhen Inventor before: Li Chunqi Inventor before: Ren Shiru Inventor before: Tan Le Inventor before: Xiao Zhen |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190222 |