Как очистить буферную и кэш-память в Linux

очистить кэш память в Linux

Операционная система Linux предоставляет своим пользователям достаточно эффективный механизм управления памятью, обеспечивающий оптимальное использование памяти различными программами и процессами. Но бывают ситуации, когда несколько приложений разом занимают огромные куски оперативной памяти, а Вам в это же самое время может понадобиться очистить кэш.

Есть несколько способов очистки кэша, не прибивая при этом запущенные в системе процессы и в рамках этого поста я  хочу рассказать как можно очистить буфер памяти и очистить кэш в системе Linux.

Что такое буферная и кэш-память в Linux

В начале – немного теории. Буфер памяти – это область, временно хранящая данные, которые перемещаются из одной точки в другую. Буфер содержит метаданные, помогающие повысить производительность записи.

Кэш – это область временного хранения, где хранятся наиболее часто используемые данные. Они размещаются в кэше для более быстрого доступа и за счёт этого доступ к данным становится намного быстрее и производительность повышается, ведь данные извлекаются из кэшированной копии, а не из оригинала.

А точно ли надо чистить кэш?

Кэш предназначен для динамического заполнения и очистки. ОС Linux периодически самостоятельно очищает данные из кэша, дабы освободить память, которая требуется другим запущенным программам.

Очистка кэша может замедлять чтение с диска, так как система теперь будет вынуждена извлекать данные с диска вместо того, чтобы извлекать их из кэша. Правда всего на несколько секунд. Через некоторое время ресурсы, необходимые системе, снова будут загружены в кэш. Но тут есть один нюанс!

Очистка кэша и буфера – безопасный процесс, так как это не оказывает большого влияния на производительность системы. К сожалению, это не относится к производственным или корпоративным серверам, где это может привести к значительному снижению производительности сервиса.

Очистка дискового кэша Pagecache в Linux

Дисковый кэш, он же страничный кэш — это кэш, который использует ядром Linux при чтении и записи на диск. Чтобы очистить страничный кэш требуется выполнить вот такую команду:

sync; echo 1 > /proc/sys/vm/drop_caches

Здесь опция drop_caches очищает кэш без преждевременного завершения работы приложений в системе Linux.

Для очистки дискового кэша такая команда является наиболее безопасной что в корпоративной, что в производственной среде, поскольку «…echo 1 > ….» очищает только PageCache.

Выполните вот такую команду, чтобы убедится что кэш очищен:


free -h

очистить кэш в линуксе

Очистка кэш-памяти Dentries и Inodes в Linux

Dentries – это структура данных, представляющая из себя каталог (папку), которую можно использовать для создания или хранения кэш-памяти. Inodes – это часть файловой системы Linux, хранящая метаданные о файле (размер файла, местоположение, разрешения, права собственности и т.д.) Для того, чтобы очистить дентри и иноды в Линуксе, выполните следующую команду с правами root’a:

sync; echo 2 > /proc/sys/vm/drop_caches'

Очистка Pagecache, Dentries и Inodes в Linux

Так же есть возможность очистить разом дисковый кэш Pagecache, dentries и inodes, используя всего лишь одну команду. Вот она:

sync; echo 3 > /proc/sys/vm/drop_caches

В данном случае сначала выполняется команда sync, а затем команда echo.

  • sync — очищает буфер файловой системы;
  • echo записывает данные в drop_cache очищая кэш и не «убивая» при этом ни одного приложения/сервиса.

Важно! Эту команду не рекомендуется использовать в производственных средах, поскольку он очищает все – кэш страниц, дентри и иноды. Это может привести к проблемам с системой и спровоцировать скачок нагрузки.

Как очистить файл подкачки в Linux?

Подкачка swap – это область на жестком диске, которая используется, когда память RAM почти исчерпана или исчерпана. В некоторых ситуациях вам может потребоваться очистить пространство подкачки на вашем компьютере Linux.

Чтобы очистить файл подкачки, просто выполните следующую команду от имени root

swapoff -a && swapon -a

Вы можете очистить и кэш, и файл подкачки, объединив их в одну команду, как показано на рисунке.

echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf ‘%s’ ‘Ram-cache and Swap Cleared'

Не забудьте выполнить команду free -h до и после выполнения скрипта, чтобы убедиться, что оперативная память была освобождена.

# free -h

Оставьте комментарий