Software de programación de trabajos

Estoy buscando un software para mejorar mi flujo de trabajo cuando ejecuto experimentos computacionales (numéricos).

Después de ver cómo se hacen las cosas en el mundo de las supercomputadoras, con PBS , quiero obtener algunos de los beneficios para mí.

Quiero hacer guiones de trabajo y luego dejarlos. (En lugar de mi actual, ejecutar un trabajo y verlo funcionar, como una mamá gallina, lo cual es una pérdida de tiempo). Quiero programar varios trabajos y hacer que se ejecuten cuando la capacidad de la computadora esté libre.

Básicamente tengo, digamos, 8 experimentos de computación, no puedo ejecutarlos todos a la vez ya que 2 de ellos ocupan 24 Gb de RAM, y el resto usa, digamos, 10 Gb cada uno (y mi sistema solo tiene 32 Gb de RAM). Mi trabajo actual tiene limitación de memoria, pero esperaría que cualquier software de programación de trabajos también admita tareas limitadas de CPU (/ subproceso).

Solo tengo un servidor, pero es muy sucio. No soy el único usuario, sin embargo, todos los demás usuarios solo hacen cosas simples como ejecutar clientes de chat de línea de comandos y editores de texto, la mayor parte del tiempo.

  • El sistema operativo se ejecuta en (Wheezy) Debian Linux
  • Precio: Gratis como en la cerveza. (Gratis). Estoy bien si es gratis sin fines de lucro o para uso de investigación.
  • No debe: Requerir que (/ sus trabajos) sea lo único que sucede en el servidor
  • Debería: admitir scripts de trabajos de python
  • Debería: Enviarme los resultados por correo electrónico. (Incluyendo salida estándar, etc.)
  • Debería: Ser instalable a través de un administrador de paquetes debain. Ya sea apt-get, pip o rubygems. (Esto no es un factor decisivo, pero sería muy bueno tenerlo)
  • No: requiere ningún tipo de soporte para el agrupamiento
  • No: requiere ningún tipo de GUI

Lo único que he oído hablar es TORQUE , y no conozco a nadie que lo haya usado o sepa mucho al respecto.

¿Algún problema con Cron y at , que se envían con todas las distribuciones de Linux? Si es la "falta de una GUI", entonces es una falta en su lista de requisitos :)
@Izzy: que yo sepa Cron, atson una herramienta basada en el tiempo. Es decir, le permiten programar un trabajo para ejecutar, en momentos particulares. No sé por cuánto tiempo se ejecutarán mis trabajos, o cuáles pueden ejecutarse al mismo tiempo (porque no se completan para los recursos). Podría calcular matemáticamente una estimación (tal vez), pero conozco las herramientas salidas He editado la pregunta para que sea más clara.
Si lo único que se opone a eso es que debe asegurarse de que no se superpongan, es posible que desee buscar semáforos (en términos sencillos: coloque un "archivo de bandera" al inicio del script, elimínelo al final del script y verifique para ello antes de que se procese el trabajo; opcionalmente, lanzar una advertencia cuando se encuentren "semáforos antiguos" que indiquen que un trabajo se cuelga/falla). Aparte de eso, mientras espera respuestas: la tía Google le dice a Linux simultaneidad del programador de trabajos , tal vez :)
Izzy: si voy tan lejos, también podría ir un poco más allá e implementar una programación de trabajos como un programa de python. Honestamente, probablemente sería 1 hora de trabajo. Pero TORQUE existe y es la versión de código abierto de la herramienta en la que he tenido unas horas de entrenamiento. (Sospecho que tiene demasiada potencia, ya que piensa en clústeres). Hay un hilo sobre torque en una sola computadora aquí [ ubuntuforums .org/showthread.php?t=1512061] . Si termino usándolo, responderé mi propia pregunta.

Respuestas (2)

Echa un vistazo a SLURM .

  • OS tiene un paquete Debian ( fuente )
  • Precio: nuevamente, tiene un paquete Debian
  • otras cosas pueden ejecutarse en el servidor
  • puede enviar todo (con tantos parámetros como desee) siempre que sea ejecutable
  • Correo electrónico : no sé si hay soporte directo para eso. Pero creo que eso podría ser parte del guión que envíe. Eventualmente, puede escribir un script de contenedor, que se envía a SLURM y no hace nada más que llamar al script real, recibir los resultados cuando esté listo y enviar un correo electrónico.
  • GUI : creo que hay GUI, pero nunca he usado uno, ya que uso SLURM en la universidad sobre SSH.
  • Se admite la agrupación en clústeres (estoy ejecutando el reconocimiento de voz en un clúster HPC)

Los comandos importantes son:

Eche un vistazo a Hudson o su bifurcación Jenkins (quizás más activa) . Son servidores de "Integración continua" que están destinados a controlar las compilaciones automáticas de software, pero también se pueden usar para iniciar pruebas automáticas, etc. No estoy íntimamente familiarizado con el software, pero aquí hay una descripción general:

  • SO : basado en Java/Tomcat; se ejecuta en Linux; Paquete Debian disponible
  • Precio : gratis (como en libertad y en cerveza)
  • Correo electrónico : compatible
  • GUI : interfaz web para configuración, etc.; los trabajos configurados se pueden iniciar accediendo a sus URL con wget/curl
  • ejecuta cualquier comando de shell
  • para cada host, se puede especificar el número de trabajos simultáneos permitidos; los trabajos se pondrán en cola hasta que haya un espacio disponible
  • no se molesta si se están ejecutando otras cosas en los hosts
    • AFAIK no hay verificación de carga del sistema "global", aunque
Eso es pensar fuera de la caja.