我希望文本终端保持响应,即使任何恶意应用程序试图分配整个 RAM。
终端的子进程也应该被允许使用这个保留的 RAM。
可以为进程及其子进程保留 RAM 吗?
答案1
Linux 内核对照组就是您要找的。使用 cgroups,您可以限制某些进程可以使用的资源量,包括内存。因此,对于您的情况,您将创建至少 2 个 cgroup。一个将限制系统上所有进程的内存访问量,大约为总 RAM 的 90%。然后第二个将可以访问所有 RAM。您可以将终端进程放在第二个 cgroup 中。网络上有很多资源介绍如何配置您的 cgroups,这在一定程度上取决于您的特定发行版和内核版本。
另一个更简单的选择是禁用机器上的交换。您观察到的“无响应”是您的操作系统正在使用交换空间。禁用它时,oom_killer 将终止占用所有内存的进程,这样系统就不会出现挂起的情况。