我可以访问一个研究 HPC 集群,该集群的配置是,如果您的作业试图使用超过节点可用内存的内存,则节点会崩溃并自动重启。这似乎是常见的做法,例如参见https://www.osc.edu/documentation/knowledge_base/out_of_memory_oom_or_excessive_memory_usage
为什么要这样配置,而不是配置为终止需要太多内存的进程?在这两种情况下,您都会失去工作,但后者似乎对整个集群更有利,因为节点可以更快地重新使用。或者在这种情况下操作系统无法保证恢复内存?
答案1
重新启动节点可确保在分配下一个作业之前节点正常工作。此外,当您运行内存不足的节点并开始交换时,它会变慢并可能变得无响应。在这种情况下,他们可能会使用 IPMI 之类的东西来对节点进行电源循环。
答案2
根据您所描述的环境以及通过您提供的链接可以找到的一些信息,听起来您使用的集群被配置成无盘或无状态系统,这意味着整个操作系统是从远程存储的操作系统映像加载到内存中的。
确保在多个节点上正确终止并行作业可能是一个复杂的过程,并且确保正确完成终止和清理通常比简单地重新启动节点花费更多时间。在开始作业之前使节点处于干净状态是确保集群最高性能的必要条件。
以这种方式配置节点的具体原因还取决于集群上采用的配置和资源管理系统