我遇到以下情况 - 我有一台带有加密驱动器的远程电脑。如果电脑需要重新启动,我需要亲自在场输入解密密码,因为在加载操作系统之前我没有任何方法可以通过 ssh 访问它。
考虑到这一点,我使用 PC 来运行我的jupyter notebook
.唯一的问题是,有时,我最终会执行一段代码,它会快速消耗所有可用内存 - 32G,然后机器变得无响应,这就是我对其的访问。
我记得在大学时,编写了一个 C 程序,该程序在循环中自行启动 - 基本上是一个 RAM hog。该程序在耗尽所有可用内存并使 PC 崩溃之前被看门狗守护程序杀死。我可以做什么来实现这个目标?玩弄ulimit
?这似乎太简单了。
感谢 Artem 的建议,我找到了他提出的解决方案。看来earlyoom 可以解决问题。 https://www.reddit.com/r/linux/comments/d2nssy/a_userspace_outofmemory_killer_oomd_020_released/
答案1
我个人最喜欢的是earlyoom(Fedora 32 中默认包含并启用):https://github.com/rfjakob/earlyoom
否则您可以选择:
- 诺杭:https://github.com/hakavlad/nohang
- 奥姆德:https://github.com/facebookincubator/oomd
- 低内存监视器:https://gitlab.freedesktop.org/hadess/low-memory-monitor/
- psi-监视器:https://github.com/endlessm/eos-boot-helper/tree/master/psi-monitor
编辑2021-12-21:
- 使用 systemd 的现代发行版现在包含一个名为 的内置 OOM 杀手
systemd-oomd
,请查看man systemd-oomd
更多详细信息。