Создание системного кеша tar

Моя ситуация довольно проста: я сделал резервную копию некоторых моих документов и поместил их в 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 Есть ли способ настроить настройки, чтобы мой кеш очищался чаще? Или это просто то, с чем мне нужно жить?

1
задан 13 April 2017 в 15:25

2 ответа

Использование предобработки памяти preametching, например preload, является наилучшим возможным решением, которое я нашел. Он делает то же самое, что и механизм предварительной выборки MS Windows.

С сайта предварительной загрузки:

preload - это адаптивный демон readahead. Он контролирует приложения, которые запускаются пользователями, и анализируя эти данные, предсказывает, какие приложения пользователи могут запускать, и извлекает эти двоичные файлы и их зависимости в память для более быстрого запуска.

Предварительная загрузка - это наверняка в 12.04 default repo, поэтому

sudo apt-get install preload

И все. Preload узнает, какие приложения вы используете, и позаботьтесь о том, чтобы заполнить кеш с помощью правильных файлов.

Я использовал его на жестком диске и SSD-ПК с большим эффектом.

2
ответ дан 24 May 2018 в 20:05
  • 1
    Даже при установленной предварительной загрузке большие файловые операции по-прежнему оказывают значительное влияние на оперативность и интерактивность системы. Это определенно улучшение, но не полное решение (к сожалению, ни один из методов, которые в настоящее время не изложены в ответах). – Glutanimate 11 October 2013 в 10:26

Вы можете вручную освободить кеш памяти следующей простой командой:

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 будет запускать эту команду каждый час и очистит кэш системной памяти.

1
ответ дан 24 May 2018 в 20:05

Другие вопросы по тегам:

Похожие вопросы: