Операционная система Linux предоставляет своим пользователям достаточно эффективный механизм управления памятью, обеспечивающий оптимальное использование памяти различными программами и процессами. Но бывают ситуации, когда несколько приложений разом занимают огромные куски оперативной памяти, а Вам в это же самое время может понадобиться очистить кэш.
Есть несколько способов очистки кэша, не прибивая при этом запущенные в системе процессы и в рамках этого поста я хочу рассказать как можно очистить буфер памяти и очистить кэш в системе Linux.
Содержание
Что такое буферная и кэш-память в Linux
В начале – немного теории. Буфер памяти – это область, временно хранящая данные, которые перемещаются из одной точки в другую. Буфер содержит метаданные, помогающие повысить производительность записи.
Кэш – это область временного хранения, где хранятся наиболее часто используемые данные. Они размещаются в кэше для более быстрого доступа и за счёт этого доступ к данным становится намного быстрее и производительность повышается, ведь данные извлекаются из кэшированной копии, а не из оригинала.
А точно ли надо чистить кэш?
Кэш предназначен для динамического заполнения и очистки. ОС Linux периодически самостоятельно очищает данные из кэша, дабы освободить память, которая требуется другим запущенным программам.
Очистка кэша может замедлять чтение с диска, так как система теперь будет вынуждена извлекать данные с диска вместо того, чтобы извлекать их из кэша. Правда всего на несколько секунд. Через некоторое время ресурсы, необходимые системе, снова будут загружены в кэш. Но тут есть один нюанс!
Очистка кэша и буфера – безопасный процесс, так как это не оказывает большого влияния на производительность системы. К сожалению, это не относится к производственным или корпоративным серверам, где это может привести к значительному снижению производительности сервиса.
Очистка дискового кэша Pagecache в Linux
Дисковый кэш, он же страничный кэш — это кэш, который использует ядром Linux при чтении и записи на диск. Чтобы очистить страничный кэш требуется выполнить вот такую команду:
Здесь опция drop_caches очищает кэш без преждевременного завершения работы приложений в системе Linux.
Для очистки дискового кэша такая команда является наиболее безопасной что в корпоративной, что в производственной среде, поскольку «…echo 1 > ….» очищает только PageCache.
Выполните вот такую команду, чтобы убедится что кэш очищен:
Очистка кэш-памяти Dentries и Inodes в Linux
Dentries – это структура данных, представляющая из себя каталог (папку), которую можно использовать для создания или хранения кэш-памяти. Inodes – это часть файловой системы Linux, хранящая метаданные о файле (размер файла, местоположение, разрешения, права собственности и т.д.) Для того, чтобы очистить дентри и иноды в Линуксе, выполните следующую команду с правами root’a:
Очистка Pagecache, Dentries и Inodes в Linux
Так же есть возможность очистить разом дисковый кэш Pagecache, dentries и inodes, используя всего лишь одну команду. Вот она:
В данном случае сначала выполняется команда sync, а затем команда echo.
- sync — очищает буфер файловой системы;
- echo записывает данные в drop_cache очищая кэш и не «убивая» при этом ни одного приложения/сервиса.
Важно! Эту команду не рекомендуется использовать в производственных средах, поскольку он очищает все – кэш страниц, дентри и иноды. Это может привести к проблемам с системой и спровоцировать скачок нагрузки.
Как очистить файл подкачки в Linux?
Подкачка swap – это область на жестком диске, которая используется, когда память RAM почти исчерпана или исчерпана. В некоторых ситуациях вам может потребоваться очистить пространство подкачки на вашем компьютере Linux.
Чтобы очистить файл подкачки, просто выполните следующую команду от имени root
Вы можете очистить и кэш, и файл подкачки, объединив их в одну команду, как показано на рисунке.
Не забудьте выполнить команду free -h до и после выполнения скрипта, чтобы убедиться, что оперативная память была освобождена.