Мой кеш подкачки ноутбука Ubuntu на диск заморозил мою систему

2

Мой ноутбук - Thinkpad x220, 4G RAM, жесткий диск - 7200 об / мин, установлен с Ubuntu 12.04, используя рабочий стол Unity.

Когда я открываю затмение и хром, они съедают около 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, и в какой-то статье говорилось, что когда памяти недостаточно, система освобождает кэш и использует его в качестве памяти. Но мне кажется, что кеш никогда не освобождается. Когда системе не хватает памяти ( но на самом деле у меня достаточно памяти, часть памяти просто используется для кеширования ), она не будет использовать кеш, вместо этого она подкачает память непосредственно на диск, что приведет к зависанию.

Как я могу избежать этого?

Уменьшение кешируемой памяти?

jiluo
источник
Я не думаю, что ваш диагноз правильный. Ваше замораживание, вероятно, не имеет ничего общего с использованием памяти. В любом случае, уменьшение подкачки приводит к тому, что система меняет местами меньше , а значит, меньше памяти будет свободно. (Система меняет место, чтобы освободить физическую память.) А уменьшение кеша просто означает больший доступ к диску. (Цель кэша - избежать доступа к диску.)
Дэвид Шварц
Я испытываю ту же самую ситуацию - использую ноутбук Dell Precision M4500 с 4 ГБ памяти. После запуска Eclipse, MySQL Server, 4 tabs in Chrome, Skype and Tomcat with GWT applicationостается только около 300 МБ при запуске free -m. Когда я начинаю перестраивать приложение GWT (это занимает до 1 ГБ ОЗУ, когда достаточно ОЗУ), система зависает (мышь не двигается и т. Д.) И не восстанавливается - мне просто нужно перезагрузить ноутбук. Однако, когда я освобождаю достаточно оперативной памяти, восстановление приложения GWT проходит нормально. @ Дэвид, не могли бы вы посоветовать, как я могу исследовать проблему? Заранее спасибо
Юрий Наконечный
@ Дэвид или лучше задать отдельный вопрос?
Юрий Наконечный
@Yura: Я бы посоветовал тебе сделать свой вопрос.
Дэвид Шварц
Если у кого-то есть идеи, пожалуйста, посмотрите также на эту похожую проблему: superuser.com/questions/615453/…
Юрий Наконечный

Ответы:

0

Если вам нужно больше свободной памяти, вы можете получить ее, установив vm.min_free_kbytes. Например, если вы хотите, чтобы система тратила 256 МБ памяти, используйте эту команду:

sysctl -w vm.min_free_kbytes=262144

Теперь система будет свободна на 256 МБ и будет иметь на 256 МБ меньше памяти для работы. Это ухудшит производительность, но уменьшит кэш, как вы и просили.

Но я думаю, что вы упускаете важный момент - свободная память не лучше, чем память, которая вообще не установлена ​​в компьютере. Ни один из них не помогает компьютеру работать лучше.

Вы должны восстановить все настройки по умолчанию и работать над вашей реальной проблемой - то, что ваш компьютер зависает.

Дэвид Шварц
источник