Sim*_*guy 7 batch scheduled-tasks queue-management
我使用 SLURM 作为作业调度程序和小型集群(具有 64 核的单节点)的队列。要提交批处理作业,我使用:
> sbatch run.sh
Run Code Online (Sandbox Code Playgroud)
run.sh 看起来像:
#! /bin/bash
#SBATCH --ntasks=4
export OMP_THREAD_LIMIT=4
/home/Benchmarks/Graph500/omp-csr/omp-csr -s 23
Run Code Online (Sandbox Code Playgroud)
但是,当我一个接一个地提交 2 个批处理作业时,我得到:
> squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
29 debug run.sh anonymou PD 0:00 1 (Resources)
28 debug run.sh anonymou R 1:13 1 localhost
Run Code Online (Sandbox Code Playgroud)
每个作业只需要 4 个内核,因此两个作业都应该运行。也许我错误地配置了 slurm 控制器,/etc/slurm.conf 中的相关行是:
# COMPUTE NODES
NodeName=localhost CPUs=64 Sockets=4 CoresPerSocket=8 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP
Run Code Online (Sandbox Code Playgroud)
我会感谢任何帮助/提示。
默认情况下,SLURM 不允许资源共享,因此当作业在 1 个节点中运行时,其余作业会等待它完成,然后再在同一节点上执行任何其他作业。
需要为资源共享配置 SLURM,这应该相当简单并且有据可查。
添加到 slurm.conf 文件(通常位于 /etc/slurm 下)的示例如下:
SelectType=select/cons_res
SelectTypeParameters=
DefMemPerCPU=
Run Code Online (Sandbox Code Playgroud)
这将允许使用con_res
插件共享节点的资源。
该select/con_res
插件允许多种参数(SelectTypeParameters)。下面列出了最突出的(有关参数的完整列表,请参阅 slurm.conf 的手册页):
CR_CPU:CPU 是消耗性资源。
CR_CPU_Memory:将内存作为消耗品添加到 CR_CPU。
CR_Core Cores:核心是消耗性资源。
CR_Core_Memory:将内存作为消耗品添加到 CR_CPU_Memory。
完成后,您选择了要在 SLURM 中用作消耗品的资源类型,您需要做的就是将选项添加shared=yes
到默认队列并scontrol reconfigure
在用作控制器的节点中发出命令。