Ядро Linux

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

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

Первая часть. Пространство подкачки

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

Для достижения этого компромисса системы 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 = 524288
524288 + 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:

/ swapfile нет swap sw 0 0

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

И наконец, но не последняя, ​​есть еще одна команда для отключения файла подкачки. Команда называется обмен. Требуется единственный параметр, который указывает, что устройство подкачки должно быть отключено. Эта команда отключает активированный ранее файл подкачки:

# swapoff / swapfile

Также, обмен может работать с UUID файловой системы. Делать обмен действовать таким образом используйте опцию -U за которым следует UUID соответствующей файловой системы. В случае, если необходимо отключить сразу все места подкачки, опция (длинный вариант -все) довольно удобно. Полная команда swapoff -a.

Настройка экосистемы подкачки

Начиная с версии ядра Linux 2.6 было введено новое значение. Это хранится в переменной / proc / sys / vm / swappinessи контролирует относительный вес, придаваемый выгрузке из оперативной памяти, в отличие от удаления страниц памяти из системного кэша страниц [2]. Значение по умолчанию - 60 (процент свободной памяти до активации подкачки). Чем ниже значение, тем меньше используется подкачка и тем больше страниц памяти хранится в физической памяти.

Чтобы установить значение, временно установите значение в файловой системе / proc следующим образом:

# эхо 10> / proc / sys / vm / swappiness

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

# sysctl -w vm.swappiness = 10

Чтобы установить значение навсегда, добавьте в файл следующую строку / и т.д. / sysctl.conf:

vm.swappiness = 10

Своп все еще актуален?

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

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

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

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

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

Заключение

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

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

Комбинация Swap и SSD обсуждается спорно, потому что количество операций записи диска на SSD довольно ограничено. И файлы подкачки, и временные файлы созданы для записи большого количества данных. С другой стороны, у современных SSD более чем достаточно дополнительного места (7%), чтобы справиться с отказами секторов. На всякий случай: если возможно, сделайте отдельный Swap на обычном жестком диске - не используйте ramdisk или SSD, по крайней мере, для swap [4]. Ваша система Linux поблагодарит вас за это решение.

Чтобы не ставить подкачку на твердотельный накопитель, вы можете использовать ZRAM [5,6]. Это виртуальный своп, сжатый в ОЗУ, также называемый zSwap. Эта технология позволяет хранить сжатые блочные устройства в памяти. Как только не остается свободной памяти, страницы памяти передаются на это блочное устройство. Это приводит к меньшему использованию подкачки и помогает продлить срок службы жесткого диска.

Ссылки и ссылки

Серия Linux по управлению памятью

Благодарности

Автор благодарит Мэнди Ноймайер и Герольда Руппрехта за их поддержку при подготовке этой статьи.

Игры HD Remastered для Linux, ранее не выпускавшиеся для Linux
Многие разработчики и издатели игр придумывают HD-ремастеры старых игр, чтобы продлить жизнь франшизы, порадовать фанатов, требующих совместимости с с...
Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...
Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...