Существует ли максимальный размер файла подкачки?

8

Насколько я знаю, теоретический предел для файла подкачки безумно велик в зависимости от того, используется ли 32-битная или 64-битная система.

Я сделал файл подкачки объемом 16 ГБ в 64-битной системе ОЗУ объемом 4 ГБ, в противном случае у меня были средние характеристики, потому что на моем внутреннем жестком диске объемом 1 ТБ более чем достаточно ...

Но действительно ли большой файл подкачки имеет значение в скорости / производительности?

Девон ван Шур
источник
1
Связанный: askubuntu.com/q/49109/367990
Byte Commander
2
IMO, если вы используете swap, вам действительно нужно больше оперативной памяти, а не больший файл подкачки
Panther
1
если вы используете жесткие диски, тогда вам следует использовать zram и снизить приоритет подкачки жестких дисков. И такой большой раздел подкачки не поможет, потому что по типу, который вы используете, например,
подкачка
2
Связанный: askubuntu.com/q/1017021/504066
PerlDuck
Насколько я помню, файл подкачки будет занимать некоторое количество физической памяти (я думаю, что менее 1% от размера файла подкачки). Таким образом, наличие слишком большого файла подкачки может снизить производительность из-за этого потребления памяти. Но для файла подкачки разумного размера это не будет проблемой.
Касперд

Ответы:

7

Вы можете иметь до 32 областей подкачки (файлов или разделов) объемом до ~ 4 миллиардов (2 ^ 32) страниц каждая, где «страница» имеет размер 4 КБ в традиционной (например, x86 или x86_64) системе, но может быть больше в других архитектуры или если вы специально настроили большие страницы.

Это дает теоретический максимум 16 ТБ на область подкачки и до 32 областей подкачки. Могут быть и другие ограничения, которые применяются, прежде чем вы достигнете этого, но это такая же большая область подкачки, которая mkswapможет создать для вас.

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

На момент написания очень маловероятно, что пространство подкачки будет больше, чем примерно на 4 ГБ больше, чем объем вашей физической памяти, если ваша система не работает ненормально. В типичной системе, такой как настольная система, используемая одним человеком за раз, вы, возможно, даже остановитесь на максимуме, скажем, от 6 до 8 ГБ, даже если ваша физическая память больше.

thomasrutter
источник
6

Это не имеет значения с точки зрения скорости или производительности. Это позволяет вам использовать до 20 ГБ виртуальной памяти, прежде чем OOM killer начнет уничтожать процессы, чтобы освободить память.

Если вы хотите лучшую производительность:

  • уменьшите, swappinessесли вы не используете более 4 ГБ, что часто
  • добавить оперативную память
  • переключитесь на SSD и поместите в него файл подкачки
Чай Т. Рекс
источник
Если вы часто сталкиваетесь с необходимостью замены блоков памяти, SSD из-за их архитектуры и ограниченных циклов записи не подходит, потому что он может очень быстро израсходовать циклы записи SSD. Если вам понадобится только время от времени подкачки памяти, SSD вполне подойдет.
Видеонавт
11
@Videonauth: «Легко используйте циклы записи на SSD очень быстро»: любой полуприличный современный SSD может записывать всю емкость SSD день за днем ​​в течение многих лет . Ваш совет мог быть верным в 2010 году, но он устарел. Даже потребительский 256 ГиБ Samsung SSD 840 может поддерживать запись 100 ГиБ в день в течение более 2 лет.
AlexP
Если у вас много оперативной памяти, уменьшение перестановки имеет еще меньшее значение, чем если бы у вас было мало оперативной памяти. Фактически установка большого количества ОЗУ делает любые другие настройки для замены избыточными, если этого достаточно, чтобы избежать обмена. Сохраняйте раздел подкачки для стабильности «на всякий случай», 99,9% времени он не будет использоваться, и вы сохраните отличную производительность.
Томасруттер
1
Кроме того, вопрос об ограниченных циклах записи на SSD не соответствует действительности уже более десяти лет, и настало время вызвать этот FUD. Извините, этот комментарий настолько избыточен, учитывая, что AlexP уже обратился к этому, но он подчеркивает. SSD отлично подходят для приложений с интенсивной записью.
Томасруттер
1
Выравнивание износа в твердотельных накопителях стало предметом примерно в 2008 году ( статья 2008 года | статья Anandtech 2009 года ). «В 2008 году ноутбуки по обычным потребительским ценам даже поставлялись с твердотельными накопителями», черт возьми, твердотельные накопители были очень дорогими и не были стандартными.
Томасруттер
3

Согласно ответу Жиля

... Раньше был предел размера подкачки в 2 ГБ (на большинстве 32-битных платформ), но это не было в течение многих лет. Ограничение было снято в какой-то момент в ядре серии 2.2.

Кроме того, он цитирует справочную страницу для mkswap:

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

В библиотеке linux / swap.h есть MAX_SWAPFILESзапись, поэтому существует ограничение на количество файлов подкачки на уровне ядра, однако это, очевидно, также не является определяющей областью. Согласно связанному документу:

Следует отметить, что шесть битов для «типа» должны позволять существовать до 64 областей подкачки в 32-битной архитектуре вместо ограничения MAX_SWAPFILES в 32

Насколько я понимаю, в 32-битных архитектурах может быть максимум до 64 файлов подкачки. Однако я не заметил в документе упоминания о том, что произойдет с 64-битной архитектурой. Также стоит отметить, что в этом случае попытки ОП создать файлы подкачки потерпели неудачу на 30-й записи.

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

Сергей Колодяжный
источник
2

Этот ответ может не подходить для Ubuntu 18.04 (спасибо @Chai T. Rex за это в комментариях).

Во всяком случае, для предыдущих версий, вот так (предлагаемого обновления LTS> LTS до сих пор не существует, так что это может быть актуально):

Это не файл, это раздел, и да, это происходит из-за перестановки

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

Таким образом, в основном, если ваш раздел подкачки намного больше, чем у вас есть RAM, система будет иметь тенденцию менять больше, вызывая общую медлительность.

dadexix86
источник
4
Теперь есть файлы подкачки, и они используются по умолчанию (вместо разделов) при установке 18.04 с нуля.
Чай Т. Рекс
1
Я предполагаю, что поведение подкачки практически не меняется, независимо от того, поддерживается ли оно разделом или файлом. Вы также можете иметь несколько файлов подкачки и / или разделов одновременно. Во всяком случае, я не думаю, что больший объем свопа будет иметь отрицательный эффект, пока остается достаточно оперативной памяти.
Byte Commander
Я бы предположил то же самое, но пока я не
пойму
Есть разделы подкачки и есть файлы подкачки. Разделы подкачки могут использоваться двумя или более установками Linux на одном ПК (двойная загрузка или тройная загрузка). Раздел подкачки лучше в случае полного диска, где файл подкачки может быть создан фрагментированным. ... Файлы подкачки будут работать так же хорошо, как и разделы подкачки, если они созданы на неполных дисках, чтобы избежать фрагментации - Девон ван Шур j
Девон ван Шур
2

При увеличении размера раздела подкачки до сколь угодно большого разницы не наблюдается.

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

Перестановка происходит довольно медленно, а увеличение перестановки снижает производительность. Однако это имеет влияние только в том случае, если недостаточно ОЗУ. Но это лучше, чем не иметь никакого обмена. Я рекомендую сделать размер раздела подкачки в два раза больше вашей оперативной памяти.

Занна
источник
5
эта рекомендация устарела. Современные системы с 32 или 64 ГБ оперативной памяти не требуют подкачки 64 или 128 ГБ
phuclv
3
@ LưuVĩnhPhúc Я бы не использовал более 2 ГБ подкачки в эти дни ...
el.pescado
2 ГБ кажется очень низким ... виртуальные машины или игры могут действительно заполнить более 2 ГБ подкачки очень быстро. Я думаю, что от 4 до 8 ГБ подкачки хорошо работает с любым количеством оперативной памяти. Если вам нужно больше 8 ГБ, то вам, вероятно, следует добавить больше оперативной памяти.
Жермен
0

Я прихожу к тому, что файл подкачки или раздел подкачки практически не имеют ограничений. Кроме того, мой файл подкачки 16 ГБ довольно большой, но размер не влияет на скорость.

Однако я понимаю, что скорость влияет на то, что система фактически использует это пространство подкачки, а не физическое оборудование.

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

sudo -s
nano /etc/sysctl.conf

Добавлено в файл:

#vm.swappiness = 50

спасти

sudo sysctl -p

обновить (или мог просто перезагрузиться)

Девон ван Шур
источник
Добавление строки #vm.swappiness = 50в /etc/sysctl.confне имеет никакого эффекта, ведущие #делает эту линию комментария, удалите его. Вы можете проверить swappiness с cat /proc/sys/vm/swappiness.
mook765
Но метод, который я описал, сработал. Когда я ввожу [cat / proc / sys / vm / swappiness], я получаю 50 в качестве вывода
Девон ван Шур