Slurm GANG 安排不轮流工作?

问题描述 投票:0回答:1

我正在尝试在我的单节点服务器上使用 Slurm 设置 GANG 调度,以便实验室的人员可以在不互相阻塞的情况下运行实验(因此,如果说有人必须运行一些需要几天才能完成的代码,那么其他工作采取更少的方式有机会与它交替运行,因此他们不必等待数天才能运行)

我按照 slurm 站点上的 GANG 调度 slurm.conf 设置教程进行操作,为了检查它是否正常工作,我启动了一堆打印当前时间然后休眠一段时间的作业。但是当我检查 squeue 时,这些作业永远不会交替,它们一个接一个地按顺序运行。为什么会出现这种情况?

这是我的

slurm.conf
文件:

# See the slurm.conf man page for more information.
ClusterName=localcluster
SlurmctldHost=localhost
ProctrackType=proctrack/linuxproc
ReturnToService=1                                                                                                                                                         
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm/slurmd
SlurmUser=slurm                                                                                                                                                           
StateSaveLocation=/var/lib/slurm/slurmctld                                                                                                                                
TaskPlugin=task/none                                                                                                                                                      
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
#Seteado para que cada laburo alterne cada 15 segundos
SchedulerTimeSlice=15                                                                                                                                                     
SchedulerType=sched/builtin
SelectType=select/linear
SelectTypeParameters=CR_Memory                                                                                                                                            
PreemptMode=GANG
# LOGGING AND ACCOUNTING
JobCompType=jobcomp/none
JobAcctGatherFrequency=30                                                                                                                                                 
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log                                                                                                                                   
# COMPUTE NODES
NodeName=lab04 CPUs=48 CoresPerSocket=12 ThreadsPerCore=2 
State=UNKNOWN RealMemory=257249
PartitionName=LocalQ Nodes=ALL Default=YES MaxTime=INFINITE State=UP OverSubscribe=FORCE:6 DefMemPerNode=257249 MaxMemPerNode=257249

据我了解,

SchedulerTimeSlice=15
意味着作业应该每 15 秒交替运行一次。

这是我要启动的工作

sbatch
(一个接一个地启动该工作的许多副本):

#!/bin/bash                                                                                                                                                               #SBATCH -J test # Job name
#SBATCH -o job.%j.out # Name of stdout output file (%j expands to %jobId)
#SBATCH -N 1 # Total number of nodes requested
echo "Test output from Slurm Testjob"
date                                                                                                                                                                      
sleep 10                                                                                                                                                                  
date                                                                                                                                                                      
sleep 10
date
sleep 10
date
sleep 10

我希望作业打印一两个日期,然后 Slurm 调度程序来让另一个作业同时运行,然后最终打印的延迟大于 10 秒

然而,在启动了该工作的许多副本之后,这就是我在

squeue
上看到的:

在第一个作业启动完成之前:

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                18    LocalQ     test eiarussi PD       0:00      1 (Resources)
                19    LocalQ     test eiarussi PD       0:00      1 (Priority)                                                                                                            
                20    LocalQ     test eiarussi PD       0:00      1 (Priority)                                                                                                            
                21    LocalQ     test eiarussi PD       0:00      1 (Priority)                                                                                                            
                17    LocalQ     test eiarussi  R       0:31      1 lab04

工作结束后:

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)                                                                                                      
                19    LocalQ     test eiarussi PD       0:00      1 (Resources)
                20    LocalQ     test eiarussi PD       0:00      1 (Priority)
                21    LocalQ     test eiarussi PD       0:00      1 (Priority)
                18    LocalQ     test eiarussi  R       0:02      1 lab04

为什么第一个作业不间断地运行了 30 秒以上,而不是另一个作业在 15 秒后才允许运行?我是否误解了 GANG 调度的工作原理,或者是我的 conf 文件有问题?

slurm
1个回答
0
投票

请注意,默认情况下,组调度通过暂停链接到作业的进程来工作,这意味着这些进程仍然驻留在内存中。因此,Slurm 不会超额订阅内存以避免交换和崩溃。

鉴于您的提交脚本未指定内存,默认

DefMemPerNode=257249
等于节点的整个内存(
RealMemory=257249
),每个作业都分配整个内存,防止作业在同一节点上并置.

尝试为每个作业请求少于一半的内存。

© www.soinside.com 2019 - 2024. All rights reserved.