Проблема, с которой я сталкиваюсь с SLURM, может быть кратко изложена следующим образом. Рассмотрим сценарий bash test.sh
который запрашивает 8 процессоров, но фактически запускает работу с использованием 10 процессоров:
#!/bin/sh
#SBATCH --ntasks=8
stress -c 10
На сервере с 32 процессорами, если я запускаю этот скрипт 5 раз с sbatch test.sh
, 4 из них запускаются сразу, а последний отображается как ожидающий, как показано командой squeue
:
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
5 main test.sh jack PD 0:00 1 (Resources)
1 main test.sh jack R 0:08 1 server
2 main test.sh jack R 0:08 1 server
3 main test.sh jack R 0:05 1 server
4 main test.sh jack R 0:05 1 server
Проблема в том, что эти 4 задания фактически используют 40 процессоров и перегружают систему. Напротив, я бы ожидал, что SLURM либо не запустит задания, которые на самом деле используют больше ресурсов, чем запрашивается пользователем, либо отложит их до тех пор, пока не будет достаточно ресурсов для их запуска.
Некоторые полезные сведения о моем файле slurm.conf
:
# SCHEDULING
#DefMemPerCPU=0
FastSchedule=1
#MaxMemPerCPU=0
SchedulerType=sched/backfill
SchedulerPort=7321
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
# COMPUTE NODES
NodeName=server CPUs=32 RealMemory=10000 State=UNKNOWN
# PARTITIONS
PartitionName=main Nodes=server Default=YES Shared=YES MaxTime=INFINITE State=UP
Я только начинаю с SLURM, и я озадачен этим поведением. Как я могу убедиться, что пользователи моего сервера не запускают задания, которые используют слишком много процессоров? Я прочитал руководство и потратил много времени на поиск информации на форумах, но, к сожалению, я не нашел ничего полезного.
Заранее большое спасибо за вашу помощь!