Dynamic tuning of parallel/distributed applications (2004)

The main goal of parallel/distributed applications is to solve the considered problem as fast as possible utilizing a certain minimum of the parallel system capacities.In this context, the application performance is one of the most important issues.The classical way of improving the application performance is based on the analysis of the monitoring information obtained from an execution of the application.Developers must search through this information for the bottlenecks and optimize the application behavior changing the source code manually.This approach requires developers to do many tasks and have a great experience about parallel programming.Therefore, the classical application tuning is then very difficult especially for non-expert programmers.It is necessary to provide tools that automatically carry out these tasks.Moreover, this classical approach is not feasible when the applications have a dynamic behavior.Many applications have a different behavior according to the input data set or even change their behavior dynamically during the execution.In this case, another approach is required to accomplish performance expectations.It would be desirable that the performance tuning could be done on the fly by modifying the application according to the particular conditions of the execution.This thesis addresses the problem of automatic and dynamic tuning of parallel and distributed applications.Our objective is to help developers in the process of improving the application performance.This work presents a whole solution that deals with the issues of automatic and dynamic application improvement.In this approach, an application is monitored, its performance bottlenecks are detected, solutions are given and the application is modified on the fly.All these steps are performed automatically, dynamically and continuously during application execution.This approach exempts developers from performance analysis and difficult intervention to a source code by automatically improving the performance of parallel programs during run-time.The dynamic analysis and introduced modifications permits to adapt the behavior of the application to dynamic variations.With this objective we have developed an environment called MATE (Monitoring, Analysis and Tuning Environment) that provides dynamic automatic tuning of parallel applications.MATE performs dynamic tuning in three basic and continuous phases: V monitoring, performance analysis and modifications.This environment dynamically and automatically instruments and traces a running application to gather information about the application behavior.The analysis phase searches for bottlenecks, detects their causes and gives solutions on how to overcome them.Finally, the application is dynamically tuned by applying given solution.Moreover, while it is being tuned, the application does not need to be re-compiled, re-linked and restarted.Many various practical experiments have been conducted on distributed and parallel applications to see if this approach really works.We have proven that it is effective, feasible, profitable, and can be used for a real improvement of the program performance.Running applications under control of a dynamic tuning system has allowed for adapting their behavior to the existing conditions and improving their functionality. VIOnce an application has been implemented in parallel, developers must systematically test it from the functional point of view to guarantee its correctness.Then, to reach the goal and provide the highest performance, programmers are obligated to carry out an application optimization process to ensure that there are no performance bottlenecks during the application execution.The optimization process, also known as tuning process, requires a developer to go through the application performance analysis and the modification of critical application parameters.The tuning process implies then several phases.First, the performance measurements must be taken in order to provide information about the application.This phase is known as the monitoring -it collects information related to the execution of the application.Then, the analysis of this information is performed.Performance analysis finds performance bottlenecks, deducts their causes and determines the actions to be taken to eliminate these bottlenecks.Finally, appropriate changes must be applied into the application code to overcome problems and improve performance.Analysis Modifications Events Tuning Problem Solution Suggestions for users Monitoring Parallel program Measurements ContributionThe main objective of this thesis has been to show that the performance of distributed parallel programs can be improved automatically during run-time.Therefore, we have investigated this idea and it has given a fruitful results that can be summarized in that this approach works, is applicable, effective and useful in certain conditions.We have proved that it appears as a powerful technique to accomplish the successful performance of applications with dynamic behavior. Classical performance analysisChapter 2 Classical performance analysisIn this chapter, we present a general overview of the classical performance analysis of parallel and distributed applications.Two principal approaches to the classical application analysis are described: based on visualization of the execution and based on prediction of the behavior.We introduce different existing techniques of performance measurement that are utilized in the performance data collection process for the purposes of the application behavior analysis.We also present a set of available tools that support classical performance analysis of parallel programs.