Как очистить память подкачки

Обновлено: 21.11.2024

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

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

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

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

Бывают случаи, когда нам нужно очистить пространство подкачки по разным причинам. Подкачку можно отключить или включить с помощью утилит командной строки swapoff и swapon соответственно. Здесь мы предполагаем, что у вас уже есть файл/раздел подкачки в вашем дистрибутиве.

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

Очистить пространство подкачки в дистрибутиве Ubuntu

Хотя ядро ​​делает это самостоятельно. Тем не менее, если мы хотим, мы можем использовать утилиты командной строки swapoff и swapon для кратковременного отключения и включения пространства подкачки.

Итак, чтобы отключить своп, введите в терминале следующее –

-параметр используется для отключения пространства подкачки на всех известных устройствах подкачки, т. е. разделе или файлах.

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

Теперь нам нужно снова включить его. Следовательно, выполните следующую команду в терминале —

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

В заключение мы обсудили, как очистить пространство подкачки в дистрибутиве Ubuntu.

Дополнительная информация –

Чтобы показать, все ли работает так, как задумано, мы можем ввести следующую команду –

Подкачка памяти обычно выполняется по принципу "установил и забыл". В большинстве корпоративных сред подкачка встроена в системы, и эти кэши памяти не манипулируются, если только нет явной нехватки доступной памяти или если сервер выходит из строя из-за ошибки OOM killer (недостаточно памяти). Однако существует нишевая ситуация, которая может привести к тому, что администратору потребуется очистить системную подкачку вручную. Если это та ситуация, в которой вы оказались, вы попали в нужное место. Эта статья представляет собой обсуждение этой ситуации и необходимого решения.

Иногда система использует большой процент памяти подкачки, даже если имеется доступная для использования оперативная память. Виновником здесь является «подкачка» системы. Да, ты читаешь это правильно. обмен. Итак, теперь, когда вы знаете жаргон, вы готовы изучить его значение. Подкачка относится к параметру ядра, отвечающему за то, сколько и как часто система перемещает данные из ОЗУ в память подкачки.

Значение по умолчанию для swappiness – 60; однако вы можете вручную установить его в диапазоне от 0 до 100. Небольшие значения приводят к небольшому обмену, в то время как высокие значения могут вызывать очень агрессивный обмен. Нулевое значение приводит к тому, что подкачка вообще не происходит, поэтому, если вы хотите свести к минимуму подкачку до минимально возможного значения, не отключая ее, вы должны установить хотя бы единицу.

Если вы хотите изменить swappiness вашей системы, процедура очень проста. Вы можете проверить текущую настройку swappiness, выполнив следующую команду:

Это должно выглядеть примерно так:

Теперь вы можете видеть, что в моей системе значение swappiness равно 30. Чтобы изменить значение, вы хотите использовать следующее:

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

Чтобы очистить память подкачки в вашей системе, вам просто нужно отключить подкачку. Это перемещает все данные из памяти подкачки обратно в ОЗУ. Это также означает, что вы должны быть уверены, что у вас есть ОЗУ для поддержки этой операции. Простой способ сделать это — запустить «free -m», чтобы увидеть, что используется в подкачке и в ОЗУ. После того, как вы выключите его, вы можете подождать произвольное количество времени (30 секунд или около того), чтобы дать время для завершения операции, а затем снова включить подкачку. Это очищает кеш памяти подкачки и снова включает его. Вот все команды, которые вам понадобятся!

Надеюсь, этот краткий совет поможет вам очистить системную память подкачки, если вам когда-нибудь понадобится именно такое исправление.

Для получения дополнительной информации о пространстве подкачки см. мою статью с изложением основ здесь.

Хотите попробовать Red Hat Enterprise Linux? Загрузите его сейчас бесплатно.

Когда я открываю приложение, интенсивно использующее оперативную память (VirtualBox установлен на 2 ГБ оперативной памяти), обычно используется некоторое пространство подкачки, в зависимости от того, что еще у меня открыто в это время.

Однако, когда я закрываю это последнее приложение, 2 ГБ ОЗУ освобождаются, но остается прежнее использование пространства подкачки.

Например, прямо сейчас, примерно через два часа после закрытия VirtualBox, у меня есть 1,6 ГБ свободной оперативной памяти и еще 770 МБ в подкачке.

Как я могу сказать Ubuntu, чтобы она прекратила использовать эту подкачку и вернулась к использованию оперативной памяти?

Самое простое – перезагрузить устройство и сэкономить время, чтобы справиться с оперативной памятью, а освободить оперативную память, сэкономить мощность ноутбука и температуру процессора

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

6 ответов 6

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

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

ИЛИ, как вариант, одной строкой

Будьте осторожны при этом, так как вы можете сделать вашу систему нестабильной, особенно если в ней уже мало оперативной памяти.

Это помогло, своп был скопирован в оперативную память. Я думаю, вам просто нужно убедиться, что объем подкачки используется в качестве свободной оперативной памяти, прежде чем запускать swapoff, верно?

Подкачка не была скопирована в оперативную память. Он был просто отключен. Вы должны убедиться, что коробка не меняется, прежде чем делать это. Если вы это сделаете, ядро ​​увидит, что память исчезла, и OOM-Killer, вероятно, начнет произвольно убивать приложения. Нет причин, по которым вам нужно «очищать» своп таким образом. (см. мой другой комментарий) :)

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

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

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

Тот факт, что подкачка выделена, не означает, что она «используется». Хотя такие программы, как системный монитор и топ, покажут, что часть вашего пространства подкачки выделена (в вашем примере 770 МБ), это не означает, что система активно выполняет подкачку.

Чтобы узнать, происходит ли подкачка чего-либо, вы можете использовать команду vmstat. Оставьте его работать на несколько секунд, чтобы успокоиться, и посмотрите на столбцы si (обмен) и so (обмен). Если ничего не происходит, то нет причин для беспокойства.

Вот результат запуска vmstat 1 , где видно, что моя машина вообще не переключается.

Тем не менее, здесь вверху видно, что у меня выделено пространство подкачки:-

«нет причин для беспокойства» до тех пор, пока я не продолжу использовать какое-либо приложение, которое было заменено. тогда начинается ад.

Я не вижу заблуждения, я вижу разногласия по поводу того, что означает «использованный». Вы имеете в виду «используется» для обозначения активной замены ввода / вывода, в то время как исходный вопрос, по-видимому, задан с «использованным», что означает, что есть данные, которые были заменены, которые позже, возможно, потребуется заменить обратно.Существуют веские причины, чтобы сбросить подкачку после события, которое выгружает много другой памяти, по сути, упреждая активную подкачку, которая, как известно пользователю, произойдет позже (особенно если более поздняя «отмена подкачки» может произойти пока диск находится под нагрузкой по другим причинам).

После запуска приложения, интенсивно использующего память, другие мои приложения не реагируют, когда я переключаюсь на них, предположительно из-за переключения. Какой-то способ сообщить системе отменить обмен как можно большего количества данных (с последующим перерывом на кофе) будет лучше, чем ждать 20 секунд каждый раз, когда я нажимаю Alt+Tab.

Вы также можете установить для параметра "swappiness" значение по умолчанию, равное 60, таким образом, своп не будет слишком большим с самого начала. Почему для доставки по умолчанию установлено значение 60, когда рекомендуемое значение равно 10, меня озадачивает. Из Ubuntu SwapFAQ:

Настройка по умолчанию в Ubuntu: swappiness=60. Уменьшение значения swappiness по умолчанию, вероятно, улучшит общую производительность для типичной установки Ubuntu на рабочем столе. Рекомендуется значение swappiness=10, но вы можете экспериментировать.

Изменив это значение на 10 или даже на 0, вы можете добавить значительное и ощутимое ускорение к более старой системе с медленным диском. Установка этого значения на 0 не отключает подкачку для ядра Linux 3.4 и ниже, но с 3.5+ отключает, поэтому вам следует использовать значение 1, если вы хотите сохранить минимальное значение*.

Я не вижу причин не устанавливать для этого параметра значение 0, поскольку все, что попадает на диск, работает медленнее, чем ОЗУ. У меня 8 виртуальных ядер, быстрый SSD и 8 ГБ памяти, а мой своп установлен на 0. На данный момент у меня работают 3 виртуальные машины, использование моей памяти составляет 7,1 из 7,7 ГБ, мой используемый своп составляет всего 576 КБ. 952 МБ и все системы работают без сбоев!

  1. swappiness может иметь значение от 0 до 100
  2. swappiness=0 указывает ядру избегать выгрузки процессов из физической памяти как можно дольше
  3. swappiness=100 указывает ядру агрессивно подкачивать процессы из физической памяти и перемещать их в кеш подкачки.

Ниже приведены основные инструкции по проверке подкачки, очистке подкачки и изменению подкачки на 0:

Чтобы проверить значение swappiness:

Чтобы временно установить swap на 0 (как предлагает SpamapS):

Это очистит ваш своп и перенесет весь своп обратно в память. Сначала убедитесь, что у вас достаточно памяти, просмотрев вкладку ресурсов gnome-system-monitor, ваша свободная память должна быть больше используемой подкачки. Этот процесс может занять некоторое время, используйте gnome-system-monitor для отслеживания и проверки хода выполнения.

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

Как очистить кэш в Linux?

В каждой системе Linux есть три варианта очистки кэша без прерывания каких-либо процессов или служб.

<р>1. Очистить только PageCache.

<р>2. Очистить dentries и inodes.

<р>3. Очистите кэш страниц, dentries и inodes.

Объяснение приведенной выше команды.

sync очистит буфер файловой системы. Команда, разделенная символом «;» запускать последовательно. Оболочка ожидает завершения каждой команды перед выполнением следующей команды в последовательности. Как упоминалось в документации ядра, запись в drop_cache очистит кеш, не убивая какое-либо приложение/службу, а команда echo выполняет запись в файл.

Если вам нужно очистить кэш диска, первая команда является наиболее безопасной на предприятии и в рабочей среде, так как «. эхо 1 > …». очистит только PageCache. Не рекомендуется использовать третий вариант выше «. echo 3 >» в рабочей среде, пока вы не поймете, что делаете, так как это очистит кэш страниц, dentries и inodes.

Хорошая ли идея освободить буфер и кэш в Linux, которые могут использоваться ядром Linux?

Бесплатный буфер и кеш в Linux

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

Linux устроен таким образом, что прежде чем смотреть на диск, он просматривает кэш диска. Если он находит ресурс в кеше, то запрос не доходит до диска. Если мы почистим кеш, кеш диска будет менее полезен, так как ОС будет искать ресурс на диске.

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

Теперь мы создадим сценарий оболочки для автоматической очистки кэша оперативной памяти ежедневно в 2 часа ночи с помощью задачи планировщика cron. Создайте сценарий оболочки clearcache.sh и добавьте следующие строки.

Установите разрешение на выполнение для файла clearcache.sh.

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

Теперь установите cron для очистки кеша RAM каждый день в 2 часа ночи. Откройте crontab для редактирования.

Добавьте строку ниже, сохраните и выйдите, чтобы запускать ее ежедневно в 2 часа ночи.

Для получения более подробной информации о том, как выполнить задание cron, вы можете прочитать нашу статью 11 заданий планирования Cron.

Хорошая ли идея автоматически очищать кеш ОЗУ на рабочем сервере?

Очистить кэш ОЗУ на рабочем сервере Linux?

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

В то же время запускается запланированный скрипт и очищает все в кеше. Теперь все пользователи извлекают данные с диска. Это приведет к сбою сервера и повреждению базы данных. Так что очищайте ram-cache только при необходимости и зная свои шаги, иначе вы системный администратор Cargo Cult.

Как очистить пространство подкачки в Linux?

Если вы хотите очистить пространство подкачки, вы можете запустить приведенную ниже команду.

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

Теперь мы объединим обе вышеуказанные команды в одну команду, чтобы создать правильный скрипт для очистки кэша RAM и пространства подкачки.

После тестирования обеих приведенных выше команд мы запустим команду «free -h» до и после запуска скрипта и проверим кеш.

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

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

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

98 мыслей на тему “Как очистить кэш оперативной памяти, буфер и пространство подкачки в Linux”

Я хочу спросить? Безопасно ли очищать кешированную память на почтовом сервере Linux, будет ли этот процесс мешать отправке/получению электронной почты пользователем?

Да, можно безопасно удалить кешированный буфер памяти, чтобы освободить место в памяти…

Причина удаления таких кешей заключается в оценке производительности диска, и это единственная причина, по которой он существует.

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

Что это с эхом? эхо «эхо 3 > /proc/sys/vm/drop_caches». Вы должны просто использовать echo 3 > /proc/sys/vm/drop_caches или echo 3 | sudo тройник /proc/sys/vm/drop_caches.

Замечание о том, что «3» не следует использовать в производственных системах, нелепо и неправомерно. Он полностью поддерживается и стабилен в течение десятилетий. drop_caches обычно полезен только при выполнении эталонных и временных тестов файловых систем и блочных устройств, а также сетевых хранилищ или файловых систем.Вы не должны использовать какой-либо drop_cache в первую очередь в любой реальной производственной системе. Он предназначен только для тестирования и отладки.

отражение отраженного эха, эхо.

Чтобы вернуть систему в нормальное состояние, пользователь должен записать «4» в drop_caches

Зэки, нет, 4 писать не надо. В документации это ясно сказано. 4 (бит 2) предназначен только для отключения сообщений журнала dmesg/kernel при выдаче drop_caches. запись 1, 2 или 3 — это однократное действие, и сразу после (или даже во время) кеш страниц и другие кеши начнут заполняться обратно в соответствии с использованием системы.

Я не вижу необходимости использовать 4. Это может быть полезно, если вы делаете это каждые несколько минут по каким-то странным причинам и хотите избежать засорения журнала ядра (dmesg) спамом. Но это всего лишь одна строка, и если вы делаете это время от времени, нет никаких причин использовать 4.

Вы не можете использовать «echo 4» для освобождения памяти, потому что система Centos имеет только 1, 2 или 3 варианта.

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

Команда для очистки кешей не запускается, пока я не добавлю sudo. Мне отказывают в доступе без него. Будет ли это правильно?

синхронизировать; эхо 3 > sudo /proc/sys/vm/drop_caches

Иногда для запуска команд требуются права суперпользователя.. Не о чем беспокоиться..

Я спрашиваю, ГДЕ я поместил команду sudo, потому что она не работала перед синхронизацией или эхом, и я не понимал, что drop-cache — это исполняемая команда, которая будет реагировать на sudo. Кажется, там это работает, но я просто удостоверяюсь, что это правильное использование sudo в этом синтаксисе.

На самом деле нашел кое-что, что работает намного лучше, чем то, что я пробовал в последний раз:

синхронизировать; sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

Столбец buff/cache для free -h уменьшился с 340 МБ до 97 МБ, а для свободного столбца — с 78 МБ до 217 МБ. Разница больше, чем раньше.

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

Есть ли для этого пароль после нажатия Enter . если нет, то почему он спрашивает меня?

Читайте также: