Skip to content

Instantly share code, notes, and snippets.

@weijianwen
Last active July 30, 2020 08:03
Show Gist options
  • Save weijianwen/acee3cd49825da8c8dfb4a99365b54c8 to your computer and use it in GitHub Desktop.
Save weijianwen/acee3cd49825da8c8dfb4a99365b54c8 to your computer and use it in GitHub Desktop.

slurm.conf

修正明显配置错误

建议修正当前slurm.conf的一些和常规用法差别较大的配置,建议逐步尝试把这些用法修正。这些配置修改对SLURM用法没有影响,可以在线进行。若发生异常,还原slurm.conf配置,重启slurm服务即可。

更正节点列表写法

将当前的节点列表改写成比较简介的形式,原内容如下:

#airesearch machines
# 4 GPU Nodes
NodeName=gqxx-01-00[1-9] Sockets=2 CoresPerSocket=13 ThreadsPerCore=2 RealMemory=257424 Gres=gpu:4
NodeName=gqxx-01-0[10-55] Sockets=2 CoresPerSocket=13 ThreadsPerCore=2 RealMemory=257424 Gres=gpu:4
#3 GPU node
NodeName=gqxx-01-0[56-60] Sockets=2 CoresPerSocket=7 ThreadsPerCore=2 RealMemory=257000 Gres=gpu:3
#big memory node
NodeName=cqxx-01-001  Sockets=2 CoresPerSocket=13 ThreadsPerCore=1 RealMemory=515578
#5cpu node
NodeName=cqxx-01-00[2-6]  Sockets=2 CoresPerSocket=13 ThreadsPerCore=1 RealMemory=128000
#4 GPU node
NodeName=gqxx-01-0[61-63]  Weight=1 Sockets=2 CoresPerSocket=13 ThreadsPerCore=2 RealMemory=254000 Gres=gpu:4


#aispeech machines
NodeName=gqxx-00-00[1-6] Sockets=2 CoresPerSocket=9 ThreadsPerCore=2 RealMemory=254000 Gres=gpu:4
NodeName=cgqxx-00-00[1-2] Sockets=2 CoresPerSocket=13 ThreadsPerCore=2  RealMemory=510000 Gres=gpu:1
NodeName=cqxx-00-001 Sockets=2 CoresPerSocket=11 ThreadsPerCore=2  RealMemory=510000

新内容如下:

#airesearch machines
# 4 GPU Nodes
NodeName=gqxx-01-[001-055] Sockets=2 CoresPerSocket=13 ThreadsPerCore=2 RealMemory=257424 Gres=gpu:4
#3 GPU node
NodeName=gqxx-01-[056-060] Sockets=2 CoresPerSocket=7 ThreadsPerCore=2 RealMemory=257000 Gres=gpu:3
#4 GPU node
NodeName=gqxx-01-[061-063]  Weight=1 Sockets=2 CoresPerSocket=13 ThreadsPerCore=2 RealMemory=254000 Gres=gpu:4
#big memory node
NodeName=cqxx-01-001  Sockets=2 CoresPerSocket=13 ThreadsPerCore=1 RealMemory=515578
#5cpu node
NodeName=cqxx-01-[002-006]  Sockets=2 CoresPerSocket=13 ThreadsPerCore=1 RealMemory=128000

#aispeech machines
NodeName=gqxx-00-[001-006] Sockets=2 CoresPerSocket=9 ThreadsPerCore=2 RealMemory=254000 Gres=gpu:4
NodeName=cgqxx-00-[001-002] Sockets=2 CoresPerSocket=13 ThreadsPerCore=2  RealMemory=510000 Gres=gpu:1
NodeName=cqxx-00-001 Sockets=2 CoresPerSocket=11 ThreadsPerCore=2  RealMemory=510000

关闭处理器超线程

建议关闭处理器超线程能力,在计算密集而非I/O密集的应用中,开启HyperThreading很有可能会降低服务器的整体性能。直观上,开启超线程以后每核心可以使用的物理内存减少了。

设置作业隐私

PrivateData选项可以制定那些信息是隐私的,除了用户自己以及root能够查看,可选项包括:accounts(账户)、jobs(作业)、nodes(节点)、partitions(计算队列状态)、reservations(预约资源状态)、usage(计费信息)。例如,将jobs设置为隐私:

PrivateData=jobs

在SLURM中如实填写计算节点核心数

以 cqxx-00-001 节点为例,建议如实填写每Socket有12个核心,每核心1个线程(关闭超线程以后)。如下所示:

NodeName=cqxx-00-001 Sockets=2 CoresPerSocket=12 ThreadsPerCore=1  RealMemory=510000

HPC环境中的作业进程/线程数和物理核心数长期是持平的,也没有出现“卡死”的状态,操作系统所需的CPU时钟周期很少,不需要单独的CPU核心。

改用CR_CPU作为SelectTypeParameters

使用CR_CPU作为SelectTypeParameters值将忽略作业中的内存预约请求,将优先把一个服务器的CPU核心填满再分配新的计算节点。应该也能解决之前“作业启动后,所需内存为256GB导致不能加载新作业”的故障。在Pi集群上,运行中的作业使用scontrol查看,其内存请求值为0。

SelectTypeParameters=CR_CPU

添加cpu、gpu、fat队列

建议按照节点硬件配置,将集群划分为cpu(纯cpu)、gpu、fat(大内存节点)队列。测试期间,建议分配少量节点到这些新建队列,随着QoS建立完毕以及用户习惯改过来以后再把全部资源挪到这些队列下。

在SLURM主控节点备份/etc/slurm/slurm.conf配置文件后,添加如下队列:

PartitionName=cpu Nodes=cqxx-01-[002-006] MaxTime=31-00:00:00 State=UP
PartitionName=gpu Nodes=gqxx-01-[001-004] MaxTime=31-00:00:00 State=UP
PartitionName=fat Nodes=cqxx-01-001 MaxTime=31-00:00:00 State=UP

重启slurm服务后,尝试用普通用户向队列提交作业。添加cpu、gpu、fat新队列不会改变当前用户使用习惯。

$ srun -n 1 -p cpu hostname

启用 SLURM QoS (暂时不要使用!!!)

  1. 在SLURM主控节点备份SLURM配置文件:
# cp slurm.conf slurm.conf.bak
  1. 导出原有SLURM QoS配置(只需要做一次):
# sacct dump slurm_cluster > slurm_cluster.conf
  1. 为 slurm_clustre.conf 添加QoS规则,下面是一个片段。需要注意的是,要为所有用户添加QoS。

应用 slurm_cluster.conf 配置。

启用 SLURM QoS后如何添加新用户

设计 SLURM QoS (Due: July 28th)

添加serial队列(Due: )

新增特殊用户的独占节点(Due: July 29th)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment