Моя ситуация довольно проста: я сделал резервную копию некоторых моих документов и поместил их в NAS, и, поскольку я скорее переносил один большой файл вместо миллионов маленьких, я создал tar
tar cf backup/2013-07-12-pictures.tar Pictures
[d1 ] В моем каталоге 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 минут.
Теперь вы найдете все эти сообщения в Интернете о том, что плохо очистить кеш и так далее. Здесь, на Ask Ubuntu, вы найдете такое сообщение, которое спасло мою жизнь, предоставив команду
sudo sync && sudo sysctl -w vm.drop_caches=3
. Если вы прочитаете комментарии, вы найдете, например, это здесь:
Это не проблема, так работает кеш страниц. Он будет хранить кешированные файлы как можно дольше, но автоматически отпускает элементы, когда увеличивается давление в памяти других приложений. Очистить его вручную не нужно. - Цезий 22.11.2011 в 16:08Что? Моя система (Intel Core i7 3.50GHz × 8, 32 ГБ оперативной памяти, NVidia Gtx 590) была заморожена после простого tar.
32GB RAM Есть ли способ настроить настройки, чтобы мой кеш очищался чаще? Или это просто то, с чем мне нужно жить?
Использование предобработки памяти preametching, например preload, является наилучшим возможным решением, которое я нашел. Он делает то же самое, что и механизм предварительной выборки MS Windows.
С сайта предварительной загрузки:
preload - это адаптивный демон readahead. Он контролирует приложения, которые запускаются пользователями, и анализируя эти данные, предсказывает, какие приложения пользователи могут запускать, и извлекает эти двоичные файлы и их зависимости в память для более быстрого запуска.Предварительная загрузка - это наверняка в 12.04 default repo, поэтому
sudo apt-get install preload
И все. Preload узнает, какие приложения вы используете, и позаботьтесь о том, чтобы заполнить кеш с помощью правильных файлов.
Я использовал его на жестком диске и SSD-ПК с большим эффектом.
Вы можете вручную освободить кеш памяти следующей простой командой:
sk@sk:~$ sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
Однако, если вы хотите заставить ОС Linux очистить кеш памяти на определенный интервал, просто добавьте команда для задания cron. Здесь я покажу вам, как.
Откройте свой терминал и введите следующую команду, чтобы создать файл cacheclear.sh. Скажем, например, я создаю файл cacheclear.sh в каталоге my / home:
sk@sk:~$ sudo vi /home/cacheclear.sh
Добавьте следующие строки в файл cacheclear.sh:
#!/bin/sh
sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"
Сохраните и выйдите из файл. Теперь добавьте этот файл в корневой каталог crontab:
sk@sk:~$ sudo crontab -e
Эта команда открывает корневой crontab.
Добавьте следующую строку в конец:
0 * * * * /home/cacheclear.sh
[d7 ] Сохранить и выйти из файла. Как только вы закончите, задание cron будет запускать эту команду каждый час и очистит кэш системной памяти.