SLURM QoS Usage on LiCO

如何将SLURM QoS与LiCO配合使用

[toc]

1. 用户组

HPC系统用户组由本地OpenLDAP服务来管理,如要使用Slurm QoS功能,则管理员需要手动同步用户组信息到Slurm中。

对用户组的操作可以通过LiCO Web界面来操作。

1.1 添加用户组

sacctmgr add account <GroupName>

1.2 删除用户组

sacctmgr delete account <GroupName>

2. 用户

HPC系统用户信息存储在管理节点的OpenLDAP服务中,如要使用Slurm QoS功能,则管理员需要手动同步用户信息到Slurm中。

2.1 添加用户

sacctmgr add user <UserName> Account=<GroupName>

2.2 调整用户分组

sacctmgr add user <UserName> Account+=<NewGroupName>
sacctmgr modify user <UserName> set DefaultAccount=<NewGroupName>
sacctmgr delete user <UserName> Account=<OldGroupName>

Note: OldGroupName可以通过下面命令获得:

sacctmgr list user where User=<UserName> format=DefaultAccount%30

2.3 删除用户

sacctmgr delete user <UserName>

3. 队列

队列是指Slurm调度器中的Partition,系统管理员可以通过LiCO Web界面来进行基本的队列管理。 Note: 由于作业相关的限制条件均由QoS来配置,所以不建议使用界面来修改队列的Max Time值。

3.1 新增队列

3.2 调整队列

4. QoS

QoS是Slurm提供的用来定义集群计算资源限制规则的方法。 管理员可以通过Slurm命令来动态的调整QoS,来实现对集群的运维。 为了使QoS规则生效,需要通过与队列(Parition),用户组(Account),用户(User)建立关系。常见的QoS配置有: - 用来限制资源及运行时间的。这类QoS常与队列建立关联。 - 用来限制作业数量的。这类QoS常与用户组建立关联。 使用上面两类QoS配置基本可以满足在绝大部分资源限制需求,并可以使用命令行调整QoS来满足运维需求。 Note: LiCO当前版本不支持通过Web界面对Slurm的QoS进行设置,需要通过命令行完成。

4.1 新增QoS

sacctmgr add qos <qosName> [Options]

Options的具体用法请参考Slurm官方文档。下面是常见的QoS配置举例: - 限制每个用户最多使用128核,提交超过限制则报错,无运行时间限制。

sacctmgr add qos cpu_xl MaxTRESPerUser=cpu=128 Flags=DenyOnLimit 
sacctmgr add qos cpu_l MaxTRESPerUser=cpu=64 Flags=DenyOnLimit MaxWall=30-00:00:00 
sacctmgr add qos gpu_m MaxTRESPerUser=gres/gpu=4,node=2 Flags=DenyOnLimit 
sacctmgr add qos geforce_m MaxTRESPerUser=gres/gpu=2,cpu=10 Flags=DenyOnLimit 

Note: 如需要取消某个资源上的限制,可设置为-1。 - 运行如下命令,可以查看系统中的QoS。

sacctmgr list qos

4.2 调整QoS

sacctmgr modify qos where Name=<qosName> set [Options]

Options的使用方法与新增QoS命令相同,具体用法请参考Slurm官方文档。

4.3 设置QoS与队列的关联

vi /etc/slurm/slurm.conf
PartitionName=cpu_high AllowGroups=grp_high Nodes=compute-0-[01-26],compute-1-[07-10],compute-2-[01-12] Priority=65533  QOS=cpu_xl State=UP
scontrol reconfigure

4.4 设置QoS与用户组的关联

sacctmgr modify account where Account=<GroupName> set QOS=<qosName>

4.5 删除QoS

sacctmgr delete qos where <qosName>