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 条
  • [1] Pinpointing and repairing performance bottlenecks in concurrent programs
    Tingting Yu
    Michael Pradel
    Empirical Software Engineering, 2018, 23 : 3034 - 3071
  • [2] Synthesizing Programs That Expose Performance Bottlenecks
    Della Toffola, Luca
    Pradel, Michael
    Gross, Thomas R.
    PROCEEDINGS OF THE 2018 INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO'18), 2018, : 314 - 326
  • [3] Diagnosing Performance Bottlenecks in Massive Data Parallel Programs
    Dias, Vinicius
    Moreira, Rubens
    Meira, Wagner, Jr.
    Guedes, Dorgival
    2016 16TH IEEE/ACM INTERNATIONAL SYMPOSIUM ON CLUSTER, CLOUD AND GRID COMPUTING (CCGRID), 2016, : 273 - 276
  • [4] Performance evaluation of multithreading in concurrent programs
    Jeong, CK
    Shahsavari, MM
    IEEE SOUTHEASTCON 2002: PROCEEDINGS, 2002, : 7 - 9
  • [5] Systematic detection of memory related performance bottlenecks in GPGPU programs
    Horga, Adrian
    Chattopadhyay, Sudipta
    Eles, Petru
    Peng, Zebo
    JOURNAL OF SYSTEMS ARCHITECTURE, 2016, 71 : 73 - 87
  • [6] THE BIGGEST BOTTLENECKS IN CONCURRENT ENGINEERING
    SHARON, A
    IFIP TRANSACTIONS B-APPLICATIONS IN TECHNOLOGY, 1992, 6 : 5 - 13
  • [7] PINPOINTING STAR PERFORMANCE
    STERNER, J
    PIMA MAGAZINE, 1995, 77 (03): : 12 - 12
  • [8] Pinpointing system performance issues
    Urner, DL
    PROCEEDINGS OF THE ELEVENTH SYSTEMS ADMINISTRATION CONFERENCE (LISA XI), 1997, : 141 - 153
  • [9] CONCURRENT PROGRAMS
    SKOWRON, A
    LECTURE NOTES IN COMPUTER SCIENCE, 1983, 148 : 258 - 269
  • [10] ON THE COMPUTATION OF PERFORMANCE-CHARACTERISTICS OF CONCURRENT PROGRAMS USING GSPNS
    BALBO, G
    DONATELLI, S
    FRANCESCHINIS, G
    MAZZEO, A
    MAZZOCCA, N
    RIBAUDO, M
    PERFORMANCE EVALUATION, 1994, 19 (2-3) : 195 - 222