DocumentCode
1763553
Title
Input-Sensitive Profiling
Author
Coppa, Emilio ; Demetrescu, Camil ; Finocchi, Irene
Author_Institution
Dept. of Comput. Sci., Sapienza Univ. of Rome, Rome, Italy
Volume
40
Issue
12
fYear
2014
fDate
Dec. 1 2014
Firstpage
1185
Lastpage
1205
Abstract
In this article we present a building block technique and a toolkit towards automatic discovery of workload-dependentperformance bottlenecks. From one or more runs of a program, our profiler automatically measures how the performance of individual routines scales as a function of the input size, yielding clues to their growth rate. The output of the profiler is, for each executed routine of the program, a set of tuples that aggregate performance costs by input size. The collected profiles can be used to produceperformance plots and derive trend functions by statistical curve fitting techniques. A key feature of our method is the ability toautomatically measure the size of the input given to a generic code fragment: to this aim, we propose an effective metric for estimating the input size of a routine and show how to compute it efficiently. We discuss several examples, showing that our approach can reveal asymptotic bottlenecks that other profilers may fail to detect and can provide useful characterizations of the workload and behavior of individual routines in the context of mainstream applications, yielding several code optimizations as well as algorithmic improvements. To prove the feasibility of our techniques, we implemented a Valgrind tool called aprof and performed an extensive experimentalevaluation on the SPEC CPU2006 benchmarks. Our experiments show that aprof delivers comparable performance to otherprominent Valgrind tools, and can generate informative plots even from single runs on typical workloads for mostalgorithmically-critical routines.
Keywords
curve fitting; program diagnostics; software performance evaluation; software tools; statistical analysis; SPEC CPU2006 benchmarks; Valgrind tools; aprof; automatic workload-dependent performance bottleneck discovery; building block technique; code optimizations; experimental evaluation; generic code fragment; growth rate; input-sensitive profiling; performance plots; program executed routine; statistical curve fitting techniques; tuples; Algorithm design and analysis; Benchmark testing; Context modeling; Market research; Performance profiling; asymptotic analysis; dynamic program analysis; instrumentation;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/TSE.2014.2339825
Filename
6858059
Link To Document