我面临的SLURM问题可以总结如下。考虑一个bash脚本test.sh
,该脚本请求8个CPU,但实际上使用10个CPU启动作业:
#!/bin/sh
#SBATCH --ntasks=8
stress -c 10
在具有32个CPU的服务器上,如果我用来启动此脚本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个CPU,并使系统过载。相反,我希望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开始,对此行为感到困惑。如何确保服务器的用户不会启动使用过多CPU的作业?我阅读了手册,并花了很多时间在论坛上寻找信息,但不幸的是,我发现没有任何帮助。
在此先感谢您的帮助!