虚拟机在线确定性重演是指虚拟机管理器记录一台虚拟机发生的非确定性事件,在另一台虚拟机上并行地重演这些事件,使两台虚拟机执行相同的指令序列。虚拟机在线确定性重演可以使两台虚拟机的状态完全同步,是实现虚拟机容错系统的关键技术。然而,在多核环境下,由于多线程共享内存的访问属于非确定性事件,记录并重演内存访问之间的依赖关系具有较大的挑战;目前,多核虚拟机在线确定性重演仍然存在许多迫切需要解决的理论问题。在本课题的研究中,我们拟在虚拟机管理器中采用动态二进制扫描技术发现多线程的内存访问行为,以独立执行的二进制指令块为基本单位,使用Lamport 标量逻辑时钟记录动态二进制指令块的执行顺序,并在另一台虚拟机上确定性重演二进制指令块。最终,本课题将研究出一种高效的多核虚拟机在线确定性重演技术,为虚拟机容错系统的实现提供重要的理论基础和关键技术支持。
确定性重演指在一段CPU指令执行过程中,记录开始时的状态和执行时的必要信息,使得将CPU恢复到开始位置重新根据记录的信息执行这一段指令后,能够获得与前一次执行完全相同的结果。多核虚拟机在线确定性重演则是指在对称多处理虚拟化环境下对多核虚拟机进行确定性重演的工作,并且重演可以在线进行,即在记录的同时进行重演。由于目前商用处理器不同核对内存访问顺序的不确定性,多核虚拟机确定性重演中存在着不同核对同一内存地址访问顺序不同导致执行结果不一致的问题,称为“内存访问交织问题”。内存访问交织在多核虚拟机环境中大量的存在,现有的系统中对该问题追踪与记录都有很大的代价,因此解决内存访问交织问题是实现多核确定性重演关键。此外现有的系统在记录阶段会产生很大的日志,因此产生的巨大传输代价使得重演阶段难以与记录阶段同时进行,无法实现在线重演。.本项目团队在项目执行过程中提出了一个基于硬件辅助虚拟化技术从软件上实现多核虚拟机在线确定性重演的系统,该系统采用了基于执行块的方法, 将虚拟机 CPU 执行的若干连续指令划分为执行块,并设计了一种执行块内存访问写时复制机制和执行块的提交/回滚机制,并在此基础上提出了三段提交协议处理执行块提交和回滚的策略,使得对内存交织问题的记录能够以执行块为粒度进行处理,从而大大加速对内存访问交织问题的记录和减少记录日志的大小。此外,本系统还使用了多种硬件辅助虚拟化特性来优化对内存访问的追踪及对重演过程的加速。.研究表明这套系统能够以2~8倍的执行代价实现对多核虚拟机执行情况的记录,比现有系统在绝对执行效率上提高了50%以上;本系统在记录阶段产生的日志平均大小仅为 0.13MB/s,比现有系统减少了90%以上。此外本系统有着良好的内存可扩展性,其效率随着虚拟机内存的增长没有明显的变化。
{{i.achievement_title}}
数据更新时间:2023-05-31
感知的环境动态性与创业团队创新 ——基于团队成员的不确定性降低动机
硅泡沫的超弹压缩和应力松弛的不确定性表征
基于外部动态环境的汽车碰撞危险估计算法研究
Deterministic Entanglement Swapping in a Superconducting Circuit
基于出力曲线聚合与区间潮流典型场景耐受度评价的新能源发电规划方法
基于确定性重演的多核程序并发错误消除方法研究
面向多核异构平台的协同设计虚拟机关键技术研究
多核处理器中非确定性错误的调试技术研究
基于硬件的多核程序执行不确定性消除技术研究