Первая часть. Пространство подкачки
Для правильной работы компьютера требуется достаточный объем памяти. Просто сказать, что никогда не может быть достаточно. Чем больше физической памяти установлено, тем она дороже. В большинстве случаев результатом является умный компромисс между стоимостью и скоростью доступа к ячейкам памяти.
Для достижения этого компромисса системы UNIX / Linux объединяют два типа памяти - физическую память (RAM) и пространство подкачки. Все вместе это называется виртуальной памятью вычислительной системы. Физическая память довольно дорогая, но быстрая и доступна за наносекунды. Напротив, своп-память довольно дешевая, но медленная и доступна за миллисекунды.
Есть несколько причин, по которым память подкачки полезна. Во-первых, иногда отдельным процессам требуется больше памяти, чем физически владеет система, и они могут предоставить больше памяти процессам, которым она необходима. В результате все данные, которые хранятся в физической памяти, больше не могут там храниться. Теперь в игру вступает пространство подкачки, и выбранные страницы памяти передаются в пространство подкачки, чтобы освободить физическую память.
Во-вторых, не все данные нужны в памяти одновременно. Вот почему менее используемые страницы памяти припарковываются в области подкачки, чтобы иметь как можно больше свободной физической памяти. Этот метод называется алгоритмом замены наименее недавно использовавшейся страницы (LRU) [1].
Типы свопа
Пространство подкачки существует в двух вариантах. Версия 1 - это отдельный раздел диска, который является так называемым разделом подкачки. На этом разделе нет файлов, кроме информации о памяти (дампы). Проще говоря, версия 2 - это файл на диске, который находится в файловой системе на вашем жестком диске. Версия 1 очень распространена в системах UNIX / Linux, BSD и OS X, тогда как версия 2 существует в системах, работающих под управлением Microsoft Windows. Версия 2 также может быть включена в системах UNIX / Linux (см. Ниже).
Чтобы узнать, какое пространство подкачки активно в вашей системе UNIX / Linux, выполните в терминале следующую команду:
$ / sbin / swapon -sИмя файла Тип Размер Используемый приоритет
/ dev / dm-3 раздел 16150524 316484-1
$
В качестве альтернативы вы можете отправить запрос в файловую систему proc и запустить команду cat / proc / swaps
Эта система Linux имеет раздел подкачки размером около 15 ГБ, в котором используется более 300 МБ, в настоящее время. В столбце «Приоритет» показано, какое пространство подкачки использовать в первую очередь. Значение по умолчанию -1. Чем выше значение приоритета, тем раньше учитывается это пространство подкачки. Параметр -s - это краткая версия -summary. Эта опция устарела, и вместо нее рекомендуется использовать опцию -show следующим образом:
$ / sbin / swapon --show = ИМЯ, ТИП, РАЗМЕР, ИСПОЛЬЗУЕМЫЕ, ПРИОИМЯ ТИП РАЗМЕР ИСПОЛЬЗУЕМЫЙ ПРИО
/ dev / dm-3 раздел 15,4G 307,1M -1
$
Параметр -show принимает список значений, представляющих заголовки столбцов. Чтобы добиться определенного порядка вывода, выберите нужные заголовки столбцов и их последовательность.
Размер свопа
Как правило, рекомендуется, чтобы размер области подкачки был в два раза больше, чем у системы есть физическая память. Имейте это в виду для установок общего назначения и настольных компьютеров. Для серверов UNIX / Linux с гораздо большим объемом физической памяти вы можете уменьшить размер области подкачки до 50% ОЗУ. Ноутбуки, которые могут переходить в спящий режим, должны быть немного больше, чем физическая память.
Монтаж
Для раздела подкачки рекомендуется подумать о пространстве подкачки с самого начала разделения диска на отдельные разделы или оставить достаточно неиспользуемого дискового пространства, чтобы использовать его позже, в конечном итоге. Обычно во время настройки используемых дисков процедура установки спрашивает вас о размере пространства подкачки. Например, в Debian GNU / Linux это выглядит следующим образом:
Как упоминалось выше, пока у вас есть место для новых разделов на жестком диске, вы можете создавать и включать разделы подкачки с помощью таких команд, как fdisk и swapon.
В качестве альтернативы пространство подкачки также можно включить позже как файл подкачки. Linux поддерживает этот способ, так что вы можете создавать, готовить и монтировать его аналогично разделу подкачки. Преимущество этого способа в том, что вам не нужно повторно разбивать диск, чтобы добавить дополнительное пространство подкачки.
В качестве примера мы создаем файл с именем / swapfile размером 512 МБ и включаем его как дополнительное пространство подкачки. Сначала с помощью команды dd создаем пустой файл. Во-вторых, mkswap использует этот файл для преобразования его в стиль подкачки. Вы можете заметить, что содержимое файла обрабатывается как раздел, и ему назначается соответствующий UUID. В-третьих, мы включаем это с помощью swapon. Наконец, команда swapon -show отображает две записи подкачки - раздел и вновь созданный файл.
# dd if = / dev / zero of = / swapfile bs = 1024 count = 524288524288 + 0 наборов данных в
524288 + 0 наборов данных
536870912 байт (537 МБ) скопировано, 0,887744 с, 605 МБ / с
# mkswap / swapfile
Настройка пространства подкачки версии 1, размер = 524284 КБ
без метки, UUID = e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon / swapfile
# swapon --show = ИМЯ, ТИП, РАЗМЕР, ИСПОЛЬЗУЕМЫЕ, ПРИО
ИМЯ ТИП РАЗМЕР ИСПОЛЬЗУЕМЫЙ ПРИО
/ dev / dm-3 раздел 15,4G 288,9M -1
/ swapfile файл 512M 0B -2
#
Чтобы использовать этот файл подкачки во время загрузки, добавьте от имени администратора следующую строку в файл / и т.д. / fstab:
Отключение пространства подкачки
И наконец, но не последняя, есть еще одна команда для отключения файла подкачки. Команда называется обмен
. Требуется единственный параметр, который указывает, что устройство подкачки должно быть отключено. Эта команда отключает активированный ранее файл подкачки:
Также, обмен
может работать с UUID файловой системы. Делать обмен
действовать таким образом используйте опцию -U
за которым следует UUID соответствующей файловой системы. В случае, если необходимо отключить сразу все места подкачки, опция -а
(длинный вариант -все) довольно удобно. Полная команда swapoff -a.
Настройка экосистемы подкачки
Начиная с версии ядра Linux 2.6 было введено новое значение. Это хранится в переменной / proc / sys / vm / swappiness
и контролирует относительный вес, придаваемый выгрузке из оперативной памяти, в отличие от удаления страниц памяти из системного кэша страниц [2]. Значение по умолчанию - 60 (процент свободной памяти до активации подкачки). Чем ниже значение, тем меньше используется подкачка и тем больше страниц памяти хранится в физической памяти.
- 0: своп отключен
- 1: минимальный объем подкачки без его полного отключения
- 10: рекомендуемое значение для повышения производительности при наличии достаточного объема памяти в системе
- 100: агрессивный обмен
Чтобы установить значение, временно установите значение в файловой системе / proc следующим образом:
# эхо 10> / proc / sys / vm / swappinessВ качестве альтернативы вы можете использовать sysctl
команду следующим образом:
Чтобы установить значение навсегда, добавьте в файл следующую строку / и т.д. / sysctl.conf:
Своп все еще актуален?
Вы можете спросить, почему мы занимаемся этой темой. У современных компьютеров достаточно физической памяти - так зачем нам об этом заботиться?? Есть несколько причин, по которым эта технология стоит больше, чем просто мысли.
Имейте в виду, что вы какое-то время пользуетесь своей машиной, но время от времени можете обновлять программное обеспечение, которое вы на ней используете. В настоящее время и оборудование, и программное обеспечение подходят друг другу. В будущем это может измениться, и вам понадобится больше памяти, чем сейчас. Если вы не обновите или не купите новое оборудование, раздел подкачки может сэкономить вам немного денег.
Возможно, вы слышали о функции, называемой приостановкой на диск или режимом гибернации [3]. Ваша машина собирается спать. Перед этим он должен где-то сохранить свое текущее состояние. Теперь в игру вступает пространство подкачки, которое действует как контейнер для хранения этих данных. Как только машина проснется, в следующий раз все данные будут считаны из области подкачки, загружены в память, и вы сможете продолжить работу с того места, где остановились раньше.
Система, если у нее есть только одно постоянное запоминающее устройство, должна будет читать и записывать ваши файлы при подкачке на одном и том же устройстве. Вы увидите огромное улучшение, если у вас будет второе устройство, и вы сможете отделить устройство подкачки от конфликтующих обращений к файлам.
Файл подкачки должен передавать данные через файловую систему. Это добавляет уровень косвенности, чтобы создать впечатление, что существует непрерывное логическое адресное пространство, с которым ядро может работать. Это добавляет дополнительные накладные расходы на память и циклы процессора. Вы получите наилучшие результаты, используя необработанный раздел подкачки.
Заключение
Даже сегодня знания о Swap необходимы. Эта тема является частью знаний, необходимых для сдачи уровня 1 сертификата профессионального института Linux (LPIC 1). Большинство экзаменов содержат один или два вопроса по этой теме.
Пространство подкачки помогает вашей системе (ядру) Linux быстро организовать память, если в этом есть необходимость. Чтобы быть открытым с вами, пространство подкачки не обязательно, если в вашей системе много оперативной памяти. В случае возникновения чрезвычайных ситуаций это помогает вашей системе выжить. Вот почему я никогда не сойду с пути традиционной установки без места подкачки.
Комбинация Swap и SSD обсуждается спорно, потому что количество операций записи диска на SSD довольно ограничено. И файлы подкачки, и временные файлы созданы для записи большого количества данных. С другой стороны, у современных SSD более чем достаточно дополнительного места (7%), чтобы справиться с отказами секторов. На всякий случай: если возможно, сделайте отдельный Swap на обычном жестком диске - не используйте ramdisk или SSD, по крайней мере, для swap [4]. Ваша система Linux поблагодарит вас за это решение.
Чтобы не ставить подкачку на твердотельный накопитель, вы можете использовать ZRAM [5,6]. Это виртуальный своп, сжатый в ОЗУ, также называемый zSwap. Эта технология позволяет хранить сжатые блочные устройства в памяти. Как только не остается свободной памяти, страницы памяти передаются на это блочное устройство. Это приводит к меньшему использованию подкачки и помогает продлить срок службы жесткого диска.
Ссылки и ссылки
- [1] Эндрю. S. Таненбаум: алгоритм замены наименее используемых страниц (LRU) в современных операционных системах
- [2] Википедия: https: // en.википедия.org / wiki / Swappiness
- [3] Управление питанием / приостановка и переход в спящий режим, Arch Linux Wiki
- [4] Часто задаваемые вопросы о свопе
- [5] ZRAM в Debian GNU / Linux
- [6] Архив ядра Linux о ZRAM
Серия Linux по управлению памятью
- Часть 1: Управление памятью ядра Linux: пространство подкачки
- Часть 2: Команды для управления памятью Linux
- Часть 3: Оптимизация использования памяти Linux
Благодарности
Автор благодарит Мэнди Ноймайер и Герольда Руппрехта за их поддержку при подготовке этой статьи.