Что такое swap linux

Swap (Русский)

Эта страница дает ознакомление с пространством подкачки и подкачкой страниц в GNU/Linux. Охватывает создание, активацию файлов и разделов подкачки.

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

Поддержка подкачки обеспечивается ядром Linux и утилитами в пользовательском пространстве из util-linux пакета.

Contents

Пространство подкачки

Пространство подкачки может быть разделом диска или файлом. Пользователи могут создать пространство подкачки во время установки или позднее в любое желаемое время. Пространство подкачки может быть использовано для двух целей, расширить виртуальную память за пределы установленной оперативной памяти (RAM), а также для сохранения данных при гибернации (suspend-to-disk).

Иногда стоит включать Swap в зависимости от установленной оперативной памяти и количества требований для запуска желаемых программ. Если количество оперативной памяти меньше требуемого, тогда стоит включить подкачку. Это позволяет избежать состояния нехватки памяти (OOM), при котором механизм ядра Linux, OOM Killer, будет автоматически пытаться освободить память, убивая процессы. Чтобы увеличить количество виртуальной памяти до требуемого уровня, добавьте необходимую разницу как пространство подкачки. Например, если программа требует 7,5 GB памяти для запуска, а у вас установлено 4 GB оперативной памяти, добавьте разницу 3,5 GB как подкачку. В будущем добавляйте больше пространства к подкачке, учитывая требования. Это вопрос личных предпочтений если вы считаете, что программы должны быть убиты, вместо включения подкачки. Самый большой недостаток в подкачке это снижение производительности, см. раздел #Производительность

Для проверки статуса подкачки, используйте:

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

Раздел подкачки

Для подключения устройства как подкачку:

Чтобы подключить этот раздел подкачки при загрузке, добавьте запись в fstab:

где может быть получен из команды:

Активация используя systemd

Отключение подкачки

Чтобы деактивировать определенное пространство подкачки:

Файл подкачки

Как альтернатива к созданию целого раздела, файл подкачки даёт возможность менять свой размер на лету, а также его гораздо легче полностью удалить. Это может быть особенно важно, если дисковое пространство ограничено (например, небольшие SSD)

Вручную

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

Установите права доступа (всеми читаемый файл подкачки это огромная локальная уязвимость)

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

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

В завершении, отредактируйте fstab, добавив запись для файла подкачки:

Удаление файла подкачки

Чтобы удалить файл подкачки, сначала нужно отключить подкачку, а затем файл может быть удален:

Автоматически

systemd-swap

Подкачка с USB устройства

Благодаря модульности, предлагаемой Linux, мы можем иметь множество разделов подкачки на различных устройствах. Если у вас полностью заполнен жесткий диск, то можно использовать USB устройство как временный раздел подкачки. Однако, этот метод имеет серьёзные недостатки:

Чтобы добавить USB устройство как подкачку, сначала необходимо разметить USB флешку для подкачки как описано в секции #Раздел подкачки.

Далее откройте /etc/fstab и добавьте

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

Данная инструкция будет работать и для других устройств хранения, таких как SD карты и т.д.

Шифрование подкачки

Производительность

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

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

Swappiness

Swappiness sysctl параметр представляющий частоту использования пространства подкачки. Swappiness может иметь значение от 0 до 100, значение по умолчанию = 60. Низкое значение заставляет ядро избегать подкачки, высокое значение позволяет ядру использовать подкачку наперёд. Использование низкого значения на достаточном количестве памяти, улучшает отзывчивость на многих системах.

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

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

Чтобы постоянно установить значение swappiness, отредактируйте (создайте) конфигурационный файл sysctl

Чтобы проверить и больше узнать, почему оно так работает, посмотрите эту статью.

VFS cache pressure

Приоритет

Если у вас больше одного файла или раздела подкачки, вы должны учитывать присвоение приоритетного значения (от 0 до 32767) для каждой области подкачки. Система будет использовать области подкачки с высоким приоритетом, перед использованием областей с низким приоритетом. Например, если у вас быстрый диск ( /dev/sda ) и медленный ( /dev/sdb ), назначьте высокий приоритет для подкачки расположенной на быстром устройстве. Приоритет может быть назначен в fstab как pri параметр:

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

Использование zswap или zram

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

Чередование

Источник

SWAP в Linux

Руководство по созданию SWAP раздела на Linux

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

В ОС Linux оперативная память (ОЗУ, RAM, random access memory) делится на разделы, называемые страницами (pages). Swapping (”подкачка”, своппинг) – это процесс во время которого страницы памяти копируются на специально сконфигурированный для этого раздел диска, называемый swap space (раздел подкачки, может быть как и файлом, так и разделом жесткого диска), для освобождения ОЗУ. Совокупные размеры физической памяти и раздела подкачки – это объем имеющийся виртуальной памяти.

Своппинг необходим по следующим причинам:

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

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

Поэтому, если Вы сталкиваетесь с нехваткой оперативной памяти, мы рекомендуем переходить на тарифный план повыше.

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

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

Мы видим что SWAP готов и будет использоваться при необходимости.

В случае отсутствия можно создать файл для swap

Данная команда создаст файл /swap.file размером 512 мегабайт. Для увеличения данного показателя, измените count

Отформатируйте файл под swap

Отредактируйте файл /etc/fstab

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

Источник

Файл и раздел подкачки в Linux. Разница между swapping и paging

Обновл. 23 Июн 2021 |

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

Данная концепция применима как к операционной системе Windows, так и к Linux-системам. В ОС Windows, если возникает ситуация, когда для хранения процесса не хватает оперативной памяти, то система занимает некоторый объем памяти (т.н. «виртуальной памяти») из вторичного хранилища. Аналогичным образом поступают и Linux-системы.

Таким образом, оперативная память всегда обладает достаточным объемом памяти для сохранения в ней любого вновь запускаемого процесса. Заимствованное пространство жесткого диска называется памятью подкачки (англ. «swap memory»). И в этой статье мы подробно рассмотрим механизм памяти подкачки, его свойства и работу с ним в Linux.

Swapping vs. Paging

Paging — это процесс, при котором Linux делит свою физическую оперативную память на куски фиксированного размера (4 КБ), называемые страницами (англ. «pages»).

Swapping (или «подкачка памяти») — это процесс, при котором страница памяти копируется в специальное пространство на жестком диске, называемое пространством подкачки (англ. «swap space»), освобождая занимаемый ею объем оперативной памяти. В Linux для этого существует специальная программа — менеджер памяти. Каждый раз, когда системе требуется больше памяти, чем ей физически доступно в данный момент, менеджер памяти ищет все редко используемые страницы памяти и вытесняет их на жесткий диск, предоставляя освободившуюся память другому приложению (процессу).

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

Рассмотрим основные различия между Swapping и Paging:

Swapping Paging
Процедура копирования памяти всего процесса. Метод выделения памяти.
Возникает тогда, когда память всего процесса переносится на диск. Возникает тогда, когда какая-то часть процесса переносится на диск.
Происходит временное вытеснение данных из основной памяти во вторичную. Непрерывный фрагмент памяти разбивается на несколько отдельных блоков фиксированного размера, называемых фреймами (frames) или страницами (pages).
Может выполняться без какого-либо управления памятью. Управляется менеджером памяти.
Выполняется над неактивными процессами. Выполняется только с участием активных процессов.

Типы памяти подкачки

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

Раздел подкачки (англ. «swap partition») — тип памяти подкачки по умолчанию. Представляет собой раздел жесткого диска, используемый исключительно для подкачки памяти; никакие другие файлы не могут находиться там.

Файл подкачки (англ. «swap file») — специальный файл, который находится среди остальных файлов вашей файловой системы.

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

Каждая перечисленная строка на вышеприведенном скриншоте (у нас всего 1 строка) обозначает имеющиеся у нас пространства подкачки. Рассмотрим детально пункты вывода:

Filename — указывает на расположение пространства подкачки (мы видим, что наш раздел подкачки находится в /dev/sda5).

Type — указывает, что пространство подкачки является разделом (partition), а не файлом (file).

Size — размер пространства подкачки в килобайтах.

Used — указывает на использованное количество килобайт памяти подкачки.

Priority — определяет, какое пространство подкачки использовать в первую очередь.

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

Примечание: Монтирование в Linux — это подключение диска в основную файловую систему.

Преимущества использования памяти подкачки

Изучая работу памяти подкачки, мы можем легко понять преимущества её использования, основные из которых перечислены ниже:

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

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

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

В процессе гибернации всё содержимое оперативной памяти записывается на диск в память подкачки.

Повышает общую производительность вашей системы.

Раздел подкачки

Раздел подкачки (англ. «swap partition») — это раздел жесткого диска, используемый исключительно для подкачки памяти; является типом памяти подкачки по умолчанию.

Добавление раздела подкачки

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

Примечание: Замените /dev/sda на путь к диску в вашей системе с разделом подкачки на нем.

Вы должны увидеть примерно следующее:

Как только ваш раздел пометится как swap, его необходимо будет подготовить с помощью команды mkswap (сокр. от «make swap«):

$ sudo mkswap /dev/sda5

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

$ sudo swapon /dev/sda5

/dev/sda5 swap swap defaults 0 0

/dev/sda5 — путь к разделу подкачки;

swap — означает, что раздел будет смонтирован как раздел подкачки;

defaults — означает использовать настройки по умолчанию;

0 (последние два параметра) означает, что данные параметры не используются.

Удаление раздела подкачки

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

Шаг №1: Отключаем раздел подкачки следующей командой:

$ sudo swappoff /dev/sda5

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

Шаг №2: Поскольку раздел подкачки управляется подсистемой инициализации systemd, то при следующем запуске системы он будет снова активирован. Чтобы навсегда отключить автоматическую активацию обнаруженного раздела подкачки, необходимо найти ответственный за подкачку swap-юнит:

UNIT (devsda5.swap) — это название swap-юнита, соответствующего разделу подкачки.

LOAD (loaded) — означает, что наш swap-юнит успешно загружен.

ACTIVE (inactive) — обобщенный статус юнита. Может принимать значения:

active — юнит запущен;

inactive — юнит остановлен.

SUB (dead) — более низкоуровневый статус юнита. В зависимости от типа юнита, может принимать значения:

exited — успешно завершил выполнение;

failed — ошибка при выполнении;

DESCRIPTION (/dev/sda5) — указывает на путь к swap-юниту (разделу подкачки).

Шаг №3: Отключаем дальнейшие запуски выбранного юнита с помощью команды mask :

$ sudo systemctl mask dev-sda5.swap

Шаг №4: Перезагружаем систему.

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

Или с помощью графической утилиты управления дисками GParted:

Примечание: Если в вашей системе отсутствует GParted, то вы можете установить её с помощью следующей команды:

sudo apt-get install gparted

Для полного удаления раздела подкачки через GParted, необходимо кликнуть по нему ПКМ и выбрать пункт «Удалить» :

Или же воспользоваться следующей командой в терминале:

Затем вам нужно будет нажать d (сокр. от англ. «delete»), чтобы попасть в режим удаления раздела. После чего вас попросят указать номер удаляемого раздела (у меня это — sda5, поэтому я указал номер 5 ). Далее нажмите w (сокр. от англ. «write»), чтобы записать внесенные изменения в таблицу разделов диска и выйти из fdisk :

Также необходимо проверить, что у вас закомментированы (символом # ) все упоминания раздела подкачки в файлах конфигурации /etc/fstab и /etc/initramfs-tools/conf.d/resume.

В завершении, чтобы в момент старта система знала, что такого раздела больше нет, нужно выполнить следующую команду:

Готово! Раздел подкачки удален!

Файл подкачки

Файл подкачки (англ. «swap file») — это специальный файл, который создается вручную, для подкачки в него неактивного содержимого ОЗУ, когда на жестком диске недостаточно места для создания полноценного раздела подкачки. Файл подкачки можно создавать и монтировать аналогично разделу подкачки. Преимущество файлов подкачки заключается в том, что вам не нужно искать пустой раздел или переделывать диск, чтобы добавить дополнительное пространство подкачки.

Добавление файла подкачки

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

Шаг №1: Создаем файл, который будет использоваться в качестве файла подкачки:

$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Часть /swapfile — это имя файла подкачки, а count=1048576 — размер файла подкачки в килобайтах (1048576 КБ ≈ 1.05 ГБ).

Шаг №2: Только root-пользователь должен иметь возможность записывать и читать файл подкачки. Для этого необходимо задать правильный тип разрешений:

$ sudo chmod 600 /swapfile

Шаг №3: Нужно подготовить файл подкачки с помощью команды mkswap так же, как мы это делали в случае с разделом, но на этот раз используем имя файла подкачки:

$ sudo mkswap /swapfile

Шаг №4: И точно так же монтируем файл подкачки с помощью команды swapon :

$ sudo swapon /swapfile

Затем нужно добавить запись в файл /etc/fstab для файла подкачки:

/swapfile swap swap defaults 0 0

Шаг №5: Чтобы убедиться, что мы активировали файл подкачки, используем команду swapon :

$ sudo cat /proc/swaps

Удаление файла подкачки

Если по какой-либо причине вы хотите отключить и удалить файл подкачки, выполните следующие шаги:

Шаг №1: Отключаем подкачку памяти с помощью следующей команды:

Шаг №2: Удаляем запись о файле подкачки из файла /etc/fstab:

/swapfile swap swap defaults 0 0

Шаг №3: Удаляем непосредственно сам файл подкачки с помощью команды rm :

Насколько большим должно быть пространство подкачки?

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

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

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

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

Для старых настольных компьютеров (имеющих, например, только 128 МБ оперативной памяти) по возможности выделяйте от 1 ГБ пространства и больше.

Настройка частоты использования пространства подкачки

$ sudo echo 50 > /proc/sys/vm/swappiness

Или, например, чтобы установить значение swappiness равным 10 через sysctl, нужно выполнить следующую команду:

$ sudo sysctl vm.swappiness=10

Если вы хотите перманентно изменить данное значение, то вам необходимо определить параметр vm.swappiness в файле /etc/sysctl.conf.

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

Заключение

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

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

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • что такое svchost exe в диспетчере задач windows 10
  • что такое support assist windows 10
  • что такое superfetch в windows 7
  • Что такое superfetch windows 10
  • Что такое super в linux

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии