发明名称 一种多核虚拟机确定性重演的方法
摘要 本发明公布了一种多核虚拟机确定性重演的方法,该方法将虚拟机中的虚拟处理单元(VCPU)的执行划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段,记录阶段包括执行前记录当前虚拟处理单元的状态、执行过程中记录操作和执行结束后记录操作;重演阶段包括获得当前执行块的执行窗口、在虚拟机退出的位置设置断点并进入虚拟机、在断点处处理中断和非确定性事件的插入等操作。本发明在现有多核CPU(处理单元)架构下,可解决多核虚拟机内存访问的随机性问题,加快多核虚拟机确定性重演的记录速度,同时大大降低记录日志文件的大小。
申请公布号 CN106033368A 申请公布日期 2016.10.19
申请号 CN201510102323.6 申请日期 2015.03.09
申请人 北京大学 发明人 李春奇;任世儒;谭乐;肖臻
分类号 G06F9/455(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 北京万象新悦知识产权代理事务所(普通合伙) 11360 代理人 苏爱华
主权项 一种多核虚拟机确定性重演的方法,所述方法将虚拟机中的虚拟中央处理单元的执行划分为多个执行块,每个执行块的执行过程包括记录阶段和重演阶段,具体包括如下步骤:对于记录阶段:A.在每个执行块执行之前,记录当前虚拟中央处理单元的状态,执行如下操作:A1.记录虚拟中央处理单元的寄存器的状态;A2.导出并记录虚拟中央处理单元的浮点计算单元相关寄存器的状态;A3.记录虚拟中央处理单元的输入输出高级可编程中断控制器的状态;A4.记录虚拟中央处理单元相关机器状态寄存器的状态;B.在每个执行块执行期间,执行如下操作:B1.记录外部中断;B2.记录非确定性事件;B3.通过写时复制方法处理虚拟中央处理单元写的内存页面;B4.记录虚拟中央处理单元在该执行块中读和写的内存页面;C.在每个执行块执行结束后,执行如下操作:C1.获得提交锁;C2.检测该执行块与其他虚拟中央处理单元的执行是否有冲突;C3.如果存在冲突,则执行回滚操作;C4.如果不存在冲突,则执行提交操作;C5.释放提交锁;对于重演阶段:D.在重演阶段,对于B中对应的每一个执行块,执行如下操作:D1.获得当前执行块的执行窗口;D2.在虚拟机退出的位置设置断点,并进入虚拟机;D3.在断点处处理中断和非确定性事件的插入;D4.重复执行步骤D2~D3,直到该执行块中的全部指令执行结束。
地址 100871 北京市海淀区颐和园路5号