Ubuntu在内存不足时冻结

我的ubuntu服务器工作了一个月没有任何问题。 但是上周我开始使用需要更多内存的程序。 当可用内存大约为100MB时,系统完全冻结。 我不能输入任何东西,移动光标,从putty连接……根本没什么……但奇怪的是,硬盘仍在工作(闪烁)..我可以完全重现这个问题,它几乎每次都有自由记忆的时候出现100MB。 但我有交换文件,并在这个交换文件中有足够的可用空间..这是我的内存状态1秒后它冻结。

    每1.0秒免费-mh Mon Mar 19 17:05:33 2018                                     

               总可用的免费共享缓存/缓存
内存:11G 10G 115M 1.2G 1.5G 115M
交换:7.9G 2.4G 5.5G

这是我的linux内核

 Linux xxx 4.15.1-041501-generic#201802031831 SMP Sat Feb 3 18:32:13 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

这是我的ubuntu版本

没有LSB模块可用。
分销商ID:Ubuntu
描述:Ubuntu 17.10
发布:17.10
代号:巧妙

这是我的swappines,overcommit_memory和overcommit_ratio配置

 vm.swappiness = 60
 vm.overcommit_memory = 0
 vm.overcommit_ratio = 50

这是我的硬件配置

主板:PRIME B350-PLUS
 CPU:AMD Ryzen 7 1700八核处理器
内存:4GB + 8GB DDR4
硬盘:三星960 evo 250GB

当然,我可以将内存升级到16GB,但我仍然希望系统稳定。 有谁知道什么可能是错的?

我相信这是与此问题相同的问题,即使您已启用交换: https : //unix.stackexchange.com/q/373312/306023

基本上,内核(或kswapd0)驱逐每个活动进程的代码(可执行)页面以释放更多RAM,因此在进程恢复执行时每次上下文切换时,需要将其从磁盘重新读入内存,然后才能它恢复执行。

这需要每秒发生这么多次,再加上磁盘比RAM慢,操作系统被视为有效冻结。 这就好像RAM暂时被磁盘取代一样,所有这一切都是因为内核犯了错误, 驱逐正在运行的进程的文件支持的可执行页面,而不仅仅是不活动的可执行页面。

如果你想尝试看看如果内核没有驱逐那些会发生什么,你可以使用这个补丁重新编译内核,如本问题所示。 应该发生的是,操作系统现在应该冻结最多1秒而不是分钟(或永久),并且应该几乎没有磁盘抖动。