Variational path profiling
First Claim
1. A method of software program execution profiling, comprising:
- measuring variation in execution time between iterations of paths through the software program, the variation in execution time measured for multiple iterations of each path over base times for the paths; and
identifying paths having higher execution time variation;
wherein said measuring comprises;
inserting instrumentation code into the software program;
causing the software program to execute under a usage scenario;
recording profiling data by the instrumentation code during said execution of the software program, the profiling data including at least execution times for at least some iterations of at least some paths of the software program; and
performing a path variation analysis determining which of the paths have higher execution time variation; and
wherein said performing path variation analysis comprises;
determining base times of execution of the paths;
determining variation times for multiple iterations of each of the paths as a difference of the execution times of the multiple iterations of each of the paths from the base times; and
determining path variation times for the paths as a sum of the variation times of the multiple iterations of the respective paths.
2 Assignments
0 Petitions
Accused Products
Abstract
A run time software test tool instruments a program to perform a low overhead profiling of the program'"'"'s execution, which records the execution time of frequent acyclic control flow paths using hardware performance counters. An analysis of the profiling data is performed to identify those program paths that have significant variation in execution time across different dynamic traversals in the same program run. This variation (measured as the difference between the fastest execution of that path and slower executions) represents the potential speedup that potentially could be achieved if the paths were optimized (such as by the addition of simple pre-fetch optimizations) to do away with these variations. The variational paths are identified to the programmer to guide optimization.
-
Citations
14 Claims
-
1. A method of software program execution profiling, comprising:
-
measuring variation in execution time between iterations of paths through the software program, the variation in execution time measured for multiple iterations of each path over base times for the paths; and identifying paths having higher execution time variation; wherein said measuring comprises; inserting instrumentation code into the software program; causing the software program to execute under a usage scenario; recording profiling data by the instrumentation code during said execution of the software program, the profiling data including at least execution times for at least some iterations of at least some paths of the software program; and performing a path variation analysis determining which of the paths have higher execution time variation; and wherein said performing path variation analysis comprises; determining base times of execution of the paths; determining variation times for multiple iterations of each of the paths as a difference of the execution times of the multiple iterations of each of the paths from the base times; and determining path variation times for the paths as a sum of the variation times of the multiple iterations of the respective paths. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A variational path profiling tool comprising:
-
a computer processor configured to perform the actions of; an execution profiler operative to measure and collect execution timings for a plurality of paths taken during execution of a software program under a usage scenario; and a path variation time analyzer operative to identify paths having high execution time variation over base times for the paths based on the collected execution timings, the path variation time analyzer comprising; means to calculate a base time of execution of each of the paths, the base time representing a minimum observed time out of multiple observed times from multiple iterations of the paths; means to calculate a variation time in excess of the base time for each of multiple iterations of the paths; and means to calculate a cumulative total variation time of all of the multiple iterations for the respective paths. - View Dependent Claims (10, 11, 12)
-
-
13. A method of optimizing a software program, comprising:
-
profiling execution of the software program using a bursty tracing framework, the profiling measuring execution timings for multiple iterations of a plurality of paths taken during the execution of the software program; determining base times of execution of the paths, each base time for a path representing a minimum observed time out of multiple observed times from multiple iterations of the paths; analyzing the variability in execution time of each of the paths in the profiled execution of the software program based in part on the sum of execution time differences of multiple iterations of each path from base times determined for the paths; identifying a number of top variable paths having the highest variability in execution time over the base times; and modifying the software program to apply optimizations to avoid stalls from data access at one or more levels of a computer memory hierarchy in the identified top variable paths. - View Dependent Claims (14)
-
Specification