我的 Ubuntu 笔记本电脑将缓存交换到磁盘,导致系统冻结

我的 Ubuntu 笔记本电脑将缓存交换到磁盘,导致系统冻结

我的笔记本电脑是Thinkpad x220,4G内存,硬盘是7200rpm,安装了Ubuntu 12.04,使用Unity桌面。

当我打开 eclipse 和 chrome 时,它​​们占用了大约 2G 内存。结果如下free -m

             total       used       free     shared    buffers     cached
Mem:          3841       3301        540          0         10        956
-/+ buffers/cache:       2334       1507
Swap:         8187        306       7881

结果如下top

 Mem:   3934188k total,  3540508k used,   393680k free,    45680k buffers
 Swap:  8384508k total,   313512k used,  8070996k free,  1078888k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                       
 5552 martin    20   0 4249m 388m 6560 S    0 10.1   2:46.28 java                                                                       
 3369 martin    20   0 2548m 182m  32m R    1  4.7  29:19.64 chrome                                                                     
 3406 martin    20   0 1000m 155m  16m S    0  4.1   4:18.97 chrome                                                                     
 2736 martin    20   0 1582m 106m  29m S    1  2.8  13:10.27 compiz                                                                     
 3704 martin    20   0  945m  85m 8396 S    0  2.2   0:15.60 chrome                                                                     
11047 martin    20   0  926m  82m  23m S    0  2.2   0:06.52 chrome                                                                     
11443 martin    20   0  915m  72m  21m S    0  1.9   0:46.08 chrome                                                                     
 4280 martin    20   0  822m  66m  12m S    4  1.7  14:59.41 chrome

大约 10 分钟后,我的可用内存只剩下 100M+,然后系统开始将内存交换到磁盘,这导致我的计算机完全冻结,交换完成后才会恢复。

我已经有了vm.swappiness = 10

我搜索了 google,有些文章说当内存不够时,系统会释放缓存,并将其用作内存。但在我看来,缓存从未被释放过。当系统内存不足时(但实际上我有足够的内存,一些内存只是用于缓存),它不会使用缓存,而是直接将内存交换到磁盘,从而导致死机。

我该如何避免这种情况?

减少缓存内存?

答案1

如果你想要释放更多的内存,可以通过设置来获得vm.min_free_kbytes。例如,如果你想让系统浪费 256MB 内存,请使用以下命令:

sysctl -w vm.min_free_kbytes=262144

系统现在将保留 256MB 的空闲空间,并且可用的内存减少了 256MB。这将使性能变差,但会使缓存变小,正如您所要求的那样。

但我认为你忽略了一个重要的观点——空闲内存并不比计算机中根本没有安装的内存好。它们都不能帮助计算机提高性能。

您应该将所有设置恢复为默认设置,然后解决您的实际问题——您的计算机死机了。

相关内容