为什么在 Slurm 中重复调用 squeue 会受到反对?

E. *_*ice 6 cluster-computing sungridengine lsf slurm

为什么不建议squeue循环运行以避免 Slurm 过载,但bjobsLSF 或qstatSGE 的工具没有提到此类限制?

手册squeue状态:

表现

执行 squeue 会向 slurmctld 发送远程过程调用。如果来自 squeue 或其他 Slurm 客户端命令的足够多的调用(将远程过程调用发送到 slurmctld 守护程序)一次传入,则可能会导致 slurmctld 守护程序的性能下降,甚至可能导致拒绝服务。

不要运行 squeue 或其他从 shell 脚本或其他程序中的循环向 slurmctld 发送远程过程调用的 Slurm 客户端命令。确保程序将对 squeue 的调用限制为您尝试收集的信息所需的最低限度。

据我了解,这不赞成使用例如watch squeue。此类警告常见于特定站点的文档中,例如此处

虽然 squeue 是查询作业和队列状态的便捷命令,但请注意不要发出过多的命令,例如作业提交后每五秒左右使用脚本调用一次作业状态查询。

相比之下,我在其他引擎上找不到类似工具的警告,例如qstatbjobs。我看到人们以重复的方式使用所有这些工具,没有区别,例如这里用于 squeue,这里用于 bjob​​s。

上面引用的 Slurm 文档提到了 RPC,它是一种与其他引擎不同的方式吗?Slurm 和其他网格引擎之间是否存在架构差异,导致查询所有作业的状态成本更高?

dam*_*ois 3

实际上,对运行速度太快的担忧squeue往往更多地来自集群管理员而不是开发人员。在这种特殊情况下,查看文档特定部分的提交消息,我们了解到它实际上是由 SchedMD 的客户请求的,因此很可能是运行生产集群的实体。

该建议的重要性随着集群规模和工作流动性的增加而增加。在平均每天运行 5-6 个作业的 10 节点集群上,您会发现有十几个用户向 slurm 控制器发送了许多squeue请求。但在 4000 个节点、10000 个用户、每天 10k 个作业上,您可能会以明显的方式干扰 Slurm 性能。

我发现至少有一个网站qstat根据缓存信息使用速率限制版本覆盖了该命令。

从技术角度来看,RPC 是大多数替代方案所使用的。