限制内存使用以防止交换

限制内存使用以防止交换

我有一个 SSD 和 8GB 内存,没有交换分区。我的正常使用从来不需要超过 3-4GB。但是我时不时地发现一些内存泄漏的程序仍然会冻结系统,使其立即无法使用。我注意到一个进程 kswapd 正在运行。

  1. 如果没有交换空间,kswapd 可能会做什么?我不希望系统进行交换,无论是交换分区还是交换文件。

在我的使用习惯中,我会将任何导致 RAM 满载的进程视为有害的,并且宁愿自动终止该进程,而不是进行交换。

  1. 有没有办法完全禁用交换(而不仅仅是减少交换)并强制内核终止占用 50% RAM 的进程?

答案1

请注意ps(在我的 Ubuntu 14.04.2 上)“kswapd”显示为:

root        39     2  0 Mar23 ?        00:03:27 [kswapd0]  

[]进程名称周围的“ ”表示这kswapd0是内核代码的一部分,为了系统方便,作为进程运行。

kswapd不仅管理交换,它还管理缓冲区、缓存、可用空间等之间的内存流。

没有交换空间将阻止交换。如果没有交换,当 RAM 占用者分配所有内存时,下一个请求 RAM 的进程(无论是否占用)将收到 OOM(内存不足)错误并被停止。请注意,被终止的不一定是内存占用者,而是第一个在没有 RAM(或没有大于请求的内存块)的情况下请求 RAM 的进程

相关内容