🔎 Monitoreo de Eficiencia#

Una vez que se lanza un trabajo con Slurm, este reserva los recursos solicitados independientemente de si se usan en su totalidad. Es importante revisar los trabajos completados para verificar el uso real de los recursos asignados. Si se detecta baja eficiencia, ajustar los parámetros del job permitirá optimizar el uso del clúster, reduciendo el tiempo de espera de otros usuarios.

Advertencia

Slurm contabiliza los recursos reservados, no los realmente utilizados. Esto es importante a la hora de pagar por horas de cómputo.

Trabajos finalizados#

La forma más fácil de verificar la eficiencia de jobs es utilizar la herramienta seff.

$ seff <JOB-ID>

Donde el <JOB-ID> es el ID del job que fue lanzado (si no se modifica el nombre este debería estar en el archivo de output de slurm).

Otra herramienta útil y más completa es sacct.

$ sacct -j <JOB-ID> -o <FIELD1, FIELD2, ... >

Donde FIELD1, FIELD2 es una lista separada por coma de campos requeridos. Para más información usar la flag --helpformat. Más información, consultar la man page: man sacct

Ejemplo de uso#

[ fulano@eulogia ] ~ $ seff 123456
Job ID: 123456 
Cluster: knl
User/Group: fulano/fulano
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 256
CPU Utilized: 95-04:15:55
CPU Efficiency: 23.85% of 399-01:48:48 core-walltime
Job Wall-clock time: 1-13:24:48
Memory Utilized: 90.50 GB
Memory Efficiency: 99.11% of 91.32 GB (91.32 GB/node)

[ fulano@eulogia ] ~ $ sacct -j 123456 --units=G -o JobID,Cluster,User,Group,State,ExitCode,NNodes,NCPUs,TotalCPU,Elapsed,MaxRSS,ReqMem
JobID           Cluster      User     Group      State ExitCode   NNodes      NCPUS   TotalCPU    Elapsed     MaxRSS     ReqMem 
------------ ---------- --------- --------- ---------- -------- -------- ---------- ---------- ---------- ---------- ---------- 
123456              knl    fulano    fulano  COMPLETED      0:0        1        256 95-04:15:+ 1-13:24:48                91.32G 
123456.batch        knl                      COMPLETED      0:0        1        256 95-04:15:+ 1-13:24:48     90.50G            

Interpretación de las métricas:

  • NNodes/NCPUS: Utilizó 1 nodo con 256 cores reservados

  • TotalCPU: 95-04:15 = 95 días, 4 horas y 15 minutos de tiempo de CPU consumido

  • Elapsed: 1-13:24:48 = tiempo real transcurrido (1 dia, 13 horas, 24 minutos, 48 segundos)

  • MaxRSS: 90.50G = memoria máxima utilizada

  • ReqMem: 91.32G = memoria reservada

Advertencia

Las métricas de eficiencia solo son precisas para trabajos completados. Consultar trabajos en ejecución puede mostrar valores incorrectos y llevar a conclusiones erróneas sobre el uso de recursos.

Nota

Las estadísticas para trabajos cancelados o interrumpidos por limite de tiempo pueden ser imprecisas.

Trabajos en ejecución#

Para monitorear los recursos de trabajos que están corriendo se puede usar la herramienta sstat

$ sstat -j <JOB(.STEP)> -o <FIELD1,FIELD2>

Parámetros:

  • JOB(.STEP): ID del un job o job.step específico

  • FIELD1,FIELD2,...: Lista de campos a mostrar (separados por comas, sin espacios)

  • La flag --helpformat muestra todos los campos disponibles

  • La flag --allsteps lista información de todos los job steps

Más información, consultar la man page: man sstat

Ejemplo#

[ fulano@eulogia ] ~ $ sstat -o JobID,MaxRSS,MaxVMSize,AveCPU,MaxDiskRead,MaxDiskWrite --allsteps -j 987654
JobID            MaxRSS  MaxVMSize     AveCPU  MaxDiskRead MaxDiskWrite 
------------ ---------- ---------- ---------- ------------ ------------ 
987654.batch     42468K     40556K   00:00:23      2748259     22582639 
987655.0        626896K    620228K 3-00:32:44   4525852436   3186520762

Interpretación:

  • MaxRSS: Memoria RAM máxima utilizada

  • MaxVMSize: Memoria virtual máxima

  • AveCPU: Tiempo promedio de CPU consumido

  • MaxDiskRead/Write: Operaciones de I/O en bytes

Visualización en Grafana#

También se puede usar la herramienta jobmetrics. La cual genera un enlace a un dashboard de Grafana con métricas de uso de CPU y memoria del job indicado. Esto funciona tanto para jobs en ejecución como jobs ya finalizados.

$ jobmetrics $JOBID

Donde JOBID es el ID del trabajo que se desea inspeccionar.

Por defecto, se genera un enlace que cubre el rango de tiempo completo del job. En caso de que el job aún se esté ejecutando, el rango se extenderá hasta el momento actual. Si se desea monitorear su progreso en tiempo real, puede utilizar la opción --follow.

Truco

Para ver el JOBID de tus jobs encolados, ejecuta: squeue --me

Ejemplo#

$ squeue --me
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
12345     multi     test   fulano  R    1:50:00      1 rome01

$ jobmetrics 12345
https://stats.ccad.unc.edu.ar/d/QFHyg4I7k/serafin?from=20250616T033428&to=20250617T135536&var-host=rome01.rome