---
title: 故障模式库
description: "Slurm典型问题如下，其他问题请参见https://slurm.schedmd.com/troubleshoot.html(https://slurm.schedmd.com/troubleshoot.html)。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/instg-osc/kunpengslurm_03_0028.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/instg-osc/kunpengslurm_03_0028.html
indexId: 4a1a0ad475b762fd781e481618d9e3a3b8c5dc581f58d928d7e27eb6c81dfcd468
---
# 故障模式库

Slurm典型问题如下，其他问题请参见https://slurm.schedmd.com/troubleshoot.html(https://slurm.schedmd.com/troubleshoot.html)。

#### 作业未被调度

作业是否被调度取决于Slurm使用的调度器，可以执行 "scontrol show config | grep SchedulerType" 来查询调度器。执行“scontrol show job”可以查询作业优先级。

如果调度器是内置的，作业会按照给定分区的提交顺序执行。即使有可以立即被用来启动作业的资源，也会确保先前提交的作业都完成后，才用来启动新的作业。

如果调度器是回填的，作业通常会按照给定分区的提交顺序执行，但有一种情况例外，如果晚提交的作业比早提交的作业先执行不会影响早提交作业的预期执行时间，那么晚提交作业将会较早启动。为了使回填调度机制有效，需要给用户作业设置合理的时间限制。如果不指定作业的时间限制，那么所有作业默认被设置为与分区关联的时间限制，并且回填计划作业的能力将受到限制。回填调度器不会改变作业调度中节点的分配方案，因此指定节点的作业将会显著降低回填调度的有效性。有关回填的更多内容请参见https://slurm.schedmd.com/faq.html#backfill(https://slurm.schedmd.com/faq.html#backfill)。


#### 组网和配置问题

1. 检查控制器和slurmd日志文件（slurm.conf文件中的SlurmctldLog和SlurmdLog）以了解故障原因。
2. 在出现问题的节点上检查slurm.conf和凭证文件是否一致。
3. 如果这是某用户特定的问题，请检查用户是否已在控制节点和计算节点上配置。用户不需要能够登录，但他的用户ID必须存在。
4. 检查所有节点上是否存在兼容的Slurm版本（执行“sinfo-V”或“rpm-qa|grep slurm”）。Slurm版本号包含三个以句点分隔的数字，它们同时表示主要的Slurm版本和维护版本级别。前两个部分组合在一起表示主要版本，并匹配该主要版本的年份和月份。版本中的第三个数字表示特定的维护级别：年。月.maintenance-release（例如17.11.5是主要的Slurm版本17.11，维护版本5）。因此，版本17.11.x最初于2017年11月发布。Slurm守护进程将支持以前两个主要版本的RPC和状态文件（例如，版本17.11.x的SlurmDBD将支持版本为17.11.x、17.02.x或16.05.x的slurmctld守护进程和命令）。


#### 节点状态变为“DOWN”

1. 执行“scontrol show node<name>”，可以查询到节点被关闭的原因和关闭时间。如果与slurm.conf文件中指定的参数相比，磁盘空间、内存空间等不足，则需要修复节点或更改slurm.conf。
2. 如果查询到原因是“Not responding”，执行“ping<address>”检查控制节点和DOWN节点之间的通信，来确保slurm.conf中配置的NodeAddr的值正确。如果ping失败，则修复slurm.conf中的网络或地址。
3. 登录到DOWN节点，执行命令“ps-el|grep slurmd”检查slurmd守护进程是否正在运行。如果slurmd未运行，以root用户执行“/etc/init.d/slurm start”命令重启。检查日志文件（slurm.conf文件中的SlurmdLog）查看失败原因。可以在想要查询的节点上执行“scontrol show slurmd”命令来获取正在运行的slurmd守护进程状态。检查“Last slurmctld msg time”的值来确定slurmctld是否能够与slurmd通信。
4. 如果slurmd正在运行但没有响应（这种情况非常少见），则终止并重启它（以root用户身份使用命令“/etc/init.d/slurm stop”，然后使用命令/etc/init.d/slurm start）
5. 如果仍然没有响应，请重试以排除组网和配置问题。
6. 如果仍然没有响应，增加调试消息的详细程度（在slurm.conf文件中增加SlurmdDebug）并重启，再次检查日志文件以了解失败原因。
7. 如果仍然没有响应且没有关于故障模式的指示，则在不保留状态下重启（以root用户身份使用命令“/etc/init.d/slurm stop”，然后使用命令/etc/init.d/slurm startclean），注意在不保留状态下重启，该节点上的所有作业和其他状态信息都将丢失。
