🔎 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 consumidoElapsed:
1-13:24:48= tiempo real transcurrido (1 dia, 13 horas, 24 minutos, 48 segundos)MaxRSS:
90.50G= memoria máxima utilizadaReqMem:
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íficoFIELD1,FIELD2,...: Lista de campos a mostrar (separados por comas, sin espacios)La flag
--helpformatmuestra todos los campos disponiblesLa flag
--allstepslista 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 utilizadaMaxVMSize: Memoria virtual máximaAveCPU: Tiempo promedio de CPU consumidoMaxDiskRead/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