中期报告:二进制翻译下的多线程 Replay 系统
description
Transcript of 中期报告:二进制翻译下的多线程 Replay 系统
中期报告:二进制翻译下的多线程 Replay 系统
报告人:刘泽善导师: 武成岗时间: 2011 年 1 月
目录 研究意义 研究背景 二进制翻译下的 Replay 系统
共享内存访问依赖 系统调用的处理 环境变量的处理
项目及课程完成情况
研究意义 二进制翻译( BT )
在龙芯上兼容执行 X86 程序,丰富龙芯上的应用软件 e.g. flashplayer
多线程程序 flashplayer, firefox, mysql, apache, splash 具有不确定性,调试困难,尤其在 DBT 下
Replay 对二进制翻译器的意义 研究表明,调试一个并发错误所花费的时间取决于
错误重现的速度 Replay 是重现错误的有效方法 对提高 DBT 的健壮性具有重要意义
研究意义 降低 Replay 系统开销的意义
学术界和工业界关注的重点 时间敏感的程序的需求
研究现状 PinPlay 实现了本地的记录重放系统,但开销巨大 就调研所知目前尚无二进制翻译下的记录重放系统
目录 研究意义 研究背景 二进制翻译下的 Replay 系统
共享内存访问依赖 系统调用的处理 环境变量的处理
项目及课程完成情况
背景介绍 PinPlay(CGO’10) 详尽的分析了影响多线程的
不确定性因素 起始栈位置的改变 代码和数据位置的改变 程序二进制码以及共享库代码的改变 处理器特定指令行为的改变 信号 未初始化内存的读 系统调用行为的改变 共享内存访问依赖
DBT 下不存在DBT 下不存在
静态编译避免静态编译避免
SPLASH2 不存在SPLASH2 不存在
背景介绍 -Transitive Reduction
ji
14 Local2 := 2
15 $r1 := Flag
16 Bneq $r1, $r0, -1
17 Nop
18 $r1 := Flag
19 Bneq $r1, $r0, -1
20 Nop
21 Y := Share1
22 Z := Share2
31 Flag := 1
32 Share1 := 5
33 Share2 := 6
34 Flag := 0
35 Local1 := 3
目录 研究意义 研究背景 二进制翻译下的 Replay 系统
共享内存访问依赖 系统调用的处理 环境变量的处理
项目及课程完成情况
共享内存访问依赖
i:31j:15 和 i:34j:18 为 W/R 依赖, j:15i:34 为 R/W 依赖
ji
14 Local2 := 2
15 $r1 := Flag
16 Bneq $r1, $r0, -1
17 Nop
18 $r1 := Flag
19 Bneq $r1, $r0, -1
20 Nop
21 Y := Share1
22 Z := Share2
31 Flag := 1
32 Share1 := 5
33 Share2 := 6
34 Flag := 0
35 Local1 := 3
共享内存访问依赖 -记录
FDR(ISCA’03) 的软件实现,结合了 Transitive Reduction tid1:pc1:ic1tid2:pc2:ic2 上图中记录的结果:
i:pc{flag := 1}:31j:pc{$r1 := flag}:15 j:pc{$r1 := flag}:15i:pc{flag := 0}:34 i:pc{flag := 0}:34j:pc{$r1 := flag}:18
共享内存访问依赖 -重放 每个依赖关联一把锁,初始化成锁闭状态,弧
头 spin_lock ,弧尾 spin_unlock
spin_lock(lock1)spin_unlock(lock2)
spin_lock(lock3)
spin_lock(lock2)spin_unlock(lock3)
lock2
lock3
lock1
ji
14 Local2 := 2
15 $r1 := Flag
16 Bneq $r1, $r0, -1
17 Nop
18 $r1 := Flag
19 Bneq $r1, $r0, -1
20 Nop
21 Y := Share1
22 Z := Share2
31 Flag := 1
32 Share1 := 5
33 Share2 := 6
34 Flag := 0
35 Local1 := 3
spin_unlock(lock1)
共享内存访问依赖 -重放 每条访存指令有两个队列(弧尾队列、弧头队
列),按指令计数从低到高排序,避免查找
访存指令访存指令
IC1 IC2 IC3 … ICm
IC1’ IC2’ IC3’ … ICn
依赖弧尾队列, IC递增
依赖弧头队列, IC递增
共享内存访问依赖 -优化措施 栈内存访问无需插桩 利用龙芯富余的临时寄存器,手工编写了插桩
函数,几乎无上下文切换 内存地址关联数据结构的优化组织
查找约 20 条 <= 64M 实验选择 x = 6
16bits (16-x)bitsaddr xbits
第一层映射
CIC[P]
共享内存访问依赖 -优化措施
写 log 文件的优化 线程写入自己的缓存区,程序结束时再写入统一的
log 文件,避免竞争 尚未实现,但有价值的优化措施
访存地址关联数据结构的缓存优化(减少近 20 条指令)
根据程序的特点进行特定的优化 Linux 多线程程序多用 pthread 库编写 粗细粒度结合重放方法(同步点插桩、指令级插桩结合)
共享内存访问依赖 -优化措施
重放插桩函数的手工编写 访存依赖的静态分析冗余消除
方法:求依赖图所有点对最长路径,只保留路径上的访存依赖减少约1~10% 的依赖
T0 T1 T2 T3
10:read(x)
21:write(x)
32:write(x)
43:write(x)
系统调用
gettimeofday 记录运行时保存,重放运行时恢复
futex 唤醒序问题 join子线程问题
系统调用 -futex解决方法:记录wakewait序重放时:不执行 wait/wake ,重用访存依赖的方法记录恢复返回值
T0 T1 T2 T3
wait wait wait wake(1)
wake(1)wake(1)wake(0)
futex 的唤醒序问题, wake(i) 的 i 是唤醒的线程数目
系统调用 -futex
父线程 join子线程 存在 exitwait 序 父线程只有在发现子线程没有退出时才 wait 给定父子线程,序是否存在不确定
解决方法 等待机制保证该唤醒序一定存在
环境变量
如 $OLDPWD 不同 影响 getenv() 的执行行为 解决方法:
记录运行:程序启动时记录下所有的环境变量 重放运行:清空所有的环境变量 clearenv() ,再恢复成记录的环境变量状态 putenv()
待完成的内容 降低记录重放的开销
实现已经想到的优化措施 阅读相关文献和调试系统的过程中发掘其他的有效
优化措施 控制其他的不确定性因素
代码和数据位置的改变 信号
二进制翻译下多线程重放系统对实际调试的作用
实验结果splash2 (8-threaded) logger slowdown replayer slowdown log size
barnes 26.9042332 82.7578071 142.35Mfmm 12.4791017 27.9332502 4.56Mocean 12.2781908 26.9330855 8.66M
raytrace 6.94710744 4.06446281 211.63Kvolrend 1.00451286 1.00848349 288.23K
water-nsquared 11.8494152 18.1461988 1.29Mwater-spatial 9.94125874 22.0937063 1.84M
cholesky 23.3670525 41.6800381 575.43Kfft 2.09278351 2.46391753 38.41Klu 7.01724138 3.4204244 189.94K
radix 8.27692308 2.36615385 97.59K平均值 11.10526 21.16978 14.55M
logger slown replayer slowdown log sizeSPECOMP2001(4-threaded) 117 25 91M
McBench(4-threaded) 146 36 146M
目录 研究意义 研究背景 二进制翻译下的 Replay 系统
共享内存访问依赖 系统调用的处理 环境变量的处理
项目及课程完成情况
项目及课程完成情况
时间 科研项目 承担任务2008/03-2010/07
参 与 开 发 调 试Loongson/Linux上针对 X86-32 体系结构的动态和静态的二进制翻译器
负责了部分指令的优化翻译,设计实现了符号扩展优化、库包装优 化 、 Shadow Stack 优化、静态翻译代码布局优化等优化措施,调试系统的实际应 用 ( Adobe Reader, Flashplayer)
2010/07-2011/01
独立开发二进制翻 译 系 统 下 的Replay系统
研究二进制翻译系统下 Replay 系统的记录重放优化措施
参加项目
课程 分数 学分 是否学位课
自然辩证法与科技革命 89 3 是通识案例必修课 0 否硕士学位英语(免修) 66 3 是组合数学 93 3 否高性能计算机系统 78 3 是编译程序高级教程 86 3 是并行处理 99 3 是科技文献和网络资源实用
技巧 93 1 否
体育类公共选修课 通过 0.5 否中国特色社会主义理论与
实践 81 1 是
通识案例必修课 通过 1 否音乐素养与合唱艺术 87 0.5 否科技法概论 74 1 否组合优化 86 3 否人机交互界面理论与技术 87 3 是高性能并行计算 83 2 否高性能计算机体系结构与
设计 88 1 否
软件测试 82 1 否先进计算机和软件技术系
列讲座 通过 0.5 否
Web 2.0技术系列讲座 通过 0.5 否学分总计 : 34 学位课学分总计 : 19
课程学习