Cluster computing 为什么重复的叫喊会让你愁眉不展?

Cluster computing 为什么重复的叫喊会让你愁眉不展?,cluster-computing,slurm,sungridengine,lsf,Cluster Computing,Slurm,Sungridengine,Lsf,为什么不建议在循环中运行squee,以避免Slurm过载,但LSF的bjobs工具或SGE的qstat没有提到此类限制 forsqueue状态: 演出 执行squee向slurmctld发送远程过程调用。如果来自SQUE或其他Slurm客户端命令的足够多的调用(用于向slurmctld守护程序发送远程过程调用)立即进入,则可能导致slurmctld守护程序的性能下降,可能导致拒绝服务 不要运行从shell脚本或其他程序中的循环向slurmctld发送远程过程调用的squeue或其他Slurm客户

为什么不建议在循环中运行
squee
,以避免Slurm过载,但LSF的
bjobs
工具或SGE的
qstat
没有提到此类限制

for
squeue
状态:

演出

执行squee向slurmctld发送远程过程调用。如果来自SQUE或其他Slurm客户端命令的足够多的调用(用于向slurmctld守护程序发送远程过程调用)立即进入,则可能导致slurmctld守护程序的性能下降,可能导致拒绝服务

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

据我所知,它不赞成使用例如
watch squeue
。此类警告通常出现在现场特定文件中,例如:

尽管squee是查询作业和队列状态的方便命令,但请注意不要过度发出该命令,例如,在提交作业后使用脚本每隔五秒钟左右调用一次作业状态查询

相比之下,对于其他发动机上的类似工具,例如发动机或发动机,我找不到此类警告。 我看到人们以重复的方式毫无区别地使用所有这些工具,例如squeue、bjobs


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

您是正确的,因为
squeue
不应以这种方式使用。加拿大的HPC资源还指出:

不要频繁地从脚本或程序运行sq或SQUE, e、 g.每隔几秒钟。响应squeue会向Slurm添加负载,并且 可能会干扰其性能或正确操作。查看电子邮件 下面的通知提供了一种更好的方式来了解您的工作何时开始 或结束

资料来源:

如您所见,加拿大的HPC资源建议在使用
sbatch
时使用电子邮件通知:

#SBATCH --mail-user=you@some.email.address
#SBATCH --mail-type=BEGIN
#SBATCH --mail-type=END
#SBATCH --mail-type=FAIL
#SBATCH --mail-type=REQUEUE
#SBATCH --mail-type=ALL
资料来源:


我曾经是SGE上的一个重度
qstat
用户,现在更喜欢电子邮件通知。我不需要主动监视作业状态,也不需要记录作业何时通过各种里程碑。

实际上,对于运行
squeue
过快的担忧往往更多地来自集群管理员,而不是开发人员。在本例中,查看文档中该特定部分的详细信息,我们了解到它实际上是由SchedMD的客户请求的,因此很可能是运行生产集群的实体

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

我看到至少有一个站点使用基于缓存信息的速率限制版本重写了
qstat
命令


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

每个服务都有其可扩展性限制。LSF有一个专用的查询守护进程,这很有帮助。但即便如此,也有局限性。e、 例如,如果集群中有数百万个作业,并且许多作业通过调用类似于
bjobs-uall-a | grep blah
的东西来检查它们的依赖关系,那么就会出现服务降级。