RUNTIME SELECTION AMONG DIFFERENT API IMPLEMENTATIONS

I‐Hsin Chung, Jeffrey K. Hollingsworth · Parallel Processing Letters · 2003

Applications are no longer monolithic programs written for a specific purpose. Instead, most software today makes extensive use of libraries and re-usable components. This approach generally results in software that is faster to build and more modular. However, one problem with this approach is that the various libraries used by an application are not tuned to the specific application's need. In addition, applications are frequently used in very different ways. For example, different users may employ a single commercial simulation application for radically different types of simulations. As a result of this reuse of software, applications may not run well in all configurations. The transient, rarely repeatable behavior of Grid [3] computing environment indicates the need to replace standard models of post-mortem performance optimization with a real-time model, one that optimizes application and runtime behavior during program execution. Automatic program library selection provides a framework to help with this goal; it helps to tune the application during runtime execution by monitoring the underlying library performance and switching underlying program libraries as needed. This is an important step toward automated performance tuning in Grid computing. To meet the needs of this type of computing environment, we have been developing the Active Harmony system that allows runtime switching of algorithms and application parameters. We have also developed a set of runtime tuning algorithms that help to intelligently set these parameters at runtime to tune the overall performance of an application. Active Harmony is an infrastructure that allows applications to become tunable by applying very minimal changes to the application and library source code. This adaptability provides applications with a way to improve performance during a single execution based on the observed performance. The types of things that can be tuned at runtime range from parameters such as the size of a read-ahead parameter to what algorithm is being used (e.g., heap sort vs. quick-sort).

Read the paper · More papers on PaperTik