stringtranslate.com

Puntos de control de aplicaciones

Los puntos de control son una técnica que proporciona tolerancia a fallas para los sistemas informáticos . Básicamente consiste en guardar una instantánea del estado de la aplicación , para que las aplicaciones puedan reiniciarse desde ese punto en caso de fallo . Esto es particularmente importante para aplicaciones de larga duración que se ejecutan en sistemas informáticos propensos a fallas.

Puntos de control en sistemas distribuidos

En el entorno informático distribuido , los puntos de control son una técnica que ayuda a tolerar fallos que, de otro modo, obligarían a una aplicación de larga ejecución a reiniciarse desde el principio. La forma más básica de implementar puntos de control es detener la aplicación, copiar todos los datos necesarios de la memoria a un almacenamiento confiable (por ejemplo, un sistema de archivos paralelo ) y luego continuar con la ejecución. [1] En caso de falla, cuando la aplicación se reinicia, no es necesario comenzar desde cero. Más bien, leerá el último estado ("el punto de control") del almacenamiento estable y lo ejecutará desde allí. Si bien existe un debate en curso sobre si los puntos de control son la carga de trabajo de E/S dominante en los sistemas informáticos distribuidos, existe un consenso general de que los puntos de control son una de las principales cargas de trabajo de E/S. [2] [3]

Hay dos enfoques principales para los puntos de control en los sistemas informáticos distribuidos: puntos de control coordinados y puntos de control no coordinados. En el enfoque de puntos de control coordinados, los procesos deben garantizar que sus puntos de control sean consistentes. Esto generalmente se logra mediante algún tipo de algoritmo de protocolo de confirmación de dos fases . En los puntos de control no coordinados, cada proceso marca su propio estado de forma independiente. Cabe destacar que simplemente obligar a los procesos a controlar su estado en intervalos de tiempo fijos no es suficiente para garantizar la coherencia global. La necesidad de establecer un estado coherente (es decir, que no falten mensajes o que no haya mensajes duplicados) puede obligar a otros procesos a retroceder a sus puntos de control, lo que a su vez puede hacer que otros procesos retrocedan a puntos de control incluso anteriores, lo que en el caso más extremo puede significa que el único estado consistente encontrado es el estado inicial (el llamado efecto dominó ). [4] [5]

Implementaciones para aplicaciones.

Guardar Estado

Uno de los medios originales y ahora más comunes de control de aplicaciones era una función de "guardar estado" en aplicaciones interactivas, en la que el usuario de la aplicación podía guardar el estado de todas las variables y otros datos en un medio de almacenamiento en el momento en que estaban usando y continúe trabajando, o salga de la aplicación y, más tarde, reiníciela y restaure el estado guardado. Esto se implementó mediante un comando "guardar" o una opción de menú en la aplicación. En muchos casos, se convirtió en una práctica estándar preguntar al usuario si tenía trabajo no guardado al salir de la aplicación si quería guardar su trabajo antes de hacerlo.

Este tipo de funcionalidad se volvió extremadamente importante para la usabilidad en aplicaciones donde el trabajo particular no se podía completar de una sola vez (como jugar un videojuego que se espera que lleve docenas de horas, o escribir un libro o un documento extenso de cientos o miles de páginas). ) o cuando el trabajo se realizó durante un largo período de tiempo, como la entrada de datos en un documento, como filas en una hoja de cálculo.

El problema con el estado de guardado es que requiere que el operador de un programa solicite el guardado. Para los programas no interactivos, incluidas las cargas de trabajo automatizadas o procesadas por lotes, la capacidad de controlar dichas aplicaciones también tenía que automatizarse.

Punto de control/reinicio

A medida que las aplicaciones por lotes comenzaron a manejar decenas a cientos de miles de transacciones, donde cada transacción podía procesar un registro de un archivo en varios archivos diferentes, surgió la necesidad de que la aplicación se pudiera reiniciar en algún momento sin necesidad de volver a ejecutar todo el trabajo desde cero. se volvió imperativo. Así nació la capacidad de "punto de control/reinicio", en la que después de procesar una serie de 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 el último lugar en el archivo de transacciones donde la transacción se había completado con éxito. La aplicación podría entonces reiniciarse en ese punto.

Los puntos de control tienden a ser costosos, por lo que generalmente no se realizaban con todos los registros, sino con algún compromiso razonable entre el costo de un punto de control y el valor del tiempo de computadora necesario para reprocesar un lote de registros. Por lo tanto, el número de registros procesados ​​para cada punto de control puede oscilar entre 25 y 200, dependiendo de los factores de costo, la complejidad relativa de la aplicación y los recursos necesarios para reiniciar con éxito la aplicación.

Interfaz de tolerancia a fallos (FTI)

FTI es una biblioteca que tiene como objetivo proporcionar a los científicos computacionales una manera fácil de realizar puntos de control/reinicio de forma escalable. [6] FTI aprovecha el almacenamiento local además de múltiples técnicas de replicación y borrado para proporcionar varios niveles de confiabilidad y rendimiento. FTI proporciona puntos de control a nivel de aplicación que permiten a los usuarios seleccionar qué datos deben protegerse para 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 y/o nombres de directorios. Todos los metadatos son gestionados por FTI de forma transparente para el usuario. Si lo desean, los usuarios pueden dedicar un proceso por nodo para superponer la carga de trabajo de tolerancia a fallas y el cálculo científico, de modo que las tareas posteriores al punto de control se ejecuten de forma asincrónica.

Punto de control/reinicio del laboratorio de 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 sólida y de calidad de producción que controle una amplia gama de aplicaciones, sin necesidad de realizar cambios en el código de la aplicación. [7] BLCR se centra en el control de aplicaciones paralelas que se comunican a través de MPI y en la compatibilidad con el paquete de software producido por SciDAC Scalable Systems Software ISIC. Su trabajo se divide en 4 áreas principales: Checkpoint/Restart para Linux (CR), Bibliotecas MPI Checkpointable, Interfaz de gestión de recursos para Checkpoint/Restart y Desarrollo de interfaces de gestión de procesos.

DMTCP

DMTCP (Distributed MultiThreaded Checkpointing) es una herramienta para verificar de forma transparente el estado de un grupo arbitrario de programas distribuidos en muchas máquinas y conectados mediante sockets. [8] No modifica el programa del usuario ni el sistema operativo. Entre las aplicaciones admitidas por DMTCP se encuentran Open MPI , Python , Perl y muchos lenguajes de programación y lenguajes de scripting de shell. Con el uso de TightVNC, también puede controlar y reiniciar aplicaciones X Window, siempre y cuando no utilicen extensiones (por ejemplo, sin OpenGL o vídeo). Entre las características de Linux admitidas por DMTCP se encuentran descriptores de archivos abiertos , tuberías, sockets, manejadores de señales, virtualización de ID de proceso e ID de subproceso (garantice que los pids y tids antiguos continúen funcionando al reiniciar), ptys, fifos, ID de grupo de procesos, ID de sesión, terminal. atributos y mmap /mprotect (incluida la memoria compartida basada en mmap). DMTCP admite la API OFED para InfiniBand de forma experimental. [9]

Puntos de control colaborativos

Algunos protocolos recientes realizan puntos de control colaborativos almacenando fragmentos del punto de control en nodos cercanos. [10] Esto es útil porque evita el costo de almacenamiento en un sistema de archivos paralelo (que a menudo se convierte en un cuello de botella para sistemas de gran escala) y utiliza un almacenamiento más cercano. [ cita necesaria ] Esto ha encontrado uso particularmente en grupos de supercomputación a gran escala. El desafío es garantizar que cuando se necesite el punto de control al recuperarse de una falla, los nodos cercanos con fragmentos de los puntos de control estén disponibles. [ cita necesaria ]

Estibador

Docker y la tecnología subyacente contienen un punto de control y un mecanismo de restauración. [11]

CRIU

CRIU es una biblioteca de puntos de control del espacio de usuario.

Implementación para dispositivos embebidos 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 frecuentemente detecta la energía disponible en el sistema y decide si verificar el programa debido a una pérdida de energía inminente o continuar con el cálculo. Si se realizan puntos de control, los datos se almacenarán 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 . Mementos lleva el nombre de Memento de Christopher Nolan . [12]

idético

Idetic es un conjunto de herramientas automáticas que ayuda a los desarrolladores de circuitos integrados de aplicaciones específicas (ASIC) a incorporar automáticamente puntos de control en sus diseños. Se dirige a herramientas de síntesis de alto nivel y agrega puntos de control en el nivel de transferencia de registro ( código Verilog ). Utiliza un enfoque de programación dinámica para localizar puntos generales bajos en la máquina de estado del diseño. Dado que los puntos de control a nivel de hardware implican enviar los datos de los registros dependientes a una memoria no volátil, se requiere que los puntos óptimos tengan un número mínimo de registros para almacenar. Idetic se implementa y evalúa en un dispositivo de etiqueta RFID de recolección de energía . [13]

Ver también

Referencias

  1. ^ Plank, JS, Beck, M., Kingsley, G. y Li, K. (1994). Libckpt: Puntos de control transparentes en Unix. Departamento de Informática.
  2. ^ Wang, Teng; Snyder, Shane; Lockwood, Glenn; Carns, Felipe; Wright, Nicolás; Byna, Suren (septiembre de 2018). "IOMiner: marco de análisis a gran escala para adquirir conocimientos a partir de registros de E/S". Conferencia internacional IEEE 2018 sobre informática en clústeres (CLUSTER) . IEEE. págs. 466–476. doi :10.1109/CLUSTER.2018.00062. ISBN 978-1-5386-8319-4. S2CID  53235850.
  3. ^ "Caracterización comparativa de la carga de trabajo de E/S de dos registros de clústeres de almacenamiento de clase líder" (PDF) . ACM. Noviembre de 2015.
  4. ^ Bouteiller, B., Lemarinier, P., Krawezik, K. y Capello, F. (diciembre de 2003). Punto de control coordinado versus registro de mensajes para MPI tolerante a fallas. En Cluster Computing, 2003. Actas. Conferencia internacional IEEE de 2003 sobre (págs. 242-250). IEEE.
  5. ^ Elnozahy, EN, Alvisi, L., Wang, YM y Johnson, DB (2002). Un estudio de los protocolos de reversión y recuperación en sistemas de paso de mensajes. Encuestas de informática ACM, 34(3), 375-408.
  6. ^ Bautista-Gomez, L., Tsuboi, S., Komatitsch, D., Cappello, F., Maruyama, N. y Matsuoka, S. (noviembre de 2011). FTI: interfaz de tolerancia a fallos de alto rendimiento para sistemas híbridos. En actas de la Conferencia internacional de 2011 sobre informática, redes, almacenamiento y análisis de alto rendimiento (p. 32). ACM.
  7. ^ Hargrove, PH y Duell, JC (septiembre de 2006). Punto de control/reinicio del laboratorio de Berkeley (blcr) para clústeres de Linux. En Journal of Physics: Serie de conferencias (Vol. 46, No. 1, p. 494). Publicación PIO.
  8. ^ Ansel, J., Arya, K. y Cooperman, G. (mayo de 2009). DMTCP: puntos de control transparentes para los cálculos del clúster y el escritorio. En Parallel & Distributed Processing, 2009. IPDPS 2009. Simposio internacional IEEE sobre (págs. 1-12). IEEE.
  9. ^ "GitHub - DMTCP/DMTCP: DMTCP: CheckPointing multiproceso distribuido". GitHub . 2019-07-11.
  10. ^ Walters, JP; Chaudhary, V. (1 de julio de 2009). "Tolerancia a fallos basada en replicación para aplicaciones MPI". Transacciones IEEE en sistemas distribuidos y paralelos . 20 (7): 997–1010. CiteSeerX 10.1.1.921.6773 . doi :10.1109/TPDS.2008.172. ISSN  1045-9219. S2CID  2086958. 
  11. ^ "Docker-CRIU".
  12. ^ Benjamin Ransford, Jacob Sorber y Kevin Fu. 2011. Mementos: soporte del sistema para computación de larga duración en dispositivos a escala RFID. Avisos ACM SIGPLAN 47, 4 (marzo de 2011), 159-170. DOI=10.1145/2248487.1950386 http://doi.acm.org/10.1145/2248487.1950386
  13. ^ Mirhoseini, A.; Songhori, EM; Koushanfar, F., "Idetic: Un enfoque de síntesis de alto nivel para permitir cálculos prolongados en ASIC con alimentación transitoria", Pervasive Computing and Communications (PerCom), Conferencia internacional IEEE de 2013 sobre, vol., no., págs.216,224, 18 –22 de marzo de 2013 URL: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6526735&isnumber=6526701

Otras lecturas

enlaces externos