目录
很多LSF用户都曾经遇到过这样的问题:某些作业运行时占用了大量内存,导致计算节点运行缓慢,甚至引发OOM(Out-Of-Memory)和系统宕机。
LSF在作业调度时,会根据作业指定的内存需求(bsub -R "rusage[mem=...]")进行节点选择,并进行内部记录,将执行节点的可用内存记为减掉rusage预留内存之后的值。LSF调度下一个作业时,会根据该节点新的内存值,决定是否分配作业到该节点执行。
理论上,只要每个作业都指定rusage参数,并且作业实际占用内存都不超过rusage指定值,就应该不会发生内存OOM的情况。但在实际中,用户往往不能准确估算作业需要的最大内存,因此指定的rusage常常不准确。用户甚至可能不指定rusage参数。还有些用户通过bsub提交一个gnome-terminal作业来启动一个终端,再在这个终端里直接运行应用程序,绕开了LSF。这些情况都会导致LSF无法控制和预测作业资源消耗,在极端情况下,就会发生OOM和系统宕机。
提交作业时指定rusage可以在一定程度上避免OOM的发生,如果结合LSF的memory limit设置(后面专题介绍),则可以进一步降低OOM的概率,但是还不能彻底解决这个问题,其主要原因在于很难做到让全部作业都指定rusage,并且指定的预留内存一定小于实际占用内存。
LSF为我们提供了一种机制,可以对计算节点的loadSched和loadStop进行设置,这样能够大大降低OOM和系统宕机风险。本文介绍有关设置,并通过示例进行讲解。
配置介绍
在lsb.hosts里增加一列,指定负载指标的loadSched和loadStop阈值。例如:为某计算节点设置其mem负载的loadSched/loadStop配置为5120/2048,生效后有如下行为:
- 当计算节点的可用内存低于5120MB时,LSF将该计算节点关闭(bhosts将显示该节点状态为closed_Busy),阻止新作业分配到这个计算节点上。

文章讲述了LSF中的内存管理问题,特别是如何通过设置loadSched和loadStop阈值来避免因内存溢出(OOM)和系统宕机。作者详细介绍了配置方法,并通过示例展示了如何在实际环境中应用这些设置来有效控制资源消耗。
:loadSched和loadStop介绍&spm=1001.2101.3001.5002&articleId=135872866&d=1&t=3&u=1c17f8cba43b48358dbfbc991aa424dd)
779

被折叠的 条评论
为什么被折叠?



