为什么主机状态为 closed_busy LSF还会派发任务去运行?
今天遇到了奇怪的问题:一台主机的状态为 closed_busy ,但发现LSF还会派发任务去运行。通过任务的历史信息看到LSF不停将任务派发到同一个主机,任务很快运行失败,变为PENDING状态,如此往复。
在LSF中发现当主机状态为 closed_busy时,LSF在主机上预留了1.9T内存,而主机总内存为2T,由于设置了loadSched为50G,因些当预留内存过多导致可调度内存小于50G时主机状态就会变为 closed_busy。
登录主机,发现主机CPU使用率、内存等都很正常;查看存储,发现 /tmp使用率为 100%,到此任务运行失败的原因明晰了,临时空间满了,导致任务的临时文件不能创建,因此任务不能运行。
但为什么主机状态为 closed_busy,LSF还会向主机派发任务呢?
仔细调查发现主机的状态并不是一直都是 closed_busy,而是在closed_busy和ok之间切换。当LSF派发的任务预留了大量内存时,会出现临界状态,即预留的内存导致可调度内存接近50GB,但当LSF把任务派发后,LSF根据新采集的内存数据发现可调度内存小于50GB,就会将主机状态设置为closed_busy;当任务由于临时空间使用率100%导致运行失败时,LSF会将预留内存去除,从而可调度内存大于50GB,主机状态变为ok,因此LSF又向主机派发任务,如果任务又预留大量内存,则会重复上面的过程。由于以上过程时间很短,因此会给人错觉,主机状态为 closed_busy,LSF还会向主机派发任务。
解决办法:1. 清理临时空间,增加监控避免临时空间枯竭;2. 另外还可以设置 EXIT_RATE,当任务失败率高时,即时通知管理员处理。