相关疑难解决方法(0)

在进程被 OOM 杀手 / cgroup 杀死之前接收信号

在我们的集群中,我们限制了我们的进程资源,例如内存 ( memory.limit_in_bytes)。

我认为,这最终也是通过 Linux 内核中的 OOM 杀手来处理的(通过阅读源代码看起来是这样)。

有没有办法在我的进程被杀死之前获得信号?(就像SGE 的-notify选项一样,它将在进程终止qsubSIGUSR1之前发送。)

我在/dev/mem_notify 这里读到,但我没有 - 现在还有别的东西吗?我也读过似乎有些相关。

我希望能够至少转储一个小的堆栈跟踪和其他一些有用的调试信息 - 但也许我什至可以通过释放一些内存来恢复。

我目前使用的一种解决方法是这个小脚本,它经常检查我是否接近 (95%) 限制,如果是,它会向进程发送一个SIGUSR1. 在 Bash 中,我在后台 ( cgroup-mem-limit-watcher.py &) 中启动此脚本,以便它监视同一 cgroup 中的其他 proc,并在父 Bash 进程终止时自动退出。

kill limit cgroups out-of-memory

15
推荐指数
3
解决办法
1万
查看次数

标签 统计

cgroups ×1

kill ×1

limit ×1

out-of-memory ×1