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


2

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

当我打开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

我搜索了谷歌,有些文章说,当内存不足时,系统会 释放缓存,并将其用作内存。但在我看来,缓存永远不会被释放。当系统缺乏记忆时( 但实际上我有足够的内存,一些内存只用于缓存 ),它不会使用缓存,而是将内存直接交换到磁盘,导致冻结。

我怎么能避免这个?

减少缓存内存?


我不认为你的诊断是正确的。你的冻结可能与内存使用无关。无论如何,减少交换会导致系统交换 , 意思是 记忆将是免费的。 (系统交换以使物理内存空闲。)减少缓存只意味着更多的磁盘访问。 (缓存的目的是避免磁盘访问。)
David Schwartz

我遇到了同样的情况 - 运行配备4GB内存的Dell Precision M4500笔记本电脑。发射后 Eclipse, MySQL Server, 4 tabs in Chrome, Skype and Tomcat with GWT application 我跑的时候只剩下大约300 MB free -m。当我开始重建GWT应用程序(当有足够的RAM时,这需要高达1 GB的RAM)系统冻结(没有鼠标移动等)并且无法恢复 - 我只需要重新启动我的笔记本电脑。但是,当我释放足够的RAM时,GWT应用程序重建通过正常。 @David你能告诉我如何调查这个问题?提前致谢
Yura

@David还是更好地提出单独的问题?
Yura

@Yura:我建议你提出自己的问题。
David Schwartz

如果有人有想法,请同时看看这个类似的问题: superuser.com/questions/615453/...
Yura

Answers:


0

如果您想要更多无内存,可以通过设置获得 vm.min_free_kbytes。例如,如果您希望系统浪费256MB内存,请使用以下命令:

sysctl -w vm.min_free_kbytes=262144

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

但我认为你错过了一个重要的观点 - 免费内存并不比没有安装在计算机中的内存更好。它们都不能帮助计算机更好地运行。

您应该将所有设置恢复为默认值并处理您的实际问题 - 您的计算机正在冻结。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.