Diego Miguel Montezanti
El manejo de fallos es una preocupación creciente en el contexto del HPC; en el futuro, se esperan mayores variedades y tasas de errores, intervalos de detección más largos y fallos silenciosos. Se proyecta que, en los próximos sistemas de exa-escala, los errores ocurran incluso varias veces al día y se propaguen en grandes aplicaciones paralelas, generando desde caídas de procesos hasta corrupciones de resultados debidas a fallos no detectados.
En este trabajo se propone SEDAR, una metodología que mejora la fiabilidad, frente a los fallos transitorios, de un sistema que ejecuta aplicaciones paralelas de paso de mensajes.
La solución diseñada, basada en replicación de procesos para la detección, combinada con diferentes niveles de checkpointing (checkpoints de nivel de sistema o de nivel de aplicación) para recuperar automáticamente, tiene el objetivo de ayudar a los usuarios de aplicaciones científicas a obtener ejecuciones confiables con resultados correctos. La detección se logra replicando internamente cada proceso de la aplicación en threads y monitorizando los contenidos de los mensajes entre los threads antes de enviar a otro proceso; además, los resultados finales se validan para prevenir la corrupción del cómputo local. Esta estrategia permite relanzar la ejecución desde el comienzo ni bien se produce la detección, sin esperar innecesariamente hasta la conclusión incorrecta. Para la recuperación, se utilizan checkpoints de nivel de sistema, pero debido a que no existe garantía de que un checkpoint particular no contenga errores silenciosos latentes, se requiere el almacenamiento y mantenimiento de múltiples checkpoints, y se implementa un mecanismo para reintentar recuperaciones sucesivas desde checkpoints previos si el mismo error se detecta nuevamente. La última opción es utilizar un único checkpoint de capa de aplicación, que puede ser verificado para asegurar su validez como punto de recuperación seguro. En consecuencia, SEDAR se estructura en tres niveles: (1) sólo detección y parada segura con notificación al usuario; (2) recuperación basada en una cadena de checkpoints de nivel de sistema; y (3) recuperación basada en un único checkpoint válido de capa de aplicación. Cada una de estas variantes brinda una cobertura particular, pero tiene limitaciones inherentes y costos propios de implementación; la posibilidad de elegir entre ellos provee flexibilidad para adaptar la relación costo-beneficio a las necesidades de un sistema particular. Se presenta una descripción completa de la metodología, su comportamiento en presencia de fallos y los overheads temporales de emplear cada una de las alternativas. Se describe un modelo que considera varios escenarios de fallos y sus efectos predecibles sobre una aplicación de prueba para realizar una verificación funcional.
Además, se lleva a cabo una validación experimental sobre una implementación real de la herramienta SEDAR, utilizando diferentes benchmarks con patrones de comunicación disímiles. El comportamiento en presencia de fallos, inyectados controladamente en distintos momentos de la ejecución, permite evaluar el desempeño y caracterizar el overhead asociado a su utilización. Tomando en cuenta esto, también se establecen las condiciones bajo las cuales vale la pena comenzar con la protección y almacenar varios checkpoints para recuperar, en lugar de simplemente detectar, detener la ejecución y relanzar. Las posibilidades de configurar el modo de uso, adaptándolo a los requerimientos de cobertura y máximo overhead permitido de un sistema particular, muestran que SEDAR es una metodología eficaz y viable para la tolerancia a fallos transitorios en entornos de HPC.
Handling faults is a growing concern in the context of HPC; higher error rates and varieties, larger detection intervals, and silent faults are expected in the future. It is projected that, in upcoming exascale systems, errors will occur even several times a day and propagate across large parallel applications, increasing the occurrence of problems that will range from process crashes to corrupted results because of undetected errors. In this work, we propose SEDAR, a methodology that improves system reliability against transient faults, when running parallel message-passing applications. The designed solution, based on process replication for detection, combined with different levels of checkpointing (i.e. system-level or user-level checkpoints) for automatic recovery, has the goal of helping users of scientific applications to achieve reliable executions with correct results. Detection is achieved by internally replicating each process of the application in threads and monitoring the contents of messages between threads before sending to another process; additionally, the final results are validated to prevent the corruption of the local computation. This strategy allows relaunching execution from the beginning upon detection, without unnecessarily waiting to an incorrect conclusion. To accomplish recovery, system-level checkpoints are used, but because there is no guarantee that a particular checkpoint does not contain silent latent corruption, multiple checkpoints need to be stored and maintained, and a mechanism is implemented for successively retry recovery from previous checkpoints if the same error is detected again. The last option is to use a single, custom user-level checkpoint, which can be verified to ensure its validity as a safe recovery point. Consequently, SEDAR is structured in three levels: (1) only detection and safe-stop with notification to the user; (2) recovery based on a chain of system-level checkpoints; and (3) recovery based on a single valid user-level checkpoint. Each of these variants supplies a particular coverage, but has inherent limitations and its own implementation costs; the possibility of choosing between them provides flexibility to adapt the cost-benefit relation to the needs of a particular system. This work includes a full description of the methodology, its behavior in the presence of faults and the temporal overheads of employing each option. A model is described, which considers various scenarios of faults and their predictable effects over a test application in order to perform a functional verification. Additionally, an experimental validation is made across a real implementation of SEDAR tool, using different benchmarks involving unalike communication patterns. The behavior in the presence of faults, injected in a controlled manner in different moments during the execution, allows evaluating and characterizing the introduced overhead. Considering this, the conditions under which it is worth starting protection and storing several checkpoints for recovery, instead of simply detecting, stopping and relaunching, are stated. The possibility of configuring the mode of use, adapting to the coverage and maximum overhead requirements of a particular system, show the efficacy and viability of SEDAR to tolerate transient faults in target HPC environments.
© 2008-2025 Fundación Dialnet · Todos los derechos reservados