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
没有提到此类限制
forsqueue
状态:
演出
执行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
的东西来检查它们的依赖关系,那么就会出现服务降级。