Incremental call-path profiling
Profiling is a key technique for achieving high performance. Call-path profiling is a refinement of this technique that classifies a function's behavior based on the path taken to reach the function. This information is particularly useful when optimizing programs that use libraries, such as those for communication (MPI or PVM), linear algebra (ScaLAPACK), or threading. We present a new method for call-path profiling called incremental call-path profiling. We profile only a subset of the functions in the program, allowing the use of more complex metrics while lowering the overhead. This combination of call-path information and complex metrics is particularly useful for localizing bottlenecks in frequently called functions. We also describe the implementation and application of iPath, an incremental callpath profiler. iPath was used to profile two real-world applications: the MILC su3_rmd QCD distributed simulation and the Paradyn instrumentation daemon. In both applications we found and removed callpath-specific bottlenecks. Our modifications to su3_rmd reduced the running time of the program from 3001 to 1652 s, a 45% decrease. Our modifications to the Paradyn instrumentation daemon greatly increased its efficiency. The time required to instrument our benchmark program was reduced from 296 to 6.4 s, a 98% decrease. Copyright (c) 2006 John Wiley & Sons, Ltd.
profiling performance analysis dynamic instrumentation