| 1 | == Accounting e informes de slurm == |
| 2 | 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. |
| 3 | |
| 4 | Es importante saber que slurm cuenta con dos entidades necesarias para estas actividades: |
| 5 | - '''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. |
| 6 | - '''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. |
| 7 | |
| 8 | 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. |
| 9 | |
| 10 | 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. |
| 11 | |
| 12 | 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. |
| 13 | |
| 14 | 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: |
| 15 | |
| 16 | {{{ |
| 17 | HH:MM[:SS] [AM|PM] |
| 18 | MMDD[YY] o MM/DD[/YY] o MM.DD[.YY] |
| 19 | MM/DD[/YY]-HH:MM[:SS] |
| 20 | YYYY-MM-DD[THH:MM[:SS]] |
| 21 | }}} |
| 22 | |
| 23 | La información completa del comando {{{sreport}}} se encuentra [https://slurm.schedmd.com/sreport.html aquí] |
| 24 | === Muestra los usuarios que más han consumido desde el 1 de enero de 2023 === |
| 25 | {{{ |
| 26 | (base) [root@admin01 logs]$ sreport user topuser start=2023-01-01 |
| 27 | -------------------------------------------------------------------------------- |
| 28 | Top 10 Users 2023-01-01T00:00:00 - 2023-05-07T23:59:59 (10969200 secs) |
| 29 | Usage reported in CPU Minutes |
| 30 | -------------------------------------------------------------------------------- |
| 31 | Cluster Login Proper Name Account Used Energy |
| 32 | --------- --------- --------------- --------------- -------- -------- |
| 33 | linux user1 si 47072 0 |
| 34 | linux user2 si 11179 0 |
| 35 | }}} |
| 36 | |
| 37 | Como se ve ambos usuarios corresponden al mismo account. {{{Used}}} nos indica el tiempo de cómputo usado por dichos usuarios. |
| 38 | |
| 39 | === Muestra la distribución de trabajos en función del número de cpus === |
| 40 | {{{ |
| 41 | (base) [root@admin01 logs]$ sreport job SizesByAccount start=2023-01-01 -t percent Format=account Grouping=5,9 |
| 42 | -------------------------------------------------------------------------------- |
| 43 | Job Sizes 2023-01-01T00:00:00 - 2023-05-07T23:59:59 (10969200 secs) |
| 44 | Time reported in Percentage of Total |
| 45 | -------------------------------------------------------------------------------- |
| 46 | Account 0-4 CPUs 5-8 CPUs >= 9 CPUs % of cluster |
| 47 | --------- ------------- ------------- ------------- ------------ |
| 48 | root 27.25% 72.75% 0.00% 100.00% |
| 49 | }}} |
| 50 | 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. |
| 51 | |
| 52 | === Ver la utilización del cluster === |
| 53 | {{{ |
| 54 | (base) [root@admin01 logs]$ sreport cluster utilization Start=2023-01-01 |
| 55 | -------------------------------------------------------------------------------- |
| 56 | Cluster Utilization 2023-01-01T00:00:00 - 2023-05-07T23:59:59 |
| 57 | Usage reported in CPU Minutes |
| 58 | -------------------------------------------------------------------------------- |
| 59 | Cluster Allocate Down PLND Dow Idle Reserved Reported |
| 60 | --------- -------- --------- -------- ---------- -------- ---------- |
| 61 | linux 58251 7135949 0 40486311 37291 47717802 |
| 62 | }}} |
| 63 | |
| 64 | Este informe nos muestra el consumo en minutos en cada uno de los estados de nuestro cluster, los estados son: |
| 65 | - '''Allocate''': Los que han usado nuestros trabajos. |
| 66 | - '''Down''': Los que no se han podido usar porque determinados nodos estaban fuera de servicio o en mantenimiento. |
| 67 | - '''Idle''': Los minutos que estaban disponibles pero no se han usado. |
| 68 | - '''Reserved''': Los minutos que se han reservado para que determinado/s usuario/s ejecuten sus trabajos en un momento dado. |
| 69 | - '''Reported''': El total de minutos de nuestro sistema. |
| 70 | |
| 71 | == Muestra una lista de trabajos pasados == |
| 72 | 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: |
| 73 | {{{ |
| 74 | (base) [root@admin01 logs]$ sacct -S2023-01-01 | head |
| 75 | JobID JobName Partition Account AllocCPUS State ExitCode |
| 76 | ------------ ---------- ---------- ---------- ---------- ---------- -------- |
| 77 | 3003_1 hello normal si 1 COMPLETED 0:0 |
| 78 | 3003_1.batch batch si 1 COMPLETED 0:0 |
| 79 | 3003_1.0 python si 1 COMPLETED 0:0 |
| 80 | 3003_2 hello normal si 1 COMPLETED 0:0 |
| 81 | 3003_2.batch batch si 1 COMPLETED 0:0 |
| 82 | 3003_2.0 python si 1 COMPLETED 0:0 |
| 83 | 3003_3 hello normal si 1 COMPLETED 0:0 |
| 84 | 3003_3.batch batch si 1 COMPLETED 0:0 |
| 85 | }}} |
| 86 | |
| 87 | Si quisiéramos ver por ejemplo las cpus usadas por el trabajo con id 5000, usariamos este comando: |
| 88 | {{{ |
| 89 | (base) [tonin@admin01 logs]$ sacct --jobs 5000 --allocations |
| 90 | JobID JobName Partition Account AllocCPUS State ExitCode |
| 91 | ------------ ---------- ---------- ---------- ---------- ---------- -------- |
| 92 | 5000 BioHub_Ba+ normal si 5 COMPLETED 0:0 |
| 93 | }}} |
| 94 | |
| 95 | Hay muchas posibilidades usando los argumentos del comando {{{sacct}}} que están explicados [https://slurm.schedmd.com/sacct.html aquí] |