Освобождение оперативной памяти linux

How to Clear RAM Memory Cache, Buffer and Swap Space on Linux

Like any other operating system, GNU/Linux has implemented memory management efficiently and even more than that. But if any process is eating away your memory and you want to clear it, Linux provides a way to flush or clear ram cache.

How to Clear Cache in Linux?

Every Linux System has three options to clear cache without interrupting any processes or services.

1. Clear PageCache only.

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

2. Clear dentries and inodes.

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

3. Clear pagecache, dentries, and inodes.

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

Explanation of the above command.

sync will flush the file system buffer. Command Separated by “;” run sequentially. The shell waits for each command to terminate before executing the next command in the sequence. As mentioned in the kernel documentation, writing to drop_cache will clean cache without killing any application/service, command echo is doing the job of writing to file.

If you have to clear the disk cache, the first command is safest in enterprise and production as “. echo 1 > ….” will clear the PageCache only. It is not recommended to use the third option above “. echo 3 >” in production until you know what you are doing, as it will clear pagecache, dentries, and inodes.

Is it a good idea to free Buffer and Cache in Linux that might be used by Linux Kernel?

Free Buffer and Cache in Linux

When you are applying various settings and want to check, if it is actually implemented specially on the I/O-extensive benchmark, then you may need to clear the buffer cache. You can drop cache as explained above without rebooting the System i.e., no downtime required.

Linux is designed in such a way that it looks into the disk cache before looking onto the disk. If it finds the resource in the cache, then the request doesn’t reach the disk. If we clean the cache, the disk cache will be less useful as the OS will look for the resource on the disk.

Moreover, it will also slow the system for a few seconds while the cache is cleaned and every resource required by OS is loaded again in the disk cache.

Now we will be creating a shell script to auto clear RAM cache daily at 2 am via a cron scheduler task. Create a shell script clearcache.sh and add the following lines.

#!/bin/bash # Note, we are using "echo 3", but it is not recommended in production instead use "echo 1" echo "echo 3 > /proc/sys/vm/drop_caches"

Set execute permission on the clearcache.sh file.

Читайте также:  Линукс добавить пользователя root

Now you may call the script whenever you are required to clear the ram cache.

Now set a cron to clear RAM cache every day at 2 am. Open crontab for editing.

Append the below line, save and exit to run it at 2 am daily.

0 2 * * * /path/to/clearcache.sh

For more details on how to cron a job, you may like to check our article on 11 Cron Scheduling Jobs.

Is it a good idea to auto clear the RAM cache on the production server?

Clear RAM Cache on Linux Production Server?

No! it is not. Think of a situation when you have scheduled the script to clear ram cache every day at 2 am. Every day at 2 am the script is executed and it flushes your RAM cache. One day for whatsoever reason may be more than expected users are online on your website and seeking resources from your server.

At the same time, the scheduled script runs and clears everything in the cache. Now all the users are fetching data from the disk. It will result in a server crash and corrupt the database. So clear ram-cache only when required, and known your footsteps, else you are a Cargo Cult System Administrator.

How to Clear Swap Space in Linux?

If you want to clear Swap space, you may like to run the below command.

Also, you may add the above command to a cron script above, after understanding all the associated risks.

Now we will be combining both above commands into one single command to make a proper script to clear RAM Cache and Swap Space.

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared' OR $ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

After testing both the above commands, we will run the command “free -h” before and after running the script and will check the cache.

That’s all for now, if you liked the article, don’t forget to provide us with your valuable feedback in the comments to let us know, what you think is a good idea to clear ram cache and buffer in production and Enterprise?

Источник

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

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

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

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

Читайте также:  How to install linux fedora

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

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

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

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

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

Оцените разницу между свободной памятью до и после очистки кэша. В первом случае вы видите, что свободная память составляет 342 МБ. После очистки кэша страниц она увеличивается до 1,3 ГБ. Кроме того, обратите внимание, что буфер/кэш был очищен с 1.3GB до 329MB.

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

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

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 и таким образом очищает кэш, не убивая ни одного приложения/сервиса.
  • Затем вернемся к запятой, которая инструктирует оболочку выполнить первую команду и после ее выполнения выполнить следующую. Таким образом, в данном случае сначала выполняется команда sync, а затем команда echo.

ПРИМЕЧАНИЕ : Для очистки дискового кэша первая команда является наиболее безопасной как в корпоративной, так и в производственной среде, поскольку «. echo 1 > ….» очищает только PageCache.

Третий вариант «. echo 3 >» не рекомендуется использовать в производственных средах, поскольку он очищает все – кэш страниц, дентри и иноды – что может привести к поломке системы и повлиять на производственную нагрузку.

Команды, которые мы только что рассмотрели, предназначены для выполнения от имени root. Если вы выполняете их от имени пользователя sudo, синтаксис немного изменится, как показано на рисунке.

sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches' sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches' sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

Хорошая ли идея освобождать буфер и кэш в Linux?

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

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

Таким образом, очистка кэша и буфера безопасна, так как это не оказывает большого влияния на производительность системы.
ПРИМЕЧАНИЕ : На производственных или корпоративных серверах НЕ РЕКОМЕНДУЕТСЯ очищать кэш, так как это может привести к снижению производительности сервиса.

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

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

Читайте также:  Найти самые большие файлы linux

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

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

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

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

Вывод

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

На этом все, если вам понравилась статья, не забудьте оставить нам свой ценный отзыв в комментариях

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Источник

Очищение оперативной памяти в Linux

Абсолютно любая операционная система будет работать корректно только в том случае, если оперативная память достаточно освобождена. Именно она будет распределяться между процессами, а если страницы не используются, то они будут отправляться в подкачку на диске. Если память переполняется и не очищается, то будет будет активирован специализированный механизм встроенного ядра. Совершенно любой процесс, который активируется на компьютере, будет записываться и оставлять за собой кэш. Именно кэш занимает огромное количество памяти. По этой причине необходимо разобраться, как правильно очистить его.

Процесс освобождения кэша

Очищение inode и dentrie и PageCache:

Теперь необходимо разобраться, что же конкретно происходит в системе, если использовать все эти приведенные параметры.

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

Если не получится использовать параметр sync, необходимо освободить еще немного места. Однако результат станет еще больше.

Символ ; позволяет системе узнать, что необходимо использовать совершенно другой параметр. Однако перед процессом придется подождать, пока завершится предыдущая задача. Последний параметр echo 1 > /proc/sys/vm/drop_caches будет записывать значение один в файлы /proc/sys/vm/drop_caches. То есть это явный сигнал для ядра, что необходимо очистить установленный вид кэша.

Стоит ли вообще чистить кэш

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

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

Источник

Оцените статью
Adblock
detector