Changes between Version 4 and Version 5 of mem_slurm
- Timestamp:
- Jun 12, 2026, 9:40:54 AM (10 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
mem_slurm
v4 v5 2 2 El sistema de colas slurm no tiene el conocimiento apriorístico sobre las necesidades de los trabajos que lanzan los usuarios. En principio se "fia" de los parámetros que el usuario le especifica en su fichero respecto al consumo de recursos, ya sea de cores de cómputo o de memoria. 3 3 4 De esa manera si un usuario especifica en su fichero slurm solamente el parámetro {{{#SBATCH --ntasks=2}}} asumiendo que su trabajo creará dos hilos de ejecución, al no haber especificado el parámetro '''--mem''' slurm entenderá que este trabajo necesita toda la memoria del nodo. De esa forma aunque el resto de cores del nodo estén ociosos, no podrá entrar en él ningún trabajo de otro usuario, ni siquiera del mismo que mandó el primer trabajo.4 De esa manera si un usuario especifica en su fichero slurm solamente el parámetro {{{#SBATCH --ntasks=2}}} asumiendo que su trabajo creará dos hilos de ejecución, al no haber especificado el parámetro '''--mem''' slurm reservará una cantidad de memoria predeterminada por el sistema. 5 5 6 6 Sin embargo si el usuario sabe que su trabajo consumirá como mucho 10Gb de memoria, debe poner en su fichero slurm el parámetro {{{#SBATCH --mem=10gb}}}. Así permitirá que otros trabajos puedan entrar hasta que la suma de valores de memoria de todos los trabajos del nodo llegue al límite de la memoria del mismo, o hasta que todos los cores se ocupen. 7 7 8 Es importante tener en cuenta que el parámetro '''--mem''' es una restricción laxa, esto es, si al final nuestro trabajo ocupara más memoria de la que fijamos, se ejecutará perfectamente siempre que el nodo tenga memoria disponible.8 Es importante tener en cuenta que el parámetro '''--mem''' restringe la cantidad de memoria disponible por nuestros trabajos. De esta forma, si un proceso intenta usar más memoria de la reservada su ejecución podría verse afectada. 9 9 10 Los administradores podemos poner valores por defecto por si no se especifica nada por parte del usuario, pero al no tener conocimiento de lo que se va a ejecutar es posible que hagamos más mal que bien. 10 En el siguiente ejemplo se reserva 1000MB de memoria pero se utilizan 1500MB, lo que provoca que el OMM Killer (mecanismo del kernel de Linux) finalice el proceso: 11 12 {{{#!bash 13 [rbarbudo@admin01 ~]$ srun --mem 1000M -p fast stress --vm 1 --vm-bytes 1500M 14 srun: job 914678 queued and waiting for resources 15 srun: job 914678 has been allocated resources 16 stress: info: [233475] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd 17 stress: FAIL: [233475] (415) <-- worker 233476 got signal 9 18 stress: WARN: [233475] (417) now reaping child worker processes 19 stress: FAIL: [233475] (451) failed run completed in 1s 20 slurmstepd: error: Detected 1 oom-kill event(s) in StepId=914678.0 cgroup. Some of your processes may have been killed by the cgroup out-of-memory handler. 21 srun: error: x440-21: task 0: Out Of Memory 22 }}} 23 24 25 Con sacct podemos verificar que que el proceso no pudo finalizar correctamente ya que se quedó sin memoria: 26 27 {{{#!bash 28 [rbarbudo@admin01 ~]$ sacct -j 914678 --format=JobID,JobName,Partition,Account,AllocCPUs,State%15,ExitCode 29 JobID JobName Partition Account AllocCPUS State ExitCode 30 ------------ ---------- ---------- ---------- ---------- --------------- -------- 31 914678 stress fast si 2 OUT_OF_MEMORY 0:125 32 }}}
