ISSN 1000-1239 CN 11-1777/TP

计算机研究与发展 ›› 2015, Vol. 52 ›› Issue (1): 45-55.doi: 10.7544/issn1000-1239.2015.20140105

所属专题: 2015优青专题

• 软件技术 • 上一篇    下一篇

一种用于多线程程序性能分析的重放系统

郑龙,廖小飞,吴松,金海   

  1. (服务计算技术与系统教育部重点实验室(华中科技大学) 武汉 430074) (华中科技大学计算机科学与技术学院 武汉 430074) (longzh@hust.edu.cn)
  • 出版日期: 2015-01-01

A Replay System for Performance Analysis of Multi-Threaded Programs

Zheng Long, Liao Xiaofei, Wu Song, Jin Hai   

  1. (Key Laboratory of Services Computing Technology and System (Huazhong University of Science and Technology), Ministry of Education, Wuhan 430074) (School of Computer Science and Technology, Huazhong University of Science and Technology, Wuhan 430074)
  • Online: 2015-01-01

摘要: 近年来,多线程程序中性能bug问题越来越突出.传统用于检测并发错误的记录/重放系统存在重放开销和执行时间不精确等问题,因此不适于对性能bug的研究.针对上述问题,提出了一种可用于多线程程序性能分析的重放系统——PerfPlay.首先,分析了用于程序性能分析时必要的程序信息;其次,基于程序执行轨迹,探讨了不同的重放策略,并提出了基于程序调度的重放策略,以保证重放系统的性能保真度;最后,基于提出的性能重放系统,进一步研究了经典的“线程间不必要锁竞争”所造成的性能问题.通过与传统的重放策略作比较,PerfPlay保证了重放系统的性能保证度.并经过案例研究,发现并进一步验证了若干真实的多线程程序性能问题.

关键词: 性能bug, 重放, 案例研究, 多线程, 不必要锁竞争

Abstract: In recent years, it is a hotspot for program analysis to detect performance bugs in multi-threaded applications. However, traditional record/replay systems focusing on concurrent anomalies have many limitations to tackle the issues of performance bugs, such as replay overhead and imprecision of replay-based execution time. To cope with the problems above, this paper proposes an improved replay system PerfPlay which can be used for the performance analysis of multi-threaded programs. To be specific, we first collect and analyze the requisite information for the program performance. Secondly, the different replay strategies are discussed and then we present a novel schedule-driven strategy to ensure the performance fidelity of replay system. Finally, we study the classical performance problem of “inter-thread unnecessary lock contention” under the framework of PerfPlay. Compared with the traditional replay strategies, our experimental results demonstrate the performance fidelity of PerfPlay. Through the case study, we find a few performance bugs in real-world and further verify the effectiveness of PerfPlay.

Key words: performance bug, replay, case study, multi-threaded, unnecessary lock contention