Быстрый сброс памяти в Puppy Linux и не только
В одной из посвященных Puppy Linux темах мы рассмотрели и разобрали одну важную проблему, с которой нередко приходится сталкиваться пользователям этой портативной системы – переполнение памяти при работе в браузерах. В таких случаях реально помогает, хотя и не решает кардинально проблемы очистка браузерного кэша, однако в Linux имеются и другие временные хранилища, которые могут быть очищены.
Системный кэш и буферная память
Как и в Windows, в Linux существует системный кэш, использующийся для обеспечения более быстрого доступа к данным. Очистка кэша может привести к кратковременному снижению производительности, с другой стороны, она может предотвратить переполнение памяти и зависание системы.
Буферной памятью в Linux называют область памяти, в которой хранятся перемещаемые между приложениями и/или устройствами данные, например, данные обмена между CPU и RAM, между RAM и физическим диском (флешкой), а также данные, передаваемые от одной запущенной в системе программы к другой.
Существует несколько типов буферной памяти – страничный, дисковый и кэш ядра. В Linux буферная память обычно контролируется ядром, которое самостоятельно решает, когда хранящиеся данные могут быть удалены, но в некоторых случаях они могут быть очищены в принудительном порядке пользователем.
Очистка дискового кэша
Для очистки дискового кэша в Puppy Linux вы можете использовать следующую команду, исключающую завершение работы запущенных приложений:
sync; echo 1 > /proc/sys/vm/drop_caches
Убедиться, что кэш очищен можно командой free или free -h, выполнив ее до команды очистки дискового кэша и после нее.
В случае с работающей в ОЗУ Puppy Linux разница в использовании памяти будет небольшой, однако в системах, установленных традиционным образом на жесткий диск, она может быть весьма значительной.
Помимо дисковой, вы можете выполнить очистку кэша Dentries и Inodes – структуры каталогов и области файловой системы, в которых Linux хранит метаданные о файлах.
Команда очистки очень похожа и выглядит она следующим образом:
sync; echo 2 > /proc/sys/vm/drop_caches
Наконец, заменив в команде 2 на 3, можно очистить дисковый кэш, Dentries и Inodes одновременно.
Примечания:
- В серверных ОС использование третьего варианта команды может привести к сбою системы.
- Если команды выполняется от имени обычного пользователя, а не root как в Puppy Linux, команды очистки будут иметь синтаксис sudo sh -c echo 1 >/proc/sys/vm/drop_caches.
Создание скрипта
Чтобы не вводить каждый раз команды очистки памяти вручную в консоли, рекомендуем записать их в командный файл.
Создайте в текстовом редакторе новый файл и вставьте в него следующий код:
sync
echo 1 > /proc/sys/vm/drop_caches
Сохраните файл в каталоге /root, дав ему произвольное название и расширение .sh, например, clear-cache.sh.
Чтобы сделать скрипт исполняемым, откройте консоль в расположении root (Puppy Linux root открывается по умолчанию) и выполните команду:
chmod +x clear-cache.sh
После этого скрипт можно будет запускать простым по нему кликом.