El punto de control es una técnica que proporciona tolerancia a fallos a los sistemas informáticos . Consiste en guardar una instantánea del estado de una aplicación para que pueda reiniciarse desde ese punto en caso de fallo . Esto es especialmente importante para aplicaciones de larga duración que se ejecutan en sistemas informáticos propensos a fallos.
Puntos de control en sistemas distribuidos
En el entorno de computación distribuida , el punto de control es una técnica que ayuda a tolerar fallos que, de otro modo, obligarían a una aplicación de larga duración a reiniciarse desde el principio. La forma más básica de implementar el punto de control es detener la aplicación, copiar todos los datos necesarios de la memoria a un almacenamiento fiable (por ejemplo, un sistema de archivos paralelo ) y, a continuación, continuar con la ejecución. [ 1 ] En caso de fallo, cuando la aplicación se reinicia, no necesita empezar desde cero. En su lugar, leerá el último estado ("el punto de control") del almacenamiento estable y se ejecutará desde ese punto. Aunque existe un debate en curso sobre si el punto de control es la carga de trabajo de E/S dominante en los sistemas de computación distribuida, el consenso general es que es una de las principales cargas de trabajo de E/S. [ 2 ] [ 3 ]
Existen dos enfoques principales para el establecimiento de puntos de control en sistemas de computación distribuida: el establecimiento de puntos de control coordinado y el establecimiento de puntos de control no coordinado. En el enfoque de establecimiento de puntos de control coordinado, los procesos deben garantizar la consistencia de sus puntos de control. Esto se suele lograr mediante algún algoritmo de protocolo de confirmación en dos fases . En el establecimiento de puntos de control no coordinado, cada proceso establece un punto de control de su propio estado de forma independiente. Cabe destacar que obligar a los procesos a establecer puntos de control de su estado a intervalos de tiempo fijos no es suficiente para garantizar la consistencia global. La necesidad de establecer un estado consistente (es decir, sin mensajes faltantes ni duplicados) puede obligar a otros procesos a revertir a sus puntos de control, lo que a su vez puede provocar que otros procesos reviertan a puntos de control aún anteriores, lo que, en el caso más extremo, puede significar que el único estado consistente encontrado sea el estado inicial (el llamado efecto dominó ). [ 4 ] [ 5 ]
Implementaciones para aplicaciones
Guardar estado
Uno de los métodos originales y ahora más comunes para guardar el estado de una aplicación era la función de "guardar estado" en las aplicaciones interactivas. Esta función permitía al usuario guardar el estado de todas las variables y otros datos, y continuar trabajando o salir de la aplicación, reiniciarla y restaurar el estado guardado posteriormente. Esto se implementaba mediante un comando o una opción de menú llamada "guardar". En muchos casos, se convirtió en práctica habitual preguntar al usuario, si tenía trabajo sin guardar al salir de la aplicación, si deseaba guardar su trabajo antes de hacerlo.
Esta funcionalidad se volvió extremadamente importante para la usabilidad en aplicaciones en las que una tarea en particular no se podía completar de una sola vez (como jugar un videojuego que se esperaba que durara decenas de horas) o en las que el trabajo se realizaba durante un período prolongado (como la introducción de datos en un documento, por ejemplo, filas en una hoja de cálculo).
El problema con el guardado de estado es que requiere que el operador del programa solicite el guardado. Para programas no interactivos, incluidas las cargas de trabajo automatizadas o procesadas por lotes, la capacidad de crear puntos de control en dichas aplicaciones también debía automatizarse.
Punto de control/Reinicio
A medida que las aplicaciones por lotes comenzaron a manejar decenas o cientos de miles de transacciones, donde cada transacción podía procesar un registro de un archivo comparándolo con varios archivos diferentes, se hizo imperativo que la aplicación pudiera reiniciarse en algún punto sin tener que volver a ejecutar todo el trabajo desde cero. Así nació la función de "punto de control/reinicio", mediante la cual, después de procesar varias transacciones, se podía tomar una "instantánea" o "punto de control" del estado de la aplicación. Si la aplicación fallaba antes del siguiente punto de control, se podía reiniciar proporcionándole la información del punto de control y la última ubicación en el archivo de transacciones donde se había completado correctamente una transacción. La aplicación podía entonces reiniciarse en ese punto. [ 6 ]
El restablecimiento de registros suele ser costoso, por lo que generalmente no se realizaba con cada registro, sino que se buscaba un equilibrio razonable entre el costo del restablecimiento y el tiempo de procesamiento necesario para reprocesar un lote de registros. Por lo tanto, la cantidad de registros procesados en cada restablecimiento podía variar entre 25 y 200, dependiendo de factores de costo, la complejidad relativa de la aplicación y los recursos necesarios para reiniciarla correctamente.
Interfaz de tolerancia a fallos (FTI)
FTI es una biblioteca que tiene como objetivo proporcionar a los científicos computacionales una manera sencilla de realizar puntos de control/reinicio de forma escalable. [ 7 ] FTI aprovecha el almacenamiento local, junto con técnicas de replicación y borrado múltiple, para proporcionar varios niveles de fiabilidad y rendimiento. FTI proporciona puntos de control a nivel de aplicación que permiten a los usuarios seleccionar qué datos necesitan protegerse, con el fin de mejorar la eficiencia y evitar el desperdicio de espacio, tiempo y energía. Ofrece una interfaz de datos directa para que los usuarios no tengan que lidiar con archivos o nombres de directorios. FTI gestiona todos los metadatos de forma transparente para el usuario. Si se desea, los usuarios pueden dedicar un proceso por nodo para superponer la carga de trabajo de tolerancia a fallos y la computación científica, de modo que las tareas posteriores al punto de control se ejecuten de forma asíncrona.
Punto de control/reinicio del Laboratorio Berkeley (BLCR)
El Grupo de Tecnologías Futuras de los Laboratorios Nacionales Lawrence está desarrollando una implementación híbrida de kernel/usuario de punto de control/reinicio llamada BLCR. Su objetivo es proporcionar una implementación robusta y de calidad de producción que realice puntos de control en una amplia gama de aplicaciones, sin requerir cambios en el código de la aplicación. [ 8 ] BLCR se centra en el punto de control de aplicaciones paralelas que se comunican a través de MPI y en la compatibilidad con el conjunto de software producido por SciDAC Scalable Systems Software ISIC. Su trabajo se divide en 4 áreas principales: Punto de control/Reinicio para Linux (CR), Bibliotecas MPI con capacidad de punto de control, Interfaz de gestión de recursos para punto de control/reinicio y Desarrollo de interfaces de gestión de procesos.
DMTCP
DMTCP (Distributed MultiThreaded Checkpointing) es una herramienta para guardar de forma transparente el estado de un grupo arbitrario de programas distribuidos en varias máquinas y conectados mediante sockets. [ 9 ] No modifica el programa del usuario ni el sistema operativo. Entre las aplicaciones compatibles con DMTCP se encuentran Open MPI , Python , Perl y muchos lenguajes de programación y de scripting de shell. Con TightVNC, también puede guardar y reiniciar aplicaciones X Window, siempre que no utilicen extensiones (por ejemplo, sin OpenGL ni vídeo). Entre las características de Linux compatibles con DMTCP se encuentran los descriptores de archivos abiertos , las tuberías, los sockets, los manejadores de señales, la virtualización de ID de proceso e ID de hilo (para garantizar que los PID y TID antiguos sigan funcionando tras el reinicio), los PTY, las FIFO, los ID de grupo de procesos, los ID de sesión, los atributos de terminal y mmap /mprotect (incluida la memoria compartida basada en mmap). DMTCP admite la API OFED para InfiniBand de forma experimental. [ 10 ]
Puntos de control colaborativos
Algunos protocolos recientes realizan puntos de control colaborativos almacenando fragmentos del punto de control en nodos cercanos. [ 11 ] Esto resulta útil porque evita el costo de almacenar en un sistema de archivos paralelo (que suele convertirse en un cuello de botella para sistemas a gran escala) y utiliza almacenamiento más cercano. Esta técnica se ha utilizado particularmente en clústeres de supercomputación a gran escala. El desafío consiste en garantizar que, cuando se necesite el punto de control para recuperarse de un fallo, los nodos cercanos con fragmentos de los puntos de control estén disponibles.
Estibador
Docker y la tecnología subyacente contienen un mecanismo de punto de control y restauración. [ 12 ]
CRIU
CRIU es una biblioteca de puntos de control en el espacio de usuario. [ 13 ]
Implementación para dispositivos integrados y ASIC.
Recuerdos
Mementos es un sistema de software que transforma tareas de propósito general en programas interrumpibles para plataformas con interrupciones frecuentes, como cortes de energía. Fue diseñado para dispositivos integrados sin batería, como etiquetas RFID y tarjetas inteligentes, que dependen de la recolección de energía de fuentes ambientales. Mementos detecta con frecuencia la energía disponible en el sistema y decide si detener el programa debido a una pérdida de energía inminente o continuar el cálculo. Si se realiza un punto de control, los datos se almacenan en una memoria no volátil . Cuando la energía es suficiente para reiniciar , los datos se recuperan de la memoria no volátil y el programa continúa desde el estado almacenado. Mementos se ha implementado en la familia de microcontroladores MSP430 . [ 14 ]
Idético
Idetic es un conjunto de herramientas automáticas que ayuda a los desarrolladores de circuitos integrados de aplicación específica (ASIC) a incorporar automáticamente puntos de control en sus diseños. Está diseñado para herramientas de síntesis de alto nivel y añade los puntos de control a nivel de transferencia de registros ( código Verilog ). Utiliza un enfoque de programación dinámica para localizar puntos de baja sobrecarga en la máquina de estados del diseño. Dado que la creación de puntos de control a nivel de hardware implica el envío de datos de registros dependientes a una memoria no volátil, se requiere que los puntos óptimos tengan un número mínimo de registros que almacenar. Idetic se ha implementado y evaluado en un dispositivo de etiqueta RFID de recolección de energía . [ 15 ]
Véase también
- Virtualización de aplicaciones
- Cambio de contexto
- Procesar imagen
- Los estados de guardado , un concepto similar al que ofrecen los emuladores de consolas de videojuegos.
Referencias
- ↑ Gelenbe, E. (1979). Sobre el intervalo óptimo de punto de control. Journal of the ACM (JACM) 26 (2), 259-270. Gelenbe, E. (1976). Un modelo de recuperación de retroceso con múltiples puntos de control. Actas de la IEEE Computer Society, ICSE'76, 2.ª Conferencia Internacional sobre Ingeniería de Software, 251-255. Plank, JS, Beck, M., Kingsley, G., & Li, K. (1994). Libckpt: Puntos de control transparentes en Unix. Departamento de Ciencias de la Computación.
- ↑ Wang, Teng; Snyder, Shane; Lockwood, Glenn; Carns, Philip; Wright, Nicholas; Byna, Suren (septiembre de 2018). «IOMiner: Marco de análisis a gran escala para obtener conocimiento a partir de registros de E/S». Conferencia Internacional IEEE de 2018 sobre Computación en Clúster (CLUSTER) . IEEE. págs. 466–476 . doi : 10.1109/CLUSTER.2018.00062 . ISBN 978-1-5386-8319-4. S2CID 53235850 .
- ↑ "Caracterización comparativa de la carga de trabajo de E/S de dos clústeres de almacenamiento de clase líder Logs" (PDF) . ACM. Noviembre de 2015.
- ↑ Bouteiller, B., Lemarinier, P., Krawezik, K., & Capello, F. (2003, diciembre). Punto de control coordinado versus registro de mensajes para MPI tolerante a fallos. En Cluster Computing, 2003. Actas. Conferencia Internacional IEEE de 2003 sobre (págs. 242-250). IEEE.
- ↑ Elnozahy, EN, Alvisi, L., Wang, YM, & Johnson, DB (2002). Un estudio de los protocolos de recuperación por retroceso en sistemas de paso de mensajes. ACM Computing Surveys, 34(3), 375-408.
- ^ Wang, Yi-Min; Huang, Yennun; Vo, Kiem-Phong; Chung, Pi-Yu; Kintala, Chandra (6 de septiembre de 2002). «El checkpointing y sus aplicaciones» . IEEE : 31 – vía IEEE Xplore .
- ↑ Bautista-Gomez, L., Tsuboi, S., Komatitsch, D., Cappello, F., Maruyama, N., & Matsuoka, S. (2011, noviembre). FTI: interfaz de tolerancia a fallos de alto rendimiento para sistemas híbridos. En Actas de la Conferencia Internacional de 2011 sobre Computación de Alto Rendimiento, Redes, Almacenamiento y Análisis (pág. 32). ACM.
- ↑ Hargrove, PH y Duell, JC (2006, septiembre). Punto de control/reinicio del laboratorio Berkeley (blcr) para clústeres Linux. En Journal of Physics: Conference Series (Vol. 46, n.º 1, pág. 494). IOP Publishing.
- ↑ Ansel, J., Arya, K., & Cooperman, G. (2009, mayo). DMTCP: Puntos de control transparentes para cálculos en clúster y el escritorio. En Procesamiento paralelo y distribuido, 2009. IPDPS 2009. Simposio internacional IEEE sobre (págs. 1-12). IEEE.
- ↑ "GitHub - DMTCP/DMTCP: DMTCP: Puntos de control distribuidos multihilo" . GitHub . 11 de julio de 2019.
- ↑ Walters, JP; Chaudhary, V. (2009-07-01). "Tolerancia a fallos basada en replicación para aplicaciones MPI". IEEE Transactions on Parallel and Distributed Systems . 20 (7): 997– 1010. CiteSeerX 10.1.1.921.6773 . doi : 10.1109/TPDS.2008.172 . ISSN 1045-9219 . S2CID 2086958 .
- ↑ "Docker - CRIU" .
- ↑ «CRIU» . criu.org . Consultado el 15 de octubre de 2024 .
- ↑ Benjamin Ransford, Jacob Sorber y Kevin Fu. 2011. Mementos: soporte del sistema para computación de larga duración en dispositivos RFID a escala. ACM SIGPLAN Notices 47, 4 (marzo de 2011), 159-170. DOI=10.1145/2248487.1950386 http://doi.acm.org/10.1145/2248487.1950386
- ↑ Mirhoseini, A.; Songhori, EM; Koushanfar, F., "Idetic: Un enfoque de síntesis de alto nivel para habilitar cálculos largos en ASICs alimentados transitoriamente", 2013 IEEE International Conference on Pervasive Computing and Communications (PerCom), vol., no., pp.216,224, 18–22 de marzo de 2013 URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6526735&isnumber=6526701
Lecturas adicionales
- Yibei Ling, Jie Mi, Xiaola Lin: Un enfoque de cálculo variacional para la ubicación óptima de puntos de control. IEEE Trans. Computers 50(7): 699-708 (2001)
- RE Ahmed, RC Frazier y PN Marinos, "Algoritmos de recuperación de errores con retroceso asistido por caché (CARER) para sistemas multiprocesador de memoria compartida", 20.º Simposio Internacional IEEE sobre Computación Tolerante a Fallos (FTCS-20), Newcastle upon Tyne, Reino Unido, 26-28 de junio de 1990, págs. 82-88.
Enlaces externos
- LibCkpt
- FTI
- Punto de control/reinicio del Laboratorio Berkeley (BLCR)
- Sistema de puntos de control multihilo distribuido (DMTCP)
- OpenVZ
- CRIU
- Criópido2
- Sistemas informáticos tolerantes a fallos