sudo -u slurm cat /var/log/slurmctld.log
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
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.
Drain:
scontrol update NodeName=cn0xx State=DRAIN Reason="maintenance"
Undrain:
scontrol update NodeName=cn0xx State=DOWN Reason="undraining" scontrol update NodeName=cn0xx State=RESUME
sacctmgr create user name=<user> account=users sacctmgr modify user name=<user> set defaultaccount=users sacctmgr modify user name=<user> set adminlevel=administrator
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"}'