Как почистить swap space linux

SWAP — как создать, подключить, очистить и отключить файл подкачки в Linux

Что такое SWAP

SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накопитель), флеш-накопитель или иное вторичное хранилище. Как правило, swapping (свопинг) происходит, когда оперативная память переполнена, и ей для работы требуется дополнительное пространство.

Когда может понадобиться своп

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

  1. Постоянное падение сайта: Ошибка соединения с базой данных — означает, например, что MySQL упал;
  2. При внимательном изучении логов /var/log/mysql.log обнаруживается ошибка InnoDB: Fatal error: cannot allocate memory for the buffer pool . Она свидетельствует о том, что базе данных не хватает выделенной ей оперативной памяти для создания буфера.

При подобных симптомах и ошибках может помочь своппинг.

Преимущества SWAP

Сравнение стоимости оперативной памяти и SSD
(цены актуальны на 7 июля 2017 года) IHOR FirstVDS
Оперативная память, в среднем за 1 гигабайт 100 рублей в месяц 170 рублей в месяц
SSD, в среднем за 1 гигабайт 10 рублей в месяц 13 рублей в месяц

Как видно из таблицы, экономия выйдет примерно в 10 раз.

Недостатки SWAP

SWAP — это не замена оперативной памяти, а всего лишь его поддержка.

Как создать и подключить файл подкачки SWAP

Далее, в работе используется командная строка SSH.
Инструментарий: Far Manager или Putty.
Для примера приводятся команды из под root . Если Вы работаете не под root , перед командами задавайте префикс sudo

Проверка наличия свопа в системе

Для начала, нужно убедиться, что своп ещё не подключен:

Если команда выдала пустой результат или что-то навроде:

— значит, своп, скорее всего отсутствует.

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


Если в таблице в строке swap стоит 0, значит своп отсутствует.

Проверка наличия свободного места на диске

Теперь, надо проверить, сколько свободного места есть на диске:

В результате, мы увидим что-то подобное:

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

Какого размера создать swap

Исходите из принципа — сколько может понадобиться, столько и выделяйте. Как правило, можно начинать с размера объёма оперативной памяти, либо его удвоенного количества. Например, если у вас в системе 2 гигабайта оперативки, своп можно сделать размером 2-4 гигабайта, как правило, этого должно хватать. Но, Вы можете скорректировать его размер под себя.

Создание файла SWAP

Допустим, мы хотим создать swap-файл размером 4 гигабайта.
Далее, здесь существует 2 подхода, традиционный медленный и новый быстрый:

Быстрый способ Используем fallocate :

Результатом будет пустая строка, это нормально.
В отличие от dd , результат будет получен почти сразу, и я рекомендую именно его. Традиционный, медленный способ Или используем команду:

Синтаксис команды простой:

  • dd — команда предназначена для того, чтобы что-то куда-то копировать побайтово;
  • if=/dev/zero — указывает на источник, т.е. на то, откуда копируем, в данном случае из /dev/zero — это специальный файл в UNIX-подобных системах, представляющий собой источник нулевых байтов;
  • of=/swapfile — указывает путь назначения, куда копируем данные;
  • bs=1G — количество байт, которые будут записаны за раз. В нашем случае, 1 гигабайт. Обозначения: G — гигабайт, M — мегабайт, K — килобайт, и так далее;
  • count=4 — сколько блоков размером с bs будет создано, в нашем случае 4.

Будьте очень внимательны с синтаксисом команды, потому что если, например, ошибиться с определением пути для of= (куда сохранять файл), можно повредить данные на диске.

Теперь, когда файл создан, проверим результат:

Читайте также:  Не открываются некоторые папки windows 10

В результате увидим:
-rw-r—r— 1 root root 4.0G Jul 07 16:16 /swapfile
Как видим, файл создался верно и с нужным объёмом.

Как подключить SWAP файл

Для начала, ограничим права доступа к вновь созданному файлу.

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

В результате, мы должны увидеть подобное:
-rw——- 1 root root 4.0G Jul 07 16:16 /swapfile
Права прописаны верно.

Теперь нужно сделать из swapfile файл подкачки:

В результате, увидим примерно следующее:
Setting up swapspace version 1, size = 4193300 KiB
no label, UUID=e5f3e9cf-c1a9-4ed4-b8ab-711b6a7d6544

Теперь, файл готов в роли свопа. Подключим его к системе:

Если на данном этапе выходит похожая ошибка, значит, скорее всего, своп запрещено подключать в систему. Такое ограничение часто ставят на VDS с виртуализацией OpenVZ. Рекомендую использовать IHOR, сервера от 100 рублей в месяц и виртуализация KVM позволяют включать SWAP.

Всё, теперь своп подключен и работает. Осталось проверить правильность работы самой первой командой:

Своп также будет виден в стандартных командах:

Всё, теперь точно, своп в системе готов и будет использоваться при необходимости.

Добавление свопа в автозагрузку

Чтобы при перезагрузке сервера своп автоматически подтягивался в систему, нужно прописать его в /etc/fstab :

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

Дополнительные вопросы

Как очистить SWAP в Linux

Вообще, это делается с помощью отключения и включения свопа.

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

Источник

Как освободить память Linux

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

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

Как освободить кэш память в Linux

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

Затем выполните одну из команд. Очистка кэша PageCache:

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

Очистка inode и dentrie:

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

Очистка inode и dentrie и PageCache:

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

А теперь давайте рассмотрим что происходит при выполнении этих команд.

Читайте также:  Installing tcpdump on linux

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

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

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

Виды кэша в Linux

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

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

Посмотреть размер страничного кэша можно с помощью утилиты free. Здесь он показан в последней колонке — cached:

Такой кэш чистить эффективнее и безопаснее всего.

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

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

cat /proc/slabinfo | egrep dentry\|inode

Очищать его чтобы освободить память linux не рекомендуется, так как памяти потребляется немного, а на новое сканирование файловой системы идет относительно много времени.

Нужно ли очищать кэш вообще?

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

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

Автоматическая очистка кэша

Давайте рассмотрим как автоматически очистить кэш памяти ежедневно в два часа ночи с помощью планировщика заданий cron.

Сначала создадим bash скрипт со следующим содержимым:

sudo vi /usr/local/bin/clearcache.sh

!/bin/bash
sync ; echo 1 > /proc/sys/vm/drop_caches

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

Дальше сделайте скрипт исполняемым:

sudo chmod 755 /usr/local/bin/clearcache.sh

Осталось добавить задание в планировщик cron. Для этого выполните команду:

И в открывшемся редакторе добавьте строчку:

0 2 * * * /usr/local/bin/clearcache.sh

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

Настройка размера кэша памяти

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

Читайте также:  Apple imovie для windows

За это отвечает файл /proc/sys/vm/vfs_cache_pressure. Он содержит относительный показатель, насколько агрессивно нужно удалять страницы из кэша. По умолчанию установлен параметр 100. Если его уменьшить ядро будет реже удалять страницы и это приведет к очень быстрому увеличению кэша. При нуле страницы вообще не будут удаляться. Если значение больше 100, размер кэша будет увеличиваться медленнее и неиспользуемые страницы будут сразу удаляться.

Например, сделаем минимальный размер кэша:

echo 1000 > /proc/sys/vm/vfs_cache_pressure

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

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

Пространство подкачки очистить очень просто. Для этого выполните:

swapoff -a && swapon -a

Имейте в виду, что при очистке swap, все данные будут перенесены обратно в оперативную память.

Как освободить память занимаемую процессами

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

ps -e -o pid,user,%mem,command —sort %mem

Как видите, больше всего здесь памяти занимает chromium. Теперь вам надо его завершить. Идентификатор процесса, по которому его можно завершить отображается в первой колонке. Поэтому:

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

Выводы

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

Источник

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

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

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

Очистка файла подкачки в Linux

Но сначала, почему вы хотите очистить swap вообще? Там могут быть разные причины. Некоторое время ваша система будет использовать много подкачки, даже если много оперативной памяти доступно.

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

Вы можете увидеть состояние оперативной памяти и поменять местами, используя команду free в Linux :

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

Если отбросить каламбур, то именно так и надо делать. Выключите подкачку с помощью этой команды:

Теперь включите swap обратно:

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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