Моя ситуация довольно проста: я сделал резервную копию некоторых своих документов и поместил их на NAS, и, поскольку я предпочел перенести один большой файл вместо миллионов маленьких, я создал tar
tar cf backup/2013-07-12-pictures.tar Pictures
Мой каталог Pictures
содержит около 12 ГБ данных, и в результате мой кэш постоянно заполняется. Если я заархивирую еще несколько файлов (например, мои проекты, что угодно), это не займет много времени, и все мои 32 ГБ ОЗУ будут использованы:
sheldor:~$ free -g
total used free shared buffers cached
Mem: 31 31 0 0 0 27
-/+ buffers/cache: 2 28
Swap: 29 0 29
На данный момент, хотя мышь и система в целом ответственна, запуск программ (считывание с диска) занимает много времени. Буквально в возрасте: у меня есть SSD и запуск Chrome, который обычно занимает около 2 минут.
Теперь вы найдете все эти посты в интернете о том, что плохо очищать кеш и так далее. Здесь, на Спросите Ubuntu , вы тоже найдете такой пост , который спас мне жизнь, предоставив команду
sudo sync && sudo sysctl -w vm.drop_caches=3
Если вы прочитали комментарии, вы найдете для Пример этого здесь:
Это не проблема, так работает кеш страниц. Он будет сохранять данные в кеше как можно дольше, , но автоматически освобождает элементы, когда увеличивается нагрузка на память от других приложений. Очистка вручную не требуется. - Цезий 22 ноября 2011 года в 16:08
blockquote>Что? Моя система (Intel Core i7 3,50 ГГц × 8, 32 ГБ оперативной памяти, NVidia Gtx 590) была заморожена после простого tar. Я имею в виду, какое давление я должен оказать, прежде чем мой кэш будет освобожден автоматически?
Вопрос: Есть ли способ настроить параметры, чтобы мой кэш очищался чаще? Или мне просто с этим жить?
Я согласен, что обработка кеша в Linux далека от оптимальной. Фактически, во многих отношениях Linux все еще чувствует себя более оптимизированным для использования на сервере / рабочей станции, чем на рабочем столе. См. этот Q & amp; A для аналогичной проблемы с планированием CPU / IO.
С учетом сказанного, есть решения, которые могут облегчить проблему. Вы можете вручную очистить кеш или настроить cronjob, как указано в user197590 . Другой способ - отключить генерацию кэша для определенных приложений. Вы можете сделать это с помощью утилиты nocache
. На данный момент он доступен только в репозиториях 13.10 , но я смог установить пакет Saucy 12.04 без каких-либо проблем.
nocache
довольно прост в использовании. Вы добавляете его к любой команде, которую хотите выполнить без кэша, например :
nocache tar cf backup/2013-07-12-pictures.tar Pictures
Это не причинно-следственное решение, но оно может наиболее точно вылечить симптомы чрезмерного усердного кэширования.
Вы можете вручную освободить кеш памяти с помощью следующей простой команды:
sk@sk:~$ sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
Однако, если вы хотите заставить ОС Linux очищать кеш памяти через определенный интервал, просто добавьте команду на работу. Здесь я покажу вам, как.
Откройте свой терминал и введите следующую команду, чтобы создать файл с именем cacheclear.sh. Например, я создаю файл cacheclear.sh в моей директории / home:
sk@sk:~$ sudo vi /home/cacheclear.sh
Добавьте в файл cacheclear.sh следующие строки:
#!/bin/sh
sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
Сохраните и выйдите из файла. Теперь добавьте этот файл в корневой каталог:
sk@sk:~$ sudo crontab -e
Эта команда открывает корневой каталог.
Добавьте в конец следующую строку:
0 * * * * /home/cacheclear.sh
Сохраните и выйдите из файла. Когда вы закончите, задание cron будет запускать эту команду каждый час и очищать кэш системной памяти.
Использование предварительной выборки памяти deamon, такой как preload , является наилучшим возможным решением, которое я нашел. Он выполняет те же функции, что и механизм предварительной выборки в Windows.
С сайта предварительной загрузки :
предварительная загрузка - это адаптивный демон readahead. Он отслеживает приложения, которые запускают пользователи, и, анализируя эти данные, прогнозирует, какие приложения могут запускать пользователи, и извлекает эти двоичные файлы и их зависимости в память для более быстрого запуска.
blockquote>Предварительная загрузка наверняка в репо по умолчанию 12.04, так что
sudo apt-get install preload
И все. Preload узнает, какие приложения вы используете, и позаботится о том, чтобы заполнить кеш нужными файлами.
Я использовал его на HDD и SSD ПК с отличным эффектом.