Cluster computing slurm作业挂起,但资源可用

Cluster computing slurm作业挂起,但资源可用,cluster-computing,slurm,taskscheduler,Cluster Computing,Slurm,Taskscheduler,根据我的理解,我在资源分配方面遇到了一些问题 文档,并将其应用到配置文件中,我希望某些行为不会发生 以下是配置文件的相关摘录: 60 SchedulerType=sched/backfill 61 SchedulerParameters=bf_continue,bf_interval=45,bf_resolut

根据我的理解,我在资源分配方面遇到了一些问题 文档,并将其应用到配置文件中,我希望某些行为不会发生

以下是配置文件的相关摘录:

 60 SchedulerType=sched/backfill                                                                                            
 61 SchedulerParameters=bf_continue,bf_interval=45,bf_resolution=90,max_array_tasks=1000                                    
 62 #SchedulerAuth=                                                                                                         
 63 #SchedulerPort=                                                                                                         
 64 #SchedulerRootFilter=                                                                                                   
 65 SelectType=select/cons_res                                                                                              
 66 SelectTypeParameters=CR_CPU_Memory                                                                                      
 67 FastSchedule=1
...     
 102 NodeName=cn_burebista Sockets=2 CoresPerSocket=14 ThreadsPerCore=2 RealMemory=256000  State=UNKNOWN                      
 103 PartitionName=main_compute Nodes=cn_burebista Shared=YES Default=YES MaxTime=76:00:00 State=UP
根据以上内容,我启用了回填调度程序,并将CPU和内存配置为 资源。我的资源池中有56个CPU和256GB的RAM。我想他会的 调度器尝试分配资源,以便尽可能多地填充内核(如果有) 多个流程需要的资源超过可用资源。就我而言,我有以下队列:

 JOBID PARTITION     NAME     USER      ST       TIME  NODES NODELIST(REASON)
 2361 main_comp     training   mc       PD       0:00      1           (Resources)
 2356 main_comp     skrf_ori   jh       R        58:41      1          cn_burebista
 2357 main_comp     skrf_ori   jh       R        44:13      1          cn_burebista
作业2356和2357分别要求16个CPU,作业2361要求20个CPU,即总共52个CPU 如上所述,尽管有大量的CPU和内存可用,但由于缺乏资源,作业2361(由不同的用户启动)被标记为挂起。“scontrol show nodes cn_burebista”提供了以下信息:

NodeName=cn_burebista Arch=x86_64 CoresPerSocket=14
   CPUAlloc=32 CPUErr=0 CPUTot=56 CPULoad=21.65
   AvailableFeatures=(null)
   ActiveFeatures=(null)
   Gres=(null)
   NodeAddr=cn_burebista NodeHostName=cn_burebista Version=16.05
   OS=Linux RealMemory=256000 AllocMem=64000 FreeMem=178166 Sockets=2 Boards=1
   State=MIXED ThreadsPerCore=2 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A
   BootTime=2018-03-09T12:04:52 SlurmdStartTime=2018-03-20T10:35:50
   CapWatts=n/a
   CurrentWatts=0 LowestJoules=0 ConsumedJoules=0
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s
我一次又一次地浏览文档,但我不知道我做错了什么。。。 为什么我会有上述情况?我应该如何更改配置以使其正常工作

类似(不相同的情况)问题被问但没有回答

编辑:

这是我的任务脚本的一部分:

  3 # job parameters                                                                                                         
  4 #SBATCH --job-name=training_carlib                                                                                       
  5 #SBATCH --output=training_job_%j.out                                                                                     
  6                                                                                                                          
  7 # needed resources                                                                                                       
  8 #SBATCH --ntasks=1                                                                                                       
  9 #SBATCH --cpus-per-task=20                                                                                               
 10 #SBATCH --export=ALL       

 17 export OMP_NUM_THREADS=20                                                                                                
 18 srun ./super_awesome_app
可以看出,每个节点请求1个任务,每个任务请求20个CPU。由于调度器被配置为将CPU视为资源而不是内核,并且我明确地要求脚本中的CPU,为什么作业要求内核?这是我的

编辑2:

下面是建议的命令的输出:

JobId=2383 JobName=training_carlib
   UserId=mcetateanu(1000) GroupId=mcetateanu(1001) MCS_label=N/A
   Priority=4294901726 Nice=0 Account=(null) QOS=(null)
   JobState=PENDING Reason=Resources Dependency=(null)
   Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0
   RunTime=00:00:00 TimeLimit=3-04:00:00 TimeMin=N/A
   SubmitTime=2018-03-27T10:30:38 EligibleTime=2018-03-27T10:30:38
   StartTime=2018-03-28T10:27:36 EndTime=2018-03-31T14:27:36 Deadline=N/A
   PreemptTime=None SuspendTime=None SecsPreSuspend=0
   Partition=main_compute AllocNode:Sid=zalmoxis:23690
   ReqNodeList=(null) ExcNodeList=(null)
   NodeList=(null) SchedNodeList=cn_burebista
   NumNodes=1 NumCPUs=20 NumTasks=1 CPUs/Task=20 ReqB:S:C:T=0:0:*:*
   TRES=cpu=20,node=1
   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*
   MinCPUsNode=20 MinMemoryNode=0 MinTmpDiskNode=0
   Features=(null) Gres=(null) Reservation=(null)
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
   Command=/home/mcetateanu/workspace/CarLib/src/_outputs/linux-xeon_e5v4-icc17.0/bin/classifier/train_classifier.sh
   WorkDir=/home/mcetateanu/workspace/CarLib/src/_outputs/linux-xeon_e5v4-icc17.0/bin/classifier
   StdErr=/home/mcetateanu/workspace/CarLib/src/_outputs/linux-xeon_e5v4-icc17.0/bin/classifier/training_job_2383.out
   StdIn=/dev/null
   StdOut=/home/mcetateanu/workspace/CarLib/src/_outputs/linux-xeon_e5v4-icc17.0/bin/classifier/training_job_2383.out
   Power=

在您的配置中,Slurm无法在同一内核的两个硬件线程上分配两个作业。在您的示例中,Slurm因此需要至少10个完全免费的内核才能开始您的工作。 此外,如果使用默认的
block:cyclic
任务关联配置,则Slurm会在套接字上循环以在节点中分发任务

因此,我相信发生的情况如下:

  • 作业2356已提交,由于默认任务分配,已分配16个物理核
  • 作业2357已提交,分配给8个物理内核上的2个硬件线程,覆盖默认任务分配以运行作业
  • 作业2361已提交,等待至少10个物理内核可用
您可以使用

scontrol show -dd job <jobid>
但是您还需要直接在节点定义中指定
cpu

NodeName=cn_burebista CPUs=56 RealMemory=256000  State=UNKNOWN  
不要让Slurm从
Sockets
CoresPerSocket
ThreadsPerCore
计算
CPU


请参阅“关于节点定义”一节中的“关于ThreadsPerCore”一节。

您是否可以共享
scontrol show job 2361
的输出?很遗憾,我没有它。然后我们只能推测,这可能是因为该作业请求物理内核,而不是请求硬件线程。@damienfrancois给出了您最新的评论I添加了mote上下文,但我将添加建议命令的输出,因为我认为我可以复制它。我尝试了,我更改了配置并重新制定了场景,但它不起作用。。。正在运行的两个任务具有以下输出:NumNodes=1 NumCPUs=16 NumTasks=1 cpu/Task=16 ReqB:S:C:T=0:0:*TRES=cpu=16,mem=3200M,node=1 Socks/node=*NtasksPerN:B:S:C=0:0:::*CoreSpec=*Nodes=cn\u burebista CPU\u IDs=0-15 Mem=32000 MinCPUsNode=16 MinMemoryCPU=2000M mintpdisknode=0----另一个----NumNodes=1 numpus=20 numtask=1 CPU/Task=20需求:S:T=0:0:*TRES=CPU=20,node=1 Socks/node=NtasksPerN:B:C=0:*CoreSpec=0:*=*
NodeName=cn_burebista CPUs=56 RealMemory=256000  State=UNKNOWN