随着并行程序在分布式系统和多核环境下应用日益广泛,人们越来越多地遇到非确定bugs。这种bugs难于重现,为调试并行程序带来很大困难。为了解决该问题,提出了录制-重放机制,希望通过在运行时记录不确定性,在调试时回放以确保bugs被正确地重现。但是,目前在录制-重放上的研究工作仍存在很大局限。首先,对多核共享内存条件下的录制-重放支持不理想;其次,在录制开销,对运行时环境的干扰,日志容量等方面存在明显不足。这些因素导致现有的研究工作只适合在开发环境中进行录制,对生产环境遇到的bugs作用有限。本项目研究一种适合于在生产环境下录制,支持多核环境下共享内存并行程序的录制-重放机制。为达到这个目的,本项目提出了数据流与控制流分离的调试方法,以控制流为基础进行轻量级录制,此外,还将研究利用日志对运行时bugs进行检测的方法,以及根据日志恢复bugs条件进行测试的方法。
随着并行程序在分布式系统和多核环境下应用日益广泛,人们越来越多地遇到非确定bugs。这种bugs难以重现,为调试并行程序带来很大困难。为了解决该问题,研究者们提出了录制-重放机制,希望通过在运行时记录不确定性,在调试时回放以确保bugs被正确地重现。但是,之前录制-重放上的研究工作仍存在很大局限。首先,录制阶段开销巨大,无法在运行时环境进行录制,对生产环境遇到的bugs作用有限。其次,对多核共享内存条件下的录制-重放支持不理想。最后,之前的录制方法会导致被调试进程的运行时信息发生变化,从而影响与该进程进行交互的其它程序功能的正确性。针对以上问题,本项目研究了一种适合于生产环境下录制,支持多核环境下共享内存并行程序的透明录制-重放机制。.本项目首先设计和研发了一个新的录制重放调试工具snitchaser. Snitchaser利用Linux的vDSO机制,提出了一种纯用户态、轻量级的系统调用录制机制,极大的降低了录制的开销,从而解决了生产环境中调试的问题。另外,Snitchaser开发了System call latch机制来实现信号的录制,从而进一步提高了重放过程与真实运行过程的一致性。.在Snitchaser的基础上,本项目进一步研发了一个适用于多线程程序调试的录制重放工具ReBranch。ReBranch通过分离控制流并基于控制流完成录制,避免了非确定性内存访问录制的巨大开销,将录制的性能提高了三倍以上。另外,ReBranch提出了基于interpreter的加载机制。该机制保证录制过程中程序的进程名称、PID等信息不发生变化,从而极大的提高了录制的透明性。利用ReBranch,本项目成功地决了开源系统lighttpd和memcached中的使用传统调试方法拿以解决的bugs。.为了对录制产生的日志进行自动化分析并找到可能的出错点,本项目提出了一种基于文法压缩的日志异常检测算法。该算法可以在线性时间内对日志进行分析,并且不依赖于有关日志内容的先验知识。本项目进一步将该算法推广到分布式系统中,设计并实现了一种基于大规模日志挖掘的分布式系统在线异常系统。相对于传统方法,该系统可以降低检测开销并提高检测精度。
{{i.achievement_title}}
数据更新时间:2023-05-31
惯性约束聚变内爆中基于多块结构网格的高效辐射扩散并行算法
基于时序分区的时态索引与查询
Ordinal space projection learning via neighbor classes representation
并行算法与并行编程: 从个性、共性到软件复用
基于纳米铝颗粒改性合成稳定的JP-10基纳米流体燃料
多核处理器中非确定性错误的调试技术研究
并行程序调试方法和工具的研究
基于全局时钟的并行程序调试的若干关键技术研究
并发与分布式程序调试技术研究