基于采样技术的动态混合数据竞争检测算法
数据竞争是多线程程序并发错误的主要来源,目前已有许多静态和动态程序分析技术用于检测数据竞争,但这些检测器或者会产生巨大的检测开销,或者会漏掉许多真实的数据竞争错误.文中提出了一种基于优化的FastTrack算法和锁模式的动态混合数据竞争检测算法AsampleLock.该算法利用采样技术,监控同一时刻同时运行的来自并发线程的函数对,通过预竞争检测获得真正涉及数据竞争的内存访问对,从而减小竞争检测分析开销;为了减弱线程调度对算法相关性能的影响,AsampleLock算法采用nolock-hb关系来判断访问事件的并发关系;采用map记录所有共享变量的读写信息,并采用锁模式进行动态数据竞争检测,降低漏报率和误报率.基于上述方法实现了原型系统AsampleLock,选择基准测试集Parsec对该系统进行评估,并与FastTrack算法、LiteRace算法和Multilock-HB算法进行对比.实验结果表明,AsampleLock算法与FastTrack算法相比整体时间开销平均降低了8%;AsampleLock算法的数据竞争检测率与LiteRace算法和FastTrack算法相比分别增加了39%和27%.
多线程程序、数据竞争检测、预竞争检测、锁模式
47
TP311.53(计算技术、计算机技术)
国家重点研发计划项目2016QY07X1503,162300410190
2020-10-28(万方平台首次上网日期,不代表论文的发表时间)
共7页
315-321