== 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 [https://slurm.schedmd.com/sreport.html 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) [tonin@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 [https://slurm.schedmd.com/sacct.html aquí]