Model driven root cause analysis and reliability enhancement for large distributed computing systems

Over last years the number of Big Data, supercomputing, Internet of Things (IoT) or edge systems has snowballed. The core part of many areas and services in academia and business, are large, distributed, and complex IT systems. Any failure or performance degradation occurring in these systems causes negative effects, e.g., decreased user experience, raised operational costs. As the response, IT operators resolve failures, issues, and unexpected events. Operators are aided with tools for monitoring, diagnostics, and root cause analysis (RCA). They perform actions to recover a system to its normal state. However, the characteristics of the future IT systems makes the diagnostics and root cause analysis complicated. Thus, even the most skillful operators have problems to satisfy QoS constraints. In this thesis, we would like to aid operator work and in the long-term substitute them in the RCA. We contribute for environments as mentioned earlier in two areas: diagnostics, RCA, root cause classification; prevention of failures. We focus on areas such as scalability, dynamism, lack of knowledge on system failures, predictability, and prevention of failures. We use different IT environments for diversification of the use cases. Firstly, we propose a fast RCA system based on probabilistic reasoning. The system can diagnose networks of devices with millions of nodes in a diagnostic model and solves the problem of scalability of RCA. We create diagnostic models based on Bayesian networks. Then, we transform them into a more efficient structure for runtime use that are Arithmetic Circuits. Thanks to the proposed optimization in this transformation and cache-based mechanism, the solution achieves great performance. Also, we propose actor-based RCA. This method is based on distributing diagnostic calculations through the devices and use of self-diagnostics paradigm. Thanks to this solution, results of partial diagnosis are known even when the connectivity with a part of the diagnosed system is lost. We show that the contribution works well in a simulated IoT system with high dynamism in its structure. Secondly, we focus on the aspect of knowledge integration and partial knowledge of a diagnosed system. The path to NoOps involves precise, reliable and fast diagnostics and also reusing as much knowledge as possible after the system is reconfigured or changed. We propose a weighted graph framework which can transfer knowledge and perform high-quality diagnostics of IT systems. We encode all possible data in a graph representation of a system state and automatically calculate weights of these graphs. Then, thanks to the similarity evaluation, we transfer knowledge about failures from one system to another and use it for diagnostics. We successfully evaluate the proposed approach on Big Data cluster and a cloud system of containers running: Spark, Hadoop, Kafka and Cassandra systems. Thirdly, we focus on the predictability of a supercomputing environment and prevention of failures. Failed jobs in a supercomputer cause waste in, e.g., CPU time, energy. Mining data collected during the operation of data centers helps to find patterns explaining failures and can be used to predict them. Automating system reactions, e.g., early termination of jobs, when software failures are predicted does not only increase availability and reduce operating cost, but it also frees people’s time. We explore a unique dataset containing the topology, operation metrics, and job scheduler history from the petascale Mistral supercomputer. We extract the most relevant system features deciding on the final state of a job through decision trees. Then, we propose actions to prevent failures. We create a model to predict job evolution based on power time series of nodes. Finally, we evaluate the effect on CPU time saving for static and dynamic job termination policies. We finish the thesis with a discussion on the contributions and state directions for future work. En los últimos años, la cantidad de Big Data, supercomputación, dispositivos IoT o sistemas edge se ha disparado. Grandes sistemas distribuidos y complejos de tecnología de la información (TI) forman la parte central de muchas áreas y servicios en el mundo académico y la industria. Cualquier falla o degradación del rendimiento que ocurra en estos sistemas puede acarrear importantes efectos adversos. Como respuesta, los operadores de TI se encargan de resolver fallas, problemas y eventos inesperados. Sin embargo, las características de los sistemas de TI emergentes y futuros dificultan y complican el diagnóstico y el análisis de causa raíz (RCA). Incluso los operadores más hábiles tienen problemas para lidiar con estos sistemas para satisfacer los niveles de calidad de servicio esperados y ofrecer una experiencia de usuario impecable. En esta tesis, nos gustaría ayudar al trabajo del operador y, a largo plazo, sustituirlo por un sistema automatizado de RCA. En ese sentido contribuimos en dos áreas: el diagnóstico, clasificación, y prevención de fallas. En particular, nos enfocamos en áreas tales como escalabilidad, dinamismo, falta de conocimiento sobre fallas del sistema, previsibilidad y prevención de fallas. Para cada uno de estos aspectos, utilizamos un entorno de TI diferente. En primer lugar, proponemos un sistema rápido de RCA basado en razonamiento probabilístico. El sistema puede diagnosticar redes de dispositivos con millones de nodos en un modelo de diagnóstico y resuelve el problema de la escalabilidad del RCA. Creamos modelos de diagnóstico basados en redes Bayesianas. Gracias a la optimización propuesta en este redes, la solución funciona mejor que las técnicas más avanzadas en términos de consumo de memoria y tiempo. Además, proponemos un RCA basado en actores. Este método se basa en la distribución de cálculos de diagnóstico a través de los dispositivos y el uso del paradigma de autodiagnóstico. Mostramos que la contribución funciona bien en un sistema IoT simulado con un alto dinamismo en su estructura. En segundo lugar, nos centramos en el aspecto de la integración del conocimiento y el conocimiento parcial de un sistema diagnosticado. El camino hacia NoOps implica la reutilización del mayor conocimiento posible después de que el sistema se reconfigure o cambie. Proponemos una aproximación basada en grafos con pesos que puede transferir conocimiento entre sistemas diferentes y realizar diagnósticos de alta calidad de los sistemas de TI. Codificamos todos los datos posibles en un grafo de un estado del sistema. Luego, gracias a una función de similitud entre grafos, transferimos el conocimiento sobre fallas de un sistema a otro y lo usamos para el diagnóstico. Evaluamos con éxito el enfoque propuesto en los sistemas Spark, Hadoop, Kafka y Cassandra. Para este propósito, usamos un clúster para Big Data y un sistema de contenedores en la nube. En tercer lugar, nos centramos en la previsibilidad de un entorno de supercomputación y la prevención de fallas. Los trabajos fallidos en una supercomputadora causan pérdidas en el, e.g., tiempo de CPU y en el consumo de energía. Los datos recopilados durante la operación de los centros de datos pueden ayudar a encontrar patrones que expliquen fallas y pueden usarse para predecirlos. Exploramos un conjunto de datos único que contiene la topología, las métricas de operación y el historial del planificador de tareas del superordenador Mistral. Extraemos las características más relevantes del sistema para decidir sobre el estado final de un trabajo a través de árboles de decisión. Proponemos acciones para evitar fallas. Creamos un modelo para predecir la evolución del trabajo basado en la serie temporal de potencia de los nodos. Finalmente, evaluamos el efecto sobre el ahorro de tiempo de la CPU para las diferentes políticas de terminació. Terminamos la tesis con una breve discusión sobre las contribuciones de esta tesis y consideraciones de posible trabajo futuro.