Как очистить или отключить кэш памяти?

49

После запуска системы через несколько минут мой кэш памяти заполняется и начинает использовать своп. Вот скриншот / proc / meminfo.

Память

Тем не менее, если я смогу отключить этот процесс / очистить кэш один раз после этого, я думаю, что моя система в некоторой степени ускорится. Поправь меня, если я здесь не прав.

Я также попытался очистить память Bleachbit, но, похоже, он не очищает кэш памяти должным образом. Также функция пока находится в экспериментальной стадии.

блебит бит памяти

Здесь уже был опубликован похожий вопрос: как отключить кэш предварительной выборки? , но это касалось Ubuntu Server, а также ответы включали ручные настройки и т. д.

Итак, я хочу знать, есть ли какое-нибудь программное обеспечение для отключения / включения Memory Cache для Ubuntu 12.04.

Бхарадвад Сригирираджу
источник
Вы уверены, что это решит вашу проблему? Память не заполняется без причины. У меня также была проблема, что моя память заполнялась, и проследил ее обратно tracker-miner. После того, как я удалил все пакеты трекера, моя проблема ушла. У меня также есть 4 ГБ памяти, и 2 ГБ используются чахами, но я не испытываю никаких проблем.
Даниэль Куллманн
1
@danielkullmann: он имеет в виду кэшированную память, а не память, используемую приложениями ...
Иш
@izx Да, я знаю. Может статься, что он ищет решение не той проблемы. Ядро достаточно умен, чтобы не заполнять кэш-память, когда это необходимо программам. Вот почему я думаю, что его проблемы с памятью происходят от программы, которая использует слишком много памяти.
Даниэль Куллманн
@danielkullmann: Мне любопытно узнать, как вы проследили его до одного процесса, который поглощает всю эту память ... Есть ли какой-нибудь инструмент / команда для этого?
Бхарадвад Сригирираджу
Я просто использовал команду htop и отсортировал по использованию памяти.
Даниэль Куллманн

Ответы:

58

Примечание: Linux НЕ "ест" вашу оперативную память! Пожалуйста, посмотрите на отличный ответ Гейры ниже, чтобы понять, почему ...

После приведенного выше замечания, если вы все еще чувствуете, что «очистка» кеша может помочь, вы, безусловно, можете попробовать: это однострочная строка из терминала:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Нет простого способа отключить кеш, но вы можете добиться того же эффекта, чистя его так часто, как каждую минуту , если вы хотите:

  • Сделай это cron-работой
  • Нажмите Alt-F2, введите gksudo gedit /etc/crontabи добавьте эту строку внизу:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Это очищает каждые 15 минут. Вы можете установить 1 или 5 минут, если вы действительно хотите , изменив первый параметр на *или */5вместо*/15

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

Ответ Гейры объясняет детали, но вкратце, вы получаете количество свободных мегабайт с:

free -m | sed -n -e '3p' | grep -Po "\d+$"

который на моем сервере командной строки 2 ГБ возвращает чрезвычайно здоровье 1835.

иш
источник
3
Ergh! Выбить кеш - это достаточно плохо, но сделать для этого cronjob? Я имею в виду, что это «решает» вопрос, так сказать, но это не делает его менее болезненным.
Рейд
@izx: хм ... так вот, как создать cronjob. Если я собираюсь периодически удалять кеш, не значит ли это, что я на самом деле замедляю работу системы? Если бы это было так, я думаю, что ваш ответ звучит скорее как теоретический ответ, чем ответ гейры. : p Хороший ответ Кстати ...
Bharadwaj Srigiriraju
1
@ForbiddenOverseer: я добавил это только потому, что вы хотели «отключить» кеш, и периодически удалять его - единственный способ сделать это. Моя заметка вверху (и ссылка geirha) ясно говорит о том, что кеш на самом деле ускоряет вашу систему большую часть времени, даже если он выглядит как «съедающий вашу оперативную память» - так что да, IMO, вы бы замедлили свою систему , но вы хотели попробовать это, поэтому я просто ответил на ваш вопрос вместо того, чтобы просто ворчать и говорить вам, что это плохая идея, и поэтому вы не должны этого делать! Я просто дал вам возможность экспериментировать ...: D
иш
1
Я использую Ubuntu Server 12.04 LTS в качестве VDS. Я пытаюсь подход, предусмотренный в этом ответе, но я постоянно получаю tee: /proc/sys/vm/drop_caches: Permission denied. Какие-нибудь советы?
Eimantas
44

Помогите! Линукс съел мою оперативную память!

www.linuxatemyram.com прекрасно объясняет это в форме часто задаваемых вопросов, а именно:

В чем дело?

Linux заимствует неиспользуемую память для кэширования диска. Похоже, у вас мало памяти, а у вас нет! Все в порядке!

Почему он это делает?

Кэширование диска делает систему намного быстрее! Нет минусов, кроме как сбивать с толку новичков. Это никак не отнимает память у приложений!

Что делать, если я хочу запустить больше приложений?

Если вашим приложениям требуется больше памяти, они просто возвращают часть, занятую дисковым кешем. Дисковый кеш всегда можно сразу вернуть приложениям! Вы не мало баранов!

Как узнать, сколько у меня свободного барана?

Чтобы узнать, сколько оперативной памяти могут использовать ваши приложения без замены, запустите free -m и посмотрите на столбец «available»:

$ free -m
              общее количество свободного общего доступного баффа / кэша доступно
Памятка: 1504 1491 13 0 855       792
Обмен: 2047 6 2041
Это твой ответ в мебибайтах.


Источник: как уже упоминалось, отличный www.linuxatemyram.com - пожалуйста, посетите для получения дополнительной информации.

geirha
источник
1
@geirha: Спасибо за ссылку ... Это было очень информативно, и мне понравились эксперименты, приведенные в конце !!
Бхарадвад Сригирираджу
@izx: tbh, мне трудно решить, принят ли ответ. Не говоря уже о том, что эта ссылка была на самом деле информативной во всех отношениях ...;)
Бхарадвадж Шригирираджу
@ForbiddenOverseer: см. Мой комментарий в моем ответе для подробного ответа - я дал вам краткую версию, почему вы не должны этого делать, но затем все равно ответил на ваш вопрос, давая вам возможность экспериментировать и испытать его на себе. Если вы не думаете, что очистка / удаление кэша помогает, просто не делайте этого больше :)
ish
@izx, мне было сложно сделать это для этого случая. Тем не менее, вы написали полезный текст по этому вопросу, так что, возможно, вы могли бы просто добавить URL к своему ответу, и мы удалили мой ответ?
гейра
Нет необходимости, ваша ссылка на отличный ресурс; Я просто включил некоторые части в ответ (с указанием авторства), так что теперь это вполне допустимая альтернатива (на самом деле лучший ответ с точки зрения публики!) Отличная работа, голосование одобрено - добро пожаловать в 5 тысяч!
Иш
4

Чтобы проверить текущее использование памяти

 watch -n 1 free -m

или же

 watch -n 1 cat /proc/meminfo

Освободить пространство

 sudo sysctl -w vm.drop_caches=3

ПРИМЕЧАНИЕ: это действие не сделает вашу систему быстрее и не повлияет на ее стабильность и производительность, оно просто очистит память, используемую ядром Linux на кешах.

или же

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

ПРИМЕЧАНИЕ. Вы можете использовать задания cron, чтобы запланировать выполнение указанных выше команд через определенные промежутки времени.

SilleBille
источник