Linux swap что это такое

SWAP

SWAP – один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище (отдельный раздел или файл), освобождая ОЗУ для загрузки других активных фрагментов памяти.

Более подробно о механизме своппинга можно прочитать в Википедии.

Дополнительно SWAP используется при организации режима сна (hibernation или suspend to disk). При этом в SWAP сохраняется образ оперативной памяти.

Размещение

SWAP может быть размещен на разделе диска, в файле или в RAM. Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать SWAP-файл при установке и выдает предупреждение, если SWAP-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование SWAP-файла имеет некоторые преимущества: он не занимает отдельный раздел, его легко создать, изменить его размер или удалить.

Дополнительно при выборе размещения SWAP нужно учитывать, что не все файловые системы позволяют использовать прямую адресацию блоков SWAP-файла. Так, к примеру, нельзя использовать SWAP в файле на разделе с файловой системой btrfs(по состоянию на середину 2017).

Безопасность

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

Размер

В Интернете можно найти множество рекомендаций по определению размера SWAP, однако универсального ответа не существует.

При определении размера SWAP следует учесть следующие аспекты:

В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться.

Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером от 1,5 до 2-х размеров оперативной памяти. И стоит попробовать изменять vm.swappiness, но лучше поискать возможность увеличить объем оперативной памяти.
Для машин с объемом памяти 3-4 Гб нужно решить, будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (размером от половины до 1 объема оперативной памяти). Можно не создавать SWAP при установке системы, а при необходимости добавить его позже как файл.
На компьютерах с объемами оперативной памяти более 6Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию, следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру, если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить, что при использовании ресурсоёмких программ (рендеринг изображения, компиляция огромных проектов и т.п.) оперативная память может заполняться полностью, а SWAP — использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно выбирать индивидуально.

Читайте также:  Linux изменить размер дисков

При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска.

Создание SWAP на разделе диска

Разобравшись с требованиями к SWAP, можно приступить к его созданию или изменению.
Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили, что созданного при установке системы SWAP-раздела недостаточно, то стоит создать дополнительный SWAP (выделить место под раздел или файл). Однако нужно учитывать, что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший, чем оперативная память.
К примеру, у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:

Подключим раздел как SWAP:

Проверить результат можно, посмотрев на вывод команды

Сделаем автомонтирование SWAP-раздела при запуске системы. Узнаем UUID раздела:

Теперь пропишем строку в /etc/fstab

echo "UUID= swap swap defaults,pri= 0 0"| sudo tee -a /etc/fstab

SWAP с динамически изменяемым размером

Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой swapspace (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.
Однако, если вы работаете с секретными документами, не забудьте указать swapspace создавать SWAP-файлы на зашифрованном диске или внутри шифрованного контейнера 1) .

Hibernate (suspend to disk, гибернация)

О настройке режима гибернации можно прочитать здесь.

Параметр vm.swappiness

Основной параметр, влияющий на работу системы со swap, — это vm.swappiness. Очень приблизительно этот параметр можно определить так: он задает процент свободной оперативной памяти, при котором начинается использование подкачки. Более точное определение смысла этой переменной можно уяснить из описания которое было дано в рассылке kernel.org — статья на английском.
Без особой необходимости трогать его не рекомендуется.

Читайте также:  Export ssh key linux

Скорректировать значение, применяемое при загрузке системы, можно, указав в файле /etc/sysctl.conf значение vm.swappiness. Пример:

echo "vm.swappiness=30"| sudo tee -a /etc/sysctl.conf

Мгновенно применить эту настройку можно с помощью следующей команды:

Актуальное значение, используемое ядром в настоящее время, можно просмотреть или изменить в /proc/sys/vm/swappiness.

# cat /proc/sys/vm/swappiness # echo 10 > /proc/sys/vm/swappiness

Изменения в /proc/sys/vm/swappiness будут сброшены при следующей перезагрузке.

Значение vm.swappiness по умолчанию — 60.

Какое значение выбрать?

Маленькое значение vm.swappiness (минимальное значение: 0) будет заставлять ядро использовать больше оперативной памяти под память процессов (в ущерб буферам и кэшам), тогда как большое значение (максимальное значение: 100) будет выделять больше памяти под кэши и буфера (в ущерб памяти для процессов).

Нужно понимать: ни одно значение vm.swappiness не увеличит волшебным образом производительность компьютера многократно. Урезаете кеши — понижаете отзывчивость системы при работе с файлами, урезаете память процессов — снижаете отзывчивость системы при переключении задач.

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

Источник

Управление и мониторинг областью подкачки в Linux

img

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

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

Что такое область подкачки и как она используется.

Область подкачки (swap space) – это дисковое пространство, которое действует как расширение памяти. Он используется, когда физическая память (ОЗУ) системы заполнена и системе требуется больше ресурсов памяти. Это называется «swap», потому что система перемещает некоторые неактивные страницы в памяти в область подкачки, чтобы можно было разместить больше данных в ОЗУ. Другими словами, это позволяет освободить оперативную память в загруженной системе.

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

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

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

Читайте также:  Линукс отключение по таймеру

Вместе RAM и swap называются «виртуальной памятью».

Какой объем swap space необходим?

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

Рис. 1 Swap space Ubuntu

Важно различать подкачку и подкачку с гибернацией. Система, которая переходит в спящий режим, немедленно сохраняет состояние вашей системы на жестком диске и выключается. Когда вы разбудите его (например, подняв «крышку» ноутбука), все запущенные вами программы вернутся в то состояние, в котором они находились, когда система перешла в спящий режим. Поэтому рекомендуется увеличить область подкачки. Но не все системы переходят в спящий режим.

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

$ which pm-hibernate /usr/sbin/pm-hibernate

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

Как можно просмотреть объем области подкачки в вашей системе Linux?

Используйте команду swapon —show , чтобы просмотреть область подкачки в вашей системе.

Рис. 2 Определение размера области подкачки

Еще одна полезная команда — это команда free , которая отображает как размер области подкачки, так и использование памяти. При использовании параметра -m результаты отображаются в МБ, а не в КБ.

Рис. 3 Использование команды Free

Команда sar сообщает об использовании области подкачки

Рис. 4 Использование команды sar

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

Вы также можете просмотреть раздел подкачки с помощью такой команды:

Рис. 5 Применение команды lsblk

Когда необходима область подкачки?

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

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

Если вам нужно создать файл подкачки в системе Linux, используйте команду:

Рис. 6 Создание файла подкачки в системе Linux

После создания файла измените права доступа к нему, запустите команду mkswap и используйте команду swapon -a , чтобы сделать его доступным, и команду swapon —show , чтобы убедиться, что он запущен.

Рис. 7 Изменение прав доступа к файлу подкачки

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

Источник

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