Какова цель нескольких файлов подкачки

29

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

Можно изменить это поведение с swapon -p priority

Согласно справочным страницам, приоритетом является:

PRIORITY
Each swap area has a priority, either high or low. The default priority is 
low. Within the low-priority areas, newer areas are even lower priority 
than older areas.
All priorities set with swapflags are high-priority, higher than default. 
They may have any non-negative value chosen by the caller. Higher numbers 
mean higher priority.

Swap pages are allocated from areas in priority order, highest priority 
first. For areas with different priorities, a higher-priority area is 
exhausted before using a lower-priority area. If two or more areas have the 
same priority, and it is the highest priority available, pages are 
allocated on a round-robin basis between them.

As of Linux 1.3.6, the kernel usually follows these rules, but there are 
exceptions

Зачем вам нужно больше, чем один файл подкачки?
Является ли обычной практикой для системных администраторов настраивать более одного обмена?

spuder
источник

Ответы:

48

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

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

Изменение размера или перемещение областей подкачки: Вы не можете изменить размеры областей подкачки (как упомянул Эван Тейтельман ). И вы не можете просто swapoffсоздать новую область подкачки, а затем еще swaponраз, если у вас недостаточно ОЗУ: вы swapoffхотите переместить все выгруженные страницы в ОЗУ, прежде чем освободить область подкачки. Таким образом, вы создаете временную область подкачки, swapoffоригинал, подождите, пока все страницы не переместятся из старой области подкачки во временную, измените размер исходного раздела подкачки, mkswapего, затем swaponизмененного размера и swapoffвременного. Измененные страницы копируются из области временного обмена в область с измененным размером, и все готово. Если вы перемещаете области подкачки, вам даже не нужна временная область. mkswapновый, swaponто, тоswapoff старый и все переехал.

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

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

Симметричное распределение нагрузки: в хорошо скомпонованной системе с большим количеством шпинделей (например, на сервере) мне бы хотелось иметь несколько разделов подкачки, занимающих начало каждого диска (чтобы воспользоваться возможностью записи битов зоны ). Все они имеют одинаковые приоритеты, поэтому ядро ​​будет балансировать нагрузку подкачки. Один шпиндель может дать вам 100 МБ / с, но обмен по всем шпинделям может дать вам кратное количество. (наивно говоря)

Балансировка нагрузки с учетом узких мест : на практике, однако, существуют и другие узкие места. Так, например, 16-дисковый сервер может иметь четыре порта SATA 6 Гбит / с, каждый с четырехпортовым умножителем и четырьмя дисками, разделяющими полосу пропускания. Если вы знаете об этом, вы можете организовать пространство подкачки таким образом, чтобы диск 1 на портах 1–4 имел наивысший приоритет, вторые диски на портах 1–4 имели второй наивысший приоритет и т. Д. Это приведет к перестановке баланса нагрузки, но не приведет к перегрузке мультипликаторы портов.

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

Соображения относительно размера: (любезно предоставлено Дэвидом Коэном ), возможно, размещение всего вашего подкачки на одном диске освобождает несколько дисков бесплатно (это звучит как сценарий 2001 года, но есть много старых или встроенных устройств, где это может быть проблемой). Распределите его по всем дискам и вдобавок ко всем другим преимуществам, указанным выше, вы получите лучшее использование дискового пространства для каждого диска. Одно дело потерять пару гигов на шпиндель, а другое - потерять 300 гигов с одного диска.

Чрезвычайные ситуации: у вас есть ровно 96 часов, чтобы представить свою кандидатскую диссертацию, и ваш последний эксперимент (который может принести вам этот Нобелевский приз, а также смешные буквы в смешанном регистре после вашего имени) высасывает память с впечатляющими показателями. У тебя почти нет свопа. Вы создаете файл подкачки с приоритетом, меньшим, чем приоритет вашего основного устройства подкачки - ядро ​​будет использовать его как пространство подкачки переполнения. Вы даже можете установить swapd, чтобы сделать это для вас автоматически, так что у вас также будет достаточно места для подкачки для этих огромных emacsи LaTeX-прогонов.

Переключение между разными носителями: Linux не может переключаться на символьные устройства, но есть много разных носителей, физических и виртуальных: твердотельные накопители (примечание: вы, вероятно, не хотите менять местами на твердотельных накопителях), десятки поразительно разных типов крутого вращения диски, дискеты (да, вы можете поменять их на дискете - вы всегда можете выстрелить себе в ногу с Unix), тома DRBD, тома iSCSI, LVM, зашифрованные разделы LUKS и т. д. (включая сюрреалистические, ошеломляющие многоуровневые комбинации этих - поменяйте местами LUKS на LVM на ZIP-диске с параллельным портом через iSCSI через IEEE802.3 и агрегированный Ethernet? Нет проблем, грязный извращенец). Это нишевые сценарии, и они предназначены для поддержки нишевых требований.

Алексиос
источник
Спасибо, я не знаком с записью битов Zone. Мне любопытно, что я бы переместил свой раздел подкачки в начало диска, поэтому я открыл новый вопрос на superuser.com
spuder
1
Я бы добавил историческую причину, по которой в прошлом использование одного диска в качестве устройства подкачки иногда было неэффективным, поскольку оно занимало слишком много места и делало оставшуюся часть диска бесполезной или менее полезной, а также делило пространство подкачки на несколько устройств. обеспечил компромисс между большим пространством подкачки и объемом доступного непрерывного пространства на диске.
Диди Коэн
Это все еще так. Кроме того, вы можете захотеть, чтобы ваш своп занимал самую быструю зону диска, и только это. Который только дает вам так много места для игры за шпиндель. Хотя исторически это было не так, потому что зонированные жесткие диски - это «новая» вещь. (моя версия «исторического» - это когда память измеряется словами)
Алексиос
+1 за «ты всегда можешь выстрелить себе в ногу с Unix» :-)
DUzun
3

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

Люк
источник
3

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

Кроме того, если системе требуется 4 ГБ пространства подкачки и имеется два блока памяти по 2 ГБ, она должна использовать как минимум две области подкачки.


источник