• 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