我可以拒绝特定进程使用交换空间(并让它被杀死)吗?

我可以拒绝特定进程使用交换空间(并让它被杀死)吗?

在开发某些软件时,测试中的程序有时会占用所有内存,然后继续转入交换空间并开始破坏磁盘,导致响应速度可预见地下降,以至于我通常会切换到另一个终端来登录并手动终止进程。

我希望这个特定的进程在它开始占用交换空间之前被杀死,就像没有明天一样。我发现了一个 github 页面,其中讨论了使用看门狗杀死进程(事实上,已经完成) -https://github.com/rfjakob/earlyoom- 我可以稍微改变一下代码来找出并杀死这个特定的错误程序,但是如果我可以简单地拒绝指定进程使用交换空间并让它被杀死,那就太好了。我认为更尴尬的是,在正常情况下获得少量交换空间是可以的;只有当它想要消耗宇宙中的所有记忆时,它才需要杀戮。

答案1

我认为没有办法限制交换空间,除非你修改程序只请求不可交换内存,即使可能也可能是不切实际的。

然而你可以而且应该做的是限制进程可用的内存总量。您可以使用cgroups(新的一般方式),极限值设置限制,传统方式),或者暂停工具。

相关内容