加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 在“OOM Killer”之后,是否有“Resurrector”?

发布时间:2020-12-14 01:13:36 所属栏目:Linux 来源:网络整理
导读:据我所知,Linux上有一个称为“OOM Killer”的内核功能.当OOM(Out-Of-Memory)条件消退时,是否存在“Process Resurrector”之类的东西? 我知道这种功能很难实现各种各样的原因,但有什么东西可以接近它吗? 编辑:示例:“Resurrector”将保留一块内存,用于存
据我所知,Linux上有一个称为“OOM Killer”的内核功能.当OOM(Out-Of-Memory)条件消退时,是否存在“Process Resurrector”之类的东西?

我知道这种功能很难实现各种各样的原因,但有什么东西可以接近它吗?

编辑:示例:“Resurrector”将保留一块内存,用于存储有限的一组过程信息(例如命令行,环境等)(即不是整个过程代码和数据!).一旦OOM条件被清除,“Resurrector”就可以通过列表并“恢复”某些进程.

从我收集到现在,似乎没有类似于我要求的功能.

解决方法

没有.一旦OOM杀手杀死了一个进程,它已经死了.您可以重新启动它(资源允许),如果它是由系统管理的(可能是通过inittab),它可能会以这种方式重新启动.

编辑:作为一个思想实验,想想一个过程的复活意味着什么.即使你可以存储整个进程状态,你也不会想要,因为被杀死的进程可能是内存不足情况的原因.

所以你可能应该做的最好的事情就是存储它的启动状态(命令行等).但这也不好,因为这可能是为什么系统首先耗尽内存!

此外,如果你以这种方式复活过程,那就不知道会出现什么问题.如果该过程控制硬件怎么办?如果过程控制不应该多次运行怎么办?如果它连接到不再存在的tty(因为sshd是其中一个被杀死的进程)会怎么样?

在系统无法察觉的过程中存在大量的上下文.唯一明智的事情是内核做的事情:杀死傻逼然后继续.

我想你可以想象一个hibernate-the-process-to-disk策略,但鉴于我们内存不足(包括交换),这意味着要么预先保留一些磁盘空间,要么决定为此分配磁盘空间.飞.任何一种策略都可能无法处理相关过程的大小.

简而言之:不,你不能从OOM杀手那里回来.这是一个杀手,你只需要处理它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读