有没有办法为某个进程保留一些 RAM,以防止其变得无响应?

有没有办法为某个进程保留一些 RAM,以防止其变得无响应?

我希望文本终端保持响应,即使任何恶意应用程序试图分配整个 RAM。

终端的子进程也应该被允许使用这个保留的 RAM。

可以为进程及其子进程保留 RAM 吗?

答案1

Linux 内核对照组就是您要找的。使用 cgroups,您可以限制某些进程可以使用的资源量,包括内存。因此,对于您的情况,您将创建至少 2 个 cgroup。一个将限制系统上所有进程的内存访问量,大约为总 RAM 的 90%。然后第二个将可以访问所有 RAM。您可以将终端进程放在第二个 cgroup 中。网络上有很多资源介绍如何配置您的 cgroups,这在一定程度上取决于您的特定发行版和内核版本。

另一个更简单的选择是禁用机器上的交换。您观察到的“无响应”是您的操作系统正在使用交换空间。禁用它时,oom_killer 将终止占用所有内存的进程,这样系统就不会出现挂起的情况。

相关内容