[en] The thesis presents, the development of a architectural proposal for the automatic performance analysis of parallel applications developed in programming paradigms of explicit message passing. In the chapters that form the thesis: different aspects have been analyzed that they have to do with the field of application, by introducing the parallel and distributed systems used as base systems, as well the base metrics of performance. Giving a vision of different techniques for monitoring, like tracing and profiling, and since they have used like the first step in the classic tools of performance analysis, normally based on visualization techniques. The deficiencies of these tools, as well as the wide knowledge necessary to interpret the obtained data correctly, takes us to consider tools of a superior level, that provide automatism beyond the monitoring process and they allow us to directly obtain interpretable and useful results for the improvement of the performance of the applications. The architectural proposal, is composed of different phases: from monitoring, detection of problems, classification according to his relevance, analysis of its causes, and the emission of hints on performance that allows us to minimize and/or to make disappear the inefficiencies caused by the performance problems appeared during the execution of the applications. The main goals of the proposed architecture are: a) Ability to specify the performance knowledge, by means of the introduction of knowledge in a form of the structure of the performance problems, and of the analysis of its causes. So, this specification allows us to extend the performance knowledge that every moment can have the tool. b) Independence of the mechanisms of detection of the defined performance problems. c) Independence of environment of message passing used. d) Relation of the problems with the source code of the application, to establish that points are related to the performance problems. e) The emission of useful suggestions/hints facing the end user to provide direct operating points on the code of the application to improve its performance. The experimental results obtained in a tool prototype based on the architecture demonstrate the viability of those of the proposals formulated in this thesis. The tool has been proven with an ample set of parallel and distributed applications to demonstrate this viability, verifying that the methodology is effective, feasible, and profitable and that can be used for a real improvement of the program performance.

[es] La tesis presenta, el desarrollo de una propuesta de arquitectura para el análisis automático de prestaciones de aplicaciones paralelas desarrolladas bajo paradigmas de programación de paso explicito de mensajes. A lo largo de los capítulos que configuran la misma: se han analizado diferentes aspectos que tienen que ver con el ámbito de aplicación, ya sea introduciendo los sistemas paralelos y distribuidos usados como base, así como las métricas base de prestaciones. Dando una visión de diferentes técnicas base para la monitorización, como el tracing y profiling, y como se han usado como primer paso de las herramientas clásicas de análisis de prestaciones, normalmente basadas en técnicas de visualización. Las deficiencias de estas, así como el amplio conocimiento necesario para intepretar correctamente los datos proporcionados, nos llevan a considerar herramientas de un nivel superior, que proporcionen automatismos más allá de la monitorización y nos permitan obtener resultados interpretables y útiles directamente para la mejora de las prestaciones de las aplicaciones. La arquitectura propuesta, mediante diferentes fases de monitorización, detección de problemas, clasificación según su relevancia, análisis de sus causas, y la emisión de sugerencias sobre actuaciones nos permite minimizar y/o hacer desaparecer las ineficiencias causadas por los problemas de prestaciones aparecidos durante la ejecución de las aplicaciones. Entre los objetivos de la arquitectura propuesta, se encuentran: a) La especificación del conocimiento de prestaciones, mediante la introducción de conocimiento en forma de estructura de problemas, y del análisis de sus causas, de forma que permita ampliar el conocimiento que en cada momento pueda disponer la herramienta. b) Independencia de los mecanismos de detección de los problemas concretos definidos. c) Independencia del sistema base de paso de mensajes utilizado. d) Relación de los problemas con el código fuente de la aplicación, para establecer que puntos están relacionados con los problemas. e) La emisión de sugerencias útiles de cara al usuario final para proporcionar actuaciones directas sobre el código de la aplicación para mejorar sus prestaciones. Los resultados experimentales obtenidos sobre un prototipo de herramienta basada en la arquitectura propuesta, demuestran la viabilidad de las de las propuestas formuladas en esta tesis. La herramienta ha sido probada con un amplio conjunto de aplicaciones paralelas y distribuidas para demostrar esta viabilidad, comprobando que la metodología es eficaz, fiable y beneficiosa y que puede ser usada para mejoras reales del rendimiento de las aplicaciones.