wiki:comandos_básicos_slurm

Comandos básicos de slurm

Los comandos de slurm que usará con más asiduidad son realmente muy pocos, principalmente:

  • sinfo: Le mostrará información sobre el estado de las particiones y nodos de slurm, con una salida como esta:
    [root@admin01 etc]# sinfo
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    normal*      up   infinite      5  down* x440-[20-24]
    normal*      up   infinite     19   idle x440-[01-19]
    fat          up   infinite      1   idle x808
    
    En ella puede ver que existen dos particiones (normal y fat), que la partición normal consta de 24 nodos de los cuales 5 están caidos y 19 en estado de espera para recibir trabajos. También hay una partición llamada fat con un solo nodo en estado de espera. Si un usuario envía un trabajo que tiene 140 procesos que ocupan un solo core, y teniendo en cuenta que los nodos de la partición normal disponen de 40 cores, la salida de sinfo durante la ejecución será esta:
    [root@admin01 etc]# sinfo
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    normal*      up   infinite      5  down* x440-[20-24]
    normal*      up   infinite      1    mix x440-04
    normal*      up   infinite      3  alloc x440-[01-03]
    normal*      up   infinite     15   idle x440-[05-19]
    fat          up   infinite      1   idle x808
    
    Como se puede ver hay 3 nodos (del x440-01 al x440-03) totalmente asignados y el nodo x440-04 en estado mix que indica que aún ejecutando procesos tiene recursos libres para ejecutar más. El resto de nodos se encuentran en el mismo estado que en el ejemplo anterior.
  • sbatch: Encola un script slurm. Es el comando básico para enviar trabajos a la cola y su uso es tan simple como teclear sbatch mi_fichero.slurm, realmente las instrucciones y opciones estarán en el fichero .slurm. Si el lanzamiento es correcto, nos devuelve el identificador de nuestro trabajo que es importante para otras operaciones.
    (base) [tonin@admin01 slurm-tests]$ sbatch h7.slurm 
    Submitted batch job 5351
    
  • srun: Ejecuta trabajos de forma interactiva en el cluster sin necesidad de usar ficheros slurm. Por ejemplo en la siguiente ejecución ejecutaremos en la partición normal nuestro programa en python, el terminal quedará bloqueado hasta que termine la ejecución. Si cerráramos nuestra sesión de shell antes de que termine, el trabajo se interrumpirá.
    (base) [tonin@admin01 slurm-tests]$ srun -p normal python hello-parallel-fast.py 1
    Hello! I am a task number:  1
    Endinng task number:  1
    
    srun admite practicamente las mismas opciones que sbatcj. Entonces, ¿qué diferencia hay o que utilidad tiene? La utilidad es muy poca, básicamente para probar que un proceso de una tarea comenzará a ejecutarse bien sin fallos antes de lanzarlo, o para usarlo dentro de un sbatch para ejecutar nuestros procesos, aunque esto no es obligatorio a menos que queramos pasar algún argumento específico a determinado proceso que difiera de los especificados en el propio fichero slurm. En cualquier caso nosotros recomendamos lanzar los procesos dentro de los ficheros slurm usando el comando srun
  • scancel: Cancela un trabajo de la cola. Lógicamente un usuario normal solo puede cancelar los trabajos que haya mandado él mismo. La sintaxis es scancel job-id donde job-id es precisamente el número que nos devolvió el comando sbatch al lanzarlo previamente. La cancelación de un trabajo implica no solo que salgan de la cola de slurm aquellos procesos que no se hayan iniciado áun, sino que también termina todos los procesos en ejecución relativos a la tarea.
  • squeue: Consulta el estado de la cola de slurm. Si se invoca sin ningún argumento muestra todos los procesos de la cola. Es importante tener en cuenta que squeue muestra procesos y no trabajos, luego si un trabajo consta de 100 procesos, nos aparecerán las 100 líneas. La salida para un trabajo que conste de 10 procesos podría ser como esta:
    (base) [tonin@admin01 slurm-tests]$ squeue 
                 JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                5641_1    normal    hello    tonin  R       0:03      1 x440-01
                5641_2    normal    hello    tonin  R       0:03      1 x440-01
                5641_3    normal    hello    tonin  R       0:03      1 x440-01
                5641_4    normal    hello    tonin  R       0:03      1 x440-01
                5641_5    normal    hello    tonin  R       0:03      1 x440-01
                5641_6    normal    hello    tonin  R       0:03      1 x440-01
                5641_7    normal    hello    tonin  R       0:03      1 x440-01
                5641_8    normal    hello    tonin  R       0:03      1 x440-01
                5641_9    normal    hello    tonin  R       0:03      1 x440-01
               5641_10    normal    hello    tonin  R       0:03      1 x440-01
    
    Si se quiere consultar la cola y que nos de solamente los procesos de un usuario, por ejemplo el nuestro, usamos el argumento -u, por ejemplo:
    squeue -u miusuario
    
  • sacct: Aunque es un comando de accounting que explicamos en otro sitio, su invocación sin ningún argumento es algo habitual para mostrar de una forma rápida el estado actual y previo de los trabajos de slurm, permitiéndonos ver los que están en ejecución y los que se han completado.
Last modified 2 years ago Last modified on May 9, 2023, 12:22:54 PM