Pinpointing and repairing performance bottlenecks in concurrent programs

被引:16
|
作者
Yu, Tingting [1 ]
Pradel, Michael [2 ]
机构
[1] Univ Kentucky, Dept Comp Sci, Lexington, KY 40506 USA
[2] Tech Univ Darmstadt, Dept Comp Sci, Darmstadt, Germany
关键词
Testing; Concurrency; Performance bottlenecks;
D O I
10.1007/s10664-017-9578-1
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Developing concurrent software that is both correct and efficient is challenging. Past research has proposed various techniques that support developers in finding, understanding, and repairing concurrency-related correctness problems, such as missing or incorrect synchronization. In contrast, existing work provides little support for dealing with concurrency-related performance problems, such as unnecessary or inefficient synchronization. This paper presents SyncProf, a profiling approach that helps in identifying, localizing, and repairing performance bottlenecks in concurrent programs. The approach consists of a sequence of dynamic analyses that reason about relevant code locations with increasing precision while narrowing down performance problems and gathering data for avoiding them. A key novelty is a graph-based representation of relations between critical sections, which is the basis for computing the performance impact of a critical section and for identifying the root cause of a bottleneck. Once a bottleneck is identified, SyncProf searches for a suitable optimization strategy to avoid the problem, increasing the level of automation when repairing performance bottlenecks over a traditional, manual approach. We evaluate SyncProf on 25 versions of eleven C/C++ projects with both known and previously unknown synchronization bottlenecks. The results show that SyncProf effectively localizes the root causes of these bottlenecks with higher precision than a state of the art lock contention profiler, and that it suggests valuable strategies to repair the bottlenecks.
引用
收藏
页码:3034 / 3071
页数:38
相关论文
共 50 条
  • [21] The evolution of concurrent programs
    Ross, BJ
    APPLIED INTELLIGENCE, 1998, 8 (01) : 21 - 32
  • [22] Layered Concurrent Programs
    Kragl, Bernhard
    Qadeer, Shaz
    COMPUTER AIDED VERIFICATION (CAV 2018), PT I, 2018, 10981 : 79 - 102
  • [23] Chopping Concurrent Programs
    Giffhorn, Dennis
    2009 NINTH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2009, : 13 - 22
  • [24] Maximally concurrent programs
    Joshi, Rajeev
    Misra, Jayadev
    Formal Aspects of Computing, 2000, 12 (02) : 100 - 119
  • [25] DEBUGGING CONCURRENT PROGRAMS
    MCDOWELL, CE
    HELMBOLD, DP
    COMPUTING SURVEYS, 1989, 21 (04) : 593 - 622
  • [26] THE COMPOSITION OF CONCURRENT PROGRAMS
    CHANDY, KM
    TAYLOR, S
    PROCEEDINGS : SUPERCOMPUTING 89, 1989, : 557 - 561
  • [27] SERIALIZATION OF CONCURRENT PROGRAMS
    FLE, MP
    JOURNAL OF COMPUTER AND SYSTEM SCIENCES, 1989, 38 (03) : 474 - 493
  • [28] Precise slicing of concurrent programs An Evaluation of static slicing algorithms for concurrent programs
    Giffhorn, Dennis
    Hammer, Christian
    AUTOMATED SOFTWARE ENGINEERING, 2009, 16 (02) : 197 - 234
  • [29] Pinpointing stage-specific causes of recruitment bottlenecks to optimize seed-based wetland restoration
    Zhao, Zhiyuan
    Zhang, Liquan
    Yuan, Lin
    Bouma, Tjeerd J.
    JOURNAL OF APPLIED ECOLOGY, 2023, 60 (02) : 330 - 341
  • [30] MemSpy. Analyzing memory system bottlenecks in programs
    Martonosi, Margaret
    Gupta, Anoop
    Performance Evaluation Review, 1992, 20 (01):