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

Обновлено: 07.07.2024

Файл подкачки, что это скажите вы? Одна из старейших и важнейших функций Windows 7, 8 и Windows 10. Он работает как виртуальная память для Windows. Если ваше устройство начинает ощущать нехватку оперативной памяти, Windows переносит наименее используемые страницы памяти в скрытый файл, называемый файлом подкачки. По умолчанию файл подкачки автоматически создается и поддерживается самой Windows. Это позволяет Windows запускать программы без риска их зависания из-за нехватки памяти. Даже если у вас много оперативной памяти, Windows использует файл подкачки для кэширования при удалении или перемещении большого количества файлов и при других действиях.

Интересно к прочтению: Как очистить файлы в windows 10 с помощью диапазона дат? Читаем тут!

Как вы наверняка знаете, при выключении системы все содержимое оперативной памяти теряется. Но все, что записано в файл подкачки, сохраняется, если только Windows не удаляет содержимое. Соответственно, кто-то может просмотреть эти данные в файле подкачки. Если вы этого не хотите допустить, можно настроить очистку файла подкачки при каждом отключении Windows.

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

Использование Редактора групповых политик

Если у вас Pro- или Enterprise-версия Windows, вы можете воспользоваться Редактором групповых политик для автоматической очистки файла подкачки. Найдите в меню «Пуск» gpedit.msc и запустите.

gpedit.msc

Откроется Редактор групповых политик. Здесь проследуйте в Конфигурация компьютера > Конфигурация Windows > Безопасность > Локальные политики > Параметры безопасности на левой панели.

Редактор групповых политик

Как настроить очистку файла подкачки при каждом выключении в Windows 10, 8 и Windows 7

На правой панели дважды кликните политику «Завершение работы: очистка файла подкачки виртуальной памяти».

В открывшемся окне отметьте «Включен» и нажмите «ОК», чтобы сохранить изменения.

Отключите функцию

После этого перезагрузите систему, чтобы изменения вступили в силу – и готово. Если хотите все вернуть как было, просто по тому же адресу отметьте «Отключен».

Использование редактора реестра Windows

Если у вас Home-версия Windows, выбора нет – только использовать редактор реестра, чтобы очистить файл подкачки. Найдите в меню «Пуск» regedit и запустите.

regedit

Открыв редактор реестра, найдите в левом поле следующий ключ:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Найдите следующий ключ

Здесь нужно создать новый параметр. Кликните правой кнопкой по правой панели и выберите Создать > Параметр DWORD (32 бита).

Создайте Параметр DWORD

Назовите новый параметр «ClearPageFileAtShutdown» и нажмите Enter.

Назовите его Назовите параметр ClearPageFileAtShutdown

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

Вот так все должно выглядеть в итоге:

ClearPageFileAtShutdown

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

Изображение пользователя Mike.

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

Обычно рано или поздно у всех возникает вопрос: "А какого черта у меня начинает заполняться своп, когда у меня еще свободной оперативной памяти как грязи?". И вот тут нам приходит в помощь такой параметр, как vm.swappiness. Для начала в консоли выполним команду:
cat /proc/sys/vm/swappiness
Поумолчанию результат будет 60.
Вы, конечно же спросите: "И что это означает?". Отвечаю: это параметр, который контролирует количество свободной памяти, который контролирует, при какой загруженности у нас начнется сброс страниц в swap. Ну а дальше простая формула: 100%-60%=40%, т.е. уже при 40% загруженой ОЗУ данные начинают активно сливаться на жетский диск, что, как мне кажется, не есть хорошо. И вероятнее всего вы спросите, нельзя ли сделать так, чтобы слив начался хотя бы при 90% занятой памяти. И я вам отвечу: да, можно. Сначала в конфиг /etc/sysctl.conf добавим запись:
vm.swappiness=10
Затем, дабы не перезагружать комп, выполним с правами суперпользователя команду:
sysctl -p
Теперь параметр оперативная память будет выгружаться в своп при достижении 90% занятости.

  • 0 — не кэшировать ничего.
  • 100 — значение по-умолчанию.
  • >100 — агрессивно кэшировать дисковые операции.

Знатоки рекомендуют устанавливать значение 1000 и больше для обычных винчестеров и около 50 для SSD дисков. Чем выше значение vm.vfs_cache_pressure тем отзывчивей будет система (тем больше будет кэширование), но это при условии что у Вас достаточно оперативной памяти (более 2Гб).
Если кому-то будет интересно на практике определить, какое значение ему лучше подходит, то рекомендую ознакомиться с этой буржуйской статьей.
Если вы остановились в выборе на каком-то определенном значении, то впишем его туда же, куда раньше мы прописывали параметр vm.swappiness - в конфиг /etc/sysctl.conf:
vm.vfs_cache_pressure=1000
Ну и чтобы значения вступили в силу, выполним с правами суперпользователя команду:
sysctl -p .

На этом тюнинг можно считать законченым. Но у вас наверняка может возникнуть вопрос: "У меня дофига свободной оперативы, но при этом в свопе что-то лежит, а я хочу его освободить. Как мне очистить своп?" И на этот вопрос есть ответ.
Для начала убедитесь, что содержимое свопа не превышает размер свободной оперативной памяти. Если свободной памяти больше, чем свопа, то на какое-то время своп просто отключаем командой:
swapoff -a
После чего дожидаемся, когда содержимое свопа перельется в оперативную память. Обязательно промониторьте это дело любой предпочитаемой вами утилитой (виджетом, командой free, командой top/htop или что вам больше по душе). Когда из свопа все перелилось, снова его включаем:
swapon -a

Сегодня мы будем говорить о файле подкачки в Linux. Расскажем для чего он нужен, как создать, изменить размер или удалить. В общем, все, что вам может понадобиться при работе со swap .

В операционной системе Linux, как и в других ОС, файл подкачки нужен для страховки оперативной памяти. Когда установленный объем ОЗУ заканчивается, используется именно выделенная область из файла подкачки. Это может понадобиться в двух случаях:

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

Сам по себе swap - это отдельный логический раздел вашего диска либо просто файл на системном разделе. Чаще всего он создается именно при установке операционной системы. Но создать swap linux можно и после завершения инсталляции ОС.

В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.

Как посмотреть swap в Linux

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


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


Как видите, в нашем случае под swap выделено 1.4 Гб и это файл. То есть, он находится не на отдельном разделе, а на том же диске, на котором установлена операционная система.

Если это будет отдельный логический том, то под надписью « TYPE » мы увидим слово «partition».

Если бы файл подкачки в вашей операционной системе отсутствовал, результат работы команды free - h выглядел бы примерно так:


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

Создание файла подкачки Linux

Если вы удостоверились в том, что файл подкачки отсутствует, можно переходить к его созданию. Пример, приведенный ниже, будет показан с использованием операционной системы Ubuntu 18.04, но работать это должно и на других дистрибутивах Linux.

Шаг 1: Создаем swap файл

Давайте создадим файл подкачки для нашей Ubuntu. Для примера его размер составит 1 Гб. Запустите терминал и введите команду, приведенную ниже:

sudo fallocate -l 1G /swapfile

Для обеспечения безопасности файла обязательно устанавливаем на него нужные права.

sudo chmod 600 /swapfile

При этом вместо «swapfile» мы можем указать любое другое название.


Шаг 2: Создание файловой системы

Создание swap linux ещё не завершено. Теперь необходимо указать нашей операционной системе, что созданный объект должен использоваться как файл подкачки. Для этого мы будем использовать команду, приведенную ниже:

sudo mkswap /swapfile

Если все сделано верно, результат будет выглядеть так:


Шаг 3: Активируем файл подкачки

Хорошо, теперь наш Linux понимает, что это файл подкачки, но этого недостаточно. Нам также необходимо включить SWAP :

sudo swapon /swapfile


Давайте проверим, все ли мы сделали правильно:

Отлично, операционная система распознала наш файл подкачки и начала его использовать. Мы видим тип в поле TYPE и размер в поле SIZE .

Шаг 4. Сохранение изменений после перезагрузки

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

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

sudo cp /etc/fstab /etc/fstab.back


После этого можно переходить непосредственно к добавлению нужных нам данных. Нам надо добавить в файл такую строчку:

/swapfile none swap sw 0 0

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

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab


Готово. Изменения сохранены и файл подкачки не сбросится после перезагрузки операционной системы.

Настройка swappiness

Дальше будет рассмотрена настройка swap linux. У файла подкачки существуют параметры, которые сообщают ОС, как часто его нужно использовать. Это явление называется «свопингом» и может иметь значение в пределах 0 - 100. Если это значение ближе к 100, ядро будет перемещать в раздел подкачки больше информации чтобы освободить память. При значениях ближе к нулю, система будет использовать подкачку только при крайней необходимости.

К примеру, в версии Ubuntu L inux для рабочего стола устанавливается параметр 60, а в серверных редакциях операционной системы - 1. Для того чтобы проверить, какой параметр используется в нашей ОС, вводим в терминал такую команду:


Как видите, в нашем случае «свопинг» установлен как 60. Если же вы хотите поменять swappiness, можете воспользоваться оператором, цифра в конце которого и будет новым значением:

sudo sysctl vm.swappiness=25


Как и в случае с конфигурацией файла подкачки, данный параметр изначально будет временным и обнулится при следующей перезагрузке. Для того чтобы сделать его постоянным, в самом конце файла /etc/sysctl.conf записываем значение vm.swappiness=25.

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

Размер swap файла в Linux

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

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

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

sudo swapoff /swapfile


Вторым этапом меняем размер файла подкачки, воспользовавшись командой, приведенной ниже. При этом размер вашего swap файла нужно указать вместо параметра 2G (2 гигабайта):

sudo fallocate -l 2G /swapfile

Теперь форматируем полученный файл в файловую систему swap:

sudo mkswap /swapfile

А затем включаем его обратно:

sudo swapon /swapfile


При этом операционная система Linux позволяет использовать сразу несколько swap.

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

Если по каким-то причинам файл подкачки вам не нужен, можете удалить его. Для этого сначала надо отключить swap linux:

sudo swapoff /swapfile


А потом удаляем:

sudo rm /swapfile


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

В заключение

Надеемся теперь концепция файла подкачки в Linux ясна вам на 100%. Можете переходить к практике и проверять наличие swap на вашем компьютере или ноутбуке, его настройке, созданию или даже удалению. Если в результате у вас останутся какие-то вопросы, предложения или замечания, можете задать их нам, воспользовавшись формой комментирования ниже.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

(25 оценок, среднее: 4,60 из 5)

Об авторе

17 комментариев

>> В последних версиях операционной системы Ubuntu Linux файл подкачки создается автоматически вне зависимости от того, хотите вы этого или нет. При этом его размер составляет около 1 Гб.

Конечно же это не так!

Есть приедложение: вставляй скриншоты именно тех окон, которые необходимы по ходу статьи а не ввесь скриншот твоего рабочего стола, для лучшей читабельности скриншота.

Вообще, автор несколько недоговаривает насчет свапа в GNU/Linux (вероятно, ввиду незнания). Дело в том, что свап нужен не столько для срочного получения памяти, сколько для ровного и эффективного высвобождения памяти. Использовать его в качестве "срочной памяти" в общем случае очень вредно.

И отключение swap не спасает от проблемы дискового ввода/вывода при конкуренции за память — дисковый I/O просто перемещается с анонимных страниц на файловые. Это не только может быть менее эффективным, поскольку остаётся меньший пул страниц, доступных для высвобождения, но и само по себе может способствовать появлению этой высокой конкуренции.

И включение свопа тоже не спасает от заполнения озу дисковым кэшем. На разных дистрибутивах периодически сталкиваюсь с одной и той же проблемой. ОЗУ забивается дисковым кэшем и система начинает тормозить, при том что своп есть, активен, но он не используется. Опытным путем пришел к выводу что система начинает юзать своп отталкиваясь не от параметра в графе "свободно", а от параметра в графе "доступно". Я не знаю верный ли вывод сделал, но со стороны все выглядит именно так. Имею на борту 8 гб ОЗУ. Во время работы системы постепенно дисковый кэш начинает увеличиваться в размере и занимает около 6гб, при этом под реальные нужды используется всего 1,5гб, в графе "свободно" указано около 500мб, в графе доступно около 6,5гб. Стоит только запустить какую-нибудь задачу, которая потребляет озу хотя бы 1,5 -3 гб (игра), как система идёт в штопор, количество свободной памяти уменьшается до минимума прописанного в ядре - 65мб, потом начинает высвобождаться дисковый кэш, но он его просто дропает, а не пишет в своп. Причем дропает примерно до размера чтобы в графе "свободно" было 150-180мб. И после этого система начинает балансировать на этих 180 мб. Всё, естественно, становится дерганным и лагучим. Своп по прежнему не используется. Опытным путем выяснено что своп начинает использоваться тогда, когда в графе "доступно" появляется значение сопоставимое с выставленным параметром swappiness. Мне интересно, так задумано или это баг?
Приходилось устанавливать минимальное количество свободной озу на 500мб вместо 65. Подбирать swappiness в соответствии с нуждами. Но сам по себе своппинг, тоже по сути зло. В момент доступа к диску все равно наблюдались микрофризы, хотя своп находится на ссд. Решением стала настройка и уменьшение дискового кэша. Конечно, это имеет и свою отрицательную сторону, но тут, как говорится, из двух зол выбирай меньшее.

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

linux-logo

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

Свободная память — неиспользуемая память — это потраченная память впустую.

Очистка кеша и буфер в Linux

Если вы хотите очистить в системе кеш и буфер, то вы можете использовать эту цепочку команд:

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

  • Чтобы освободить pagecache:
  • Чтобы освободить иноды:
  • Чтобы освободить pagecache, dentries и inodes:

ПРИМЕЧАНИЕ. Вышеупомянутые команды должны выполняться от root пользователя.

Если вы пытаетесь сделать это с помощью sudo , вам нужно немного изменить синтаксис, примерно так:

Либо в таком формате:

Увидеть, что находится в буферах и кеше

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

fincore

С помощью этого инструмента вы можете видеть, какие файлы кэшируются в директории give.

Очистка swap в Linux

первым делом смотрим сколько занимает наш swap места:

В данном случае swap занимает 26 Мб из 8 Гб

Очистим swap следующей командой:

Затем используйте команду, чтобы посмотреть освободился ли swap:

Из вывода видно что swap теперь занимает 0 Мб.

Очистка memcached в Linux

Есть несколько путей очистить кеша memcached.

Первый — это очистка с помощью подключения через telnet. Используем следующие команды:

  • localhost — хост где находится memcached (можно указывать и IP-адрес хоста).
  • 11211 — порт который использует memcached.

Чтобы узнать порт и IP-адрес в терминале где установлен memcached наберите следующее:

Второй — перезапустить сервис memcached:

Третий — установить утилиту memcflush для очистки кешей:

Теперь очищаем кеш memcached

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

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