Accounting e informes de slurm
Slurm consta de un sistema de accounting y reporting que permite a los administradores y a los usuarios tener información restropectiva sobre el uso que se ha hecho del sistema HPC.
Es importante saber que slurm cuenta con dos entidades necesarias para estas actividades:
- Account: Es la entidad propia de slurm que permite controlar el acceso y el uso a los recursos para un usuario o grupos de usuarios. Es interna de slurm y no tiene ninguna correspondencia con ningún directorio ni sistema de autenticación.
- User: Es la entidad que mapea el usuario de slurm al usuario propio de linux correspondiente a la cuenta de usuario, que estará definido en los servicios de directorio o de autenticación de linux.
Para entenderlo prácticamente podriamos pensar en que account se corresponde con nuestro grupo de investigación y que user es el usuario que cada uno de los miembros del grupo tiene en el HPC.
De esa forma un account puede tener varios usuarios, y también un usuario puede pertenecer a varios account. A la hora de contar los recursos del HPC empleados, podremos hacerlo por account, por user o por una combinación de ambos.
Sobre los account y los user se pueden generar informes de uso. Pondremos aquí solo algunos ejemplos que pueden ser de interés desde el punto de vista del usuario.
El comando para generar los informes es sreport y por defecto genera informes sobre lo sucedido en las últimas 24 horas. Si queremos especificar otro rango temporal debemos usar los argumentos Start y End, que admiten los siguientes formatos:
HH:MM[:SS] [AM|PM] MMDD[YY] o MM/DD[/YY] o MM.DD[.YY] MM/DD[/YY]-HH:MM[:SS] YYYY-MM-DD[THH:MM[:SS]]
La información completa del comando sreport se encuentra aquí
Muestra los usuarios que más han consumido desde el 1 de enero de 2023
(base) [root@admin01 logs]$ sreport user topuser start=2023-01-01 -------------------------------------------------------------------------------- Top 10 Users 2023-01-01T00:00:00 - 2023-05-07T23:59:59 (10969200 secs) Usage reported in CPU Minutes -------------------------------------------------------------------------------- Cluster Login Proper Name Account Used Energy --------- --------- --------------- --------------- -------- -------- linux user1 si 47072 0 linux user2 si 11179 0
Como se ve ambos usuarios corresponden al mismo account. Used nos indica el tiempo de cómputo usado por dichos usuarios.
Muestra la distribución de trabajos en función del número de cpus
(base) [root@admin01 logs]$ sreport job SizesByAccount start=2023-01-01 -t percent Format=account Grouping=5,9 -------------------------------------------------------------------------------- Job Sizes 2023-01-01T00:00:00 - 2023-05-07T23:59:59 (10969200 secs) Time reported in Percentage of Total -------------------------------------------------------------------------------- Account 0-4 CPUs 5-8 CPUs >= 9 CPUs % of cluster --------- ------------- ------------- ------------- ------------ root 27.25% 72.75% 0.00% 100.00%
Aquí vemos que el 27.25% han consumido menos de 5 cpus, y el resto entre 5 y 8. Cambiando los valores de Grouping podemos cambiar dichos umbrales.
Ver la utilización del cluster
(base) [root@admin01 logs]$ sreport cluster utilization Start=2023-01-01 -------------------------------------------------------------------------------- Cluster Utilization 2023-01-01T00:00:00 - 2023-05-07T23:59:59 Usage reported in CPU Minutes -------------------------------------------------------------------------------- Cluster Allocate Down PLND Dow Idle Reserved Reported --------- -------- --------- -------- ---------- -------- ---------- linux 58251 7135949 0 40486311 37291 47717802
Este informe nos muestra el consumo en minutos en cada uno de los estados de nuestro cluster, los estados son:
- Allocate: Los que han usado nuestros trabajos.
- Down: Los que no se han podido usar porque determinados nodos estaban fuera de servicio o en mantenimiento.
- Idle: Los minutos que estaban disponibles pero no se han usado.
- Reserved: Los minutos que se han reservado para que determinado/s usuario/s ejecuten sus trabajos en un momento dado.
- Reported: El total de minutos de nuestro sistema.
Muestra una lista de trabajos pasados
Con el comando sacct es posible mostrar una lista de trabajos pasados y otra información no tan sumarizada como hace el sreport. Aquí tenemos un ejemplo de las primeras filas del listado de los trabajos del cluster desde el 1 de Enero de 2023:
(base) [root@admin01 logs]$ sacct -S2023-01-01 | head JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 3003_1 hello normal si 1 COMPLETED 0:0 3003_1.batch batch si 1 COMPLETED 0:0 3003_1.0 python si 1 COMPLETED 0:0 3003_2 hello normal si 1 COMPLETED 0:0 3003_2.batch batch si 1 COMPLETED 0:0 3003_2.0 python si 1 COMPLETED 0:0 3003_3 hello normal si 1 COMPLETED 0:0 3003_3.batch batch si 1 COMPLETED 0:0
Si quisiéramos ver por ejemplo las cpus usadas por el trabajo con id 5000, usariamos este comando:
(base) [root@admin01 logs]$ sacct --jobs 5000 --allocations JobID JobName Partition Account AllocCPUS State ExitCode ------------ ---------- ---------- ---------- ---------- ---------- -------- 5000 BioHub_Ba+ normal si 5 COMPLETED 0:0
Hay muchas posibilidades usando los argumentos del comando sacct que están explicados aquí