如何将SLURM QoS与LiCO配合使用
[toc]
1. 用户组
HPC系统用户组由本地OpenLDAP服务来管理,如要使用Slurm QoS功能,则管理员需要手动同步用户组信息到Slurm中。
对用户组的操作可以通过LiCO Web界面来操作。
1.1 添加用户组
- 用管理员账号登录LiCO Web界面。
- 进入 User Management > User Groups。
- 点击表格左上方的 Create 按钮。
- 在弹出框中,将需要建立的用户组名称填入 Name 输入框。
- 点击 Submit 按钮。提交成功后,会在OpenLDAP中建立一个用户组。
- 由于使用QoS需要同步用户组到Slurm。请通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会在Slurm中建立一个与LDAP中同名的组。
sacctmgr add account <GroupName>
1.2 删除用户组
- 用管理员账号登录LiCO Web界面。
- 进入 User Management > User Groups。
- 点击需要删除用户组所在行的 Action > Delete。
- 在弹出框中,点击 Submit 按钮。提交成功后,会在OpenLDAP中删除用户组。
- 由于使用QoS需要同步用户组到Slurm。请通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会删除Slurm中同名的组。
sacctmgr delete account <GroupName>
2. 用户
HPC系统用户信息存储在管理节点的OpenLDAP服务中,如要使用Slurm QoS功能,则管理员需要手动同步用户信息到Slurm中。
2.1 添加用户
- 用管理员账号登录LiCO Web界面。
- 进入 User Management > Users。
- 点击表格左上方的 Create 按钮。
- 在弹出框中,将需要建立的用户相关信息填入对应的输入框。
- 点击 Submit 按钮。提交成功后,会在LDAP中建立一个用户。
- 由于使用QoS需要同步用户到Slurm。请通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会在Slurm中建立一个与LDAP中同名的用户并分配到对应的组。
sacctmgr add user <UserName> Account=<GroupName>
- 新建的用户提交作业方式如下:
- 登录LiCO Web界面,点击 Submit Job,通过作业模板提交。
- 通过SSH工具登录管理节点,使用sbatch,salloc等命令提交。
2.2 调整用户分组
- 用管理员账号登录LiCO Web界面。
- 进入 User Management > Users。
- 点击需要调整的用户所在行的 Action > Edit。
- 在弹出框中,选择需要调整到的用户分组。
- 点击 Submit 按钮。提交成功后,会在LDAP中修改用户分组。
- 由于使用QoS需要同步用户到Slurm。请通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会在Slurm中调整用户的分组。
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 删除用户
- 用管理员账号登录LiCO Web界面。
- 进入 User Management > Users。
- 点击需要删除用户所在行的 Action > Delete。
- 在弹出框中,点击 Submit 按钮。提交成功后,会在LDAP中删除用户。
- 由于使用QoS需要同步用户到Slurm。请通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会在Slurm中删除对应的用户。
sacctmgr delete user <UserName>
3. 队列
队列是指Slurm调度器中的Partition,系统管理员可以通过LiCO Web界面来进行基本的队列管理。 Note: 由于作业相关的限制条件均由QoS来配置,所以不建议使用界面来修改队列的Max Time值。
3.1 新增队列
- 用管理员账号登录LiCO Web界面。
- 进入 Settings > Scheduler。
- 点击表格左上方的 Create 按钮。
- 在弹出框中,将需要新增的队列信息填写入对应的输入框。
- 点击 Submit 按钮。提交成功后,会在Slurm中建立Partition。
- 如需要为队列设置资源限制(QoS),请参考4.3 为队列设置QoS来操作。
3.2 调整队列
- 用管理员账号登录LiCO Web界面。
- 进入 Settings > Scheduler。
- 点击需要调整的队列所在行的 Action > Edit。
- 在弹出框中,修改需要调整的队列信息。
- 点击 Submit 按钮。提交成功后,会修改Slurm中对应的Partition。
- 如需要为队列设置资源限制(QoS),请参考4.3 为队列设置QoS来操作。
4. QoS
QoS是Slurm提供的用来定义集群计算资源限制规则的方法。 管理员可以通过Slurm命令来动态的调整QoS,来实现对集群的运维。 为了使QoS规则生效,需要通过与队列(Parition),用户组(Account),用户(User)建立关系。常见的QoS配置有: - 用来限制资源及运行时间的。这类QoS常与队列建立关联。 - 用来限制作业数量的。这类QoS常与用户组建立关联。 使用上面两类QoS配置基本可以满足在绝大部分资源限制需求,并可以使用命令行调整QoS来满足运维需求。 Note: LiCO当前版本不支持通过Web界面对Slurm的QoS进行设置,需要通过命令行完成。
4.1 新增QoS
- 通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会添加新的QoS规则。
sacctmgr add qos <qosName> [Options]
Options的具体用法请参考Slurm官方文档。下面是常见的QoS配置举例: - 限制每个用户最多使用128核,提交超过限制则报错,无运行时间限制。
sacctmgr add qos cpu_xl MaxTRESPerUser=cpu=128 Flags=DenyOnLimit
- 限制每个用户最多使用64核,提交超过限制则报错,最长运行时间为30天。
sacctmgr add qos cpu_l MaxTRESPerUser=cpu=64 Flags=DenyOnLimit MaxWall=30-00:00:00
- 限制每个用户最多使用4个GPU及2个节点,提交超过限制则报错。
sacctmgr add qos gpu_m MaxTRESPerUser=gres/gpu=4,node=2 Flags=DenyOnLimit
- 限制每个用户最多使用2个GPU及10个核,提交超过限制则报错。
sacctmgr add qos geforce_m MaxTRESPerUser=gres/gpu=2,cpu=10 Flags=DenyOnLimit
Note: 如需要取消某个资源上的限制,可设置为-1。 - 运行如下命令,可以查看系统中的QoS。
sacctmgr list qos
4.2 调整QoS
- 通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,并按 y, 确认更改。该操作会添加新的QoS规则。
sacctmgr modify qos where Name=<qosName> set [Options]
Options的使用方法与新增QoS命令相同,具体用法请参考Slurm官方文档。
4.3 设置QoS与队列的关联
- 通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,来编辑Slurm的配置文件:
vi /etc/slurm/slurm.conf
- 在文件的尾部,有Partition的定义,可以修改QOS部分来调整队列的关联QoS,如没有此部分可以增加。 如果该Partition没有限制,可以删除QOS部分。样例如下:
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与用户组的关联
- 通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,,并按 y, 确认更改。该操作会设置用户组与QoS的关联:
sacctmgr modify account where Account=<GroupName> set QOS=<qosName>
- 系统默认的QOS为normal,如果想取消某个用户组的限制,可将QoS设置为normal。
4.5 删除QoS
- 删除QoS前,请确保相关联的关系已经解除。
- 通过SSH工具,用root账号登录管理节点Console。
- 运行如下命令,,并按 y, 确认更改。该操作会设置用户组与QoS的关联:
sacctmgr delete qos where <qosName>