====== Cheatsheet SLURM ====== ===== Ver logs de SLURM desde login ===== sudo -u slurm cat /var/log/slurmctld.log ==Actualizar partición== Con el siguiente comando se actualiza temporalmente el tiempo máximo que puede tener un job para ingresar a una partición pero **hasta que se reincie el slurmctld** donde vuelve a tomar el que esté definido en slurm.conf: scontrol update PartitionName=cpunode MaxTime=2-0 ===== Monitorear consumo de QOS ===== scontrol show assoc_mgr | grep "QOS=qosprueba(32)" -A 21 El output va a ser algo asi: QOS=qosprueba(32) UsageRaw=56629.000000 GrpJobs=N(1) GrpJobsAccrue=N(0) GrpSubmitJobs=N(1) GrpWall=N(59.72) GrpTRES=cpu=N(64),mem=N(506808),energy=N(0),node=N(1),billing=N(64),fs/disk=N(0),vmem=N(0),pages=N(0),gres/gpu=N(4),gres/gpumem=N(0),gres/gpuutil=N(0) GrpTRESMins=cpu=944(943),mem=N(30264884),energy=N(0),node=N(59),billing=N(943),fs/disk=N(0),vmem=N(0),pages=N(0),gres/gpu=2000(1),gres/gpumem=N(0),gres/gpuutil=N(0) GrpTRESRunMins=cpu=N(64),mem=N(506808),energy=N(0),node=N(1),billing=N(64),fs/disk=N(0),vmem=N(0),pages=N(0),gres/gpu=N(4),gres/gpumem=N(0),gres/gpuutil=N(0) MaxWallPJ= MaxTRESPJ= MaxTRESPN= MaxTRESMinsPJ= MinPrioThresh= MinTRESPJ= PreemptMode=OFF Priority=0 Account Limits cuentaprueba MaxJobsPA=N(1) MaxJobsAccruePA=N(0) MaxSubmitJobsPA=N(1) MaxTRESPA=cpu=N(64),mem=N(506808),energy=N(0),node=N(1),billing=N(64),fs/disk=N(0),vmem=N(0),pages=N(0),gres/gpu=N(4),gres/gpumem=N(0),gres/gpuutil=N(0) User Limits utest(10054) MaxJobsPU=N(1) MaxJobsAccruePU=N(0) MaxSubmitJobsPU=N(1) MaxTRESPU=cpu=N(64),mem=N(506808),energy=N(0),node=N(1),billing=N(64),fs/disk=N(0),vmem=N(0),pages=N(0),gres/gpu=N(4),gres/gpumem=N(0),gres/gpuutil=N(0) Ver la línea: GrpTRESMins=cpu=944(943) Donde 944 es la cantidad de horas disponibles y 943 es las utilizadas al momento. ===== Cambiar de estado ===== Drain: scontrol update NodeName=cn0xx State=DRAIN Reason="maintenance" Undrain: scontrol update NodeName=cn0xx State=DOWN Reason="undraining" scontrol update NodeName=cn0xx State=RESUME ===== Agregar usuario administrador ===== sacctmgr create user name= account=users sacctmgr modify user name= set defaultaccount=users sacctmgr modify user name= set adminlevel=administrator ===== Monitorear tiempo de espera y priority ===== Si los usuarios se quejan de que su job tarda mucho en entrar, podemos en primera instancia utilizar squeue con un poco más de información: squeue -o "%.7i %.20V %.10a %.15u %.5t %.7C %.7Q %.R" Esto nos permite ver fecha de envío del job, y la priority del mismo, junto con el job size. Si queremos ver en más detalle calcular el tiempo de espera de cada job: sacct -Xa --starttime=0215 --parsable --endtime=now --format=JobID,Submit,Start,Priority,Account,User%10,AllocCPUs,State | awk -F'|' ' NR==1 { # Print header with fixed widths printf "%-15s %-20s %-20s %-10s %-10s %-10s %-10s %-12s %-10s\n", $1, $2, $3, $4, $5, $6, $7, $8, "WaitDays" next } $3 ~ /[0-9]/ { s1 = $2; s2 = $3; gsub(/[-T:]/, " ", s1); gsub(/[-T:]/, " ", s2); # Calculate days w_days = (mktime(s2) - mktime(s1)) / 86400; # Print data rows with matching fixed widths # %-15s = string, left-aligned, 15 chars wide # %-10.2f = float, 2 decimals, 10 chars wide printf "%-15s %-20s %-20s %-10s %-10s %-10s %-10s %-12s %-10.2f\n", $1, $2, $3, $4, $5, $6, $7, $8, w_days }' Veremos que en la última columna está el tiempo que tardó el job en entrar a queue. Ajustar la fecha de --starttime acordemente. Para analizar usuarios por fairshare (peor fairshare) usar opción --reverse si se quiere ver al revez. sshare -aU | awk 'NR<=2; NR>2 {print $0 | "sort -k7,7rn"}'