si hay una mejor pila para preguntar esto, házmelo saber.
Tengo una simulación que tarda de 3 a 4 días en ejecutarse . Quiero ejecutar muchos de estos, con diferentes parámetros definidos en archivos de texto en máquinas Linux remotas a través de ssh (lo más probable). Ya he estado haciendo esto a través de una combinación de bash, python, ssh y screen. Mis scripts envían (o transmiten muchos conjuntos de) los archivos de entrada a un directorio en máquinas remotas e inician la simulación en una pantalla separada. Tengo una secuencia de comandos que comprueba si la simulación ha finalizado y, cuando lo ha hecho, tengo otra secuencia de comandos que procesa los resultados de forma remota y luego los recopila.
Actualmente, tengo algunos problemas. Algunas de las máquinas remotas son computadoras de laboratorio, lo que significa que, aunque se supone que no deben apagarse, inevitablemente se apagan de vez en cuando. La simulación escribe las salidas cada 10 pasos de tiempo , por lo que no hay una gran pérdida de trabajo, pero la simulación debe reiniciarse una vez que se vuelve a encender la computadora. A veces, la simulación falla, el último paso de tiempo registrado debe eliminarse y la simulación se reinicia manualmente. En una nota relacionada, puedo consultar las máquinas remotas con un script para ver si la simulación finalizó correctamente, pero no sé cómo verificar si la simulación se está ejecutando o esperando reiniciarse sin usar ssh y top.
Me gustaría hacer este proceso más sofisticado y simplificado. El modelo en sí fue desarrollado por otra persona (es un modelo OpenFoam CFD si eso marca la diferencia) y lo he heredado para poder usarlo para el trabajo de metamodelado y optimización y no está en mi campo de experiencia profundizar realmente en el modelo mucho yo mismo.
Idealmente, me gustaría crear un tablero o CLI que pueda usar para administrar estas simulaciones de manera robusta, remota y sencilla. Me gustaría usar Python si es posible, porque me sentiría más cómodo con eso, y también estoy muy contento con bash , aunque mi trabajo en bash es mucho más complicado.
Estoy buscando patrones de diseño o herramientas que me permitan consultar el grupo de máquinas que tengo de manera programática , verificar el estado de mis simulaciones de manera programática y luego programar el comportamiento en función de esos estados.
Por ejemplo: cuando una computadora se apaga con una de mis simulaciones en ejecución, normalmente no me doy cuenta hasta que busco los resultados; de lo contrario, el proceso lleva bastante tiempo, por lo que hay mucho tiempo de cómputo perdido. ¿Hay una herramienta bash o fabric o paramiko me permiten recibir una notificación cuando se apaga una máquina? ¿Es una tontería configurar una tarea en una máquina que sé que no se apagará y que consultará continuamente cada una de mis máquinas para verificar si todavía están encendidas?
Si esto no parece factible, ¿merece la pena pasarse a la nube? Primero, mi preocupación es que esto me costará (no creo que tenga un presupuesto para esto) y que será una gran molestia configurar el entorno adecuado, pero ¿me equivoco? No es algo con lo que esté familiarizado.
TL: DR Quiero poder consultar mediante programación el estado y reiniciar simulaciones en máquinas remotas a través de ssh.
Sugiero mirar esto. No lo he usado yo mismo, pero lo haré la próxima vez que necesite hacer cosas como esta:
RQ (Redis Queue) es una biblioteca de Python simple para poner en cola trabajos y procesarlos en segundo plano con los trabajadores. Está respaldado por Redis y está diseñado para tener una barrera de entrada baja. Se puede integrar fácilmente en su pila web.
Una pista: dices que las simulaciones tardan entre 3 y 4 días en ejecutarse. Intentaría cortar esto en pedazos pequeños. ¿Hay alguna manera de hacer un procesamiento paralelo? Esto tiene muchos beneficios:
No soy un experto en esto, pero sospecho que Grid Computing es el término técnico para sus necesidades.
Una de las primeras herramientas de este tipo fue Xgrid de Apple, basada en Zilla de Next, Inc. Ahora descontinuada.
HTCondor parece ser una solución que podría funcionar para usted. Es un proyecto de código abierto de larga duración en una universidad. Se ejecuta en Linux y otros sistemas operativos.
Oracle Grid Engine es otro proyecto de este tipo. Bifurcado en varios proyectos relacionados.
Wikipedia tiene esta lista de proyectos de computación Grid .
magunra
Ogaday
ps
podría ser una utilidad de línea de comandos útil. Este enlace parece bastante útil para desarrollar: anyexample.com/linux_bsd/bash/…Deshacer
Ogaday
Ogaday
Deshacer
steve barnes
Ogaday