The classical way of tuning parallel/distributed applications is based on the analysis of the monitoring information obtained from an execution of the application. However, this "measure and modify" approach is not feasible when the applications have a dynamic behavior. In this case, another approach is required to accomplish performance expectations. This paper presents a solution based on the dynamic tuning approach that addresses these issues. In this approach, an application is monitored, its performance bottlenecks are detected and the application is modified automatically during the execution, without stopping, recompiling or re-running it. The introduced modifications adapt the behavior of the application to dynamic variations.