[关闭]
@dyk 2015-07-12T08:45:30.000000Z 字数 983 阅读 342

Cyrus: Unintrusive Application-Level Record-Replay for Replay Parallelism

ReadingNote

ASPLOS'13

多线程程序的记录以及准确重放
贡献
(1)提出了一个基于硬件的(主要为了提高重放的速度)非嵌入式方法,能够使多线程的应用高效的记录以及重放
(2)Cyrus提出了一个实时的软件后端Pass,当日志一产生就里面的进行处理
(3)作者修改了Linux内核来控制以及虚拟化Cyrus

每一个Sphere有两个日志一个输入日志(input log)一个内存日志(memory log)
Memory log,记录了线程之间的数据依赖顺序(使用基于运行时或者基于操作系统的软件方法)
为了减少Memory Log记录的状态量,许多先前的工作都是记录下线程之间通信的工作量而不是通信本身。

在a~b的情况下面所有的数据依赖都由P0来记录,而P1无法感知到这些依赖问题
当这些依赖信息被放入内存之后将由实时软件的后端Pass将它转化成为最后的日志
Pass完成以下3个动作
(1)改进或者删除一些依赖关系来正确的实现进程级别的重放
(2)将单向的依赖关系变成双向的依赖关系,这样使回放更加的简单
(3)将生成的日志处理成为适合高度并行处理的信息
Pass同时也能够自由的调节重放的并行度来调节日志的规模以及日志的大小

Reference Related

Reference List

在与Deterministic R&R方面有许多的研究。
基于软件的方法,需要修改运行时库,编译器,操作系统,VMM等等。
软件方法都是设计在单线程的程序上面的,并且性能上很差。

Cyrus是第一个基于硬件的,非插入式的应用级别的R&R方法。


Authors Related

Nima Honarmand 多线程程序的R&R
Nathan Dautenhahnexport
Josep Torrellas
Samuel T. King
Gilles Pokam
Cristiano Pereira

作者研究的方向都相对而言比较底层,软件的debug,各种情况的R&R。


Reading Note

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注