Чи існує максимальний розмір, при якому може функціонувати файл підкачки?


8

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

Я створив файл обміну 16 ГБ в 4 Гб оперативної 64-бітної системи з інакше низькими середніми характеристиками, тому що у мене на внутрішньому жорсткому диску 1 ТБ більше місця достатньо ...

Але чи дійсно великий файл підкачки змінює швидкість / продуктивність?



2
IMO, якщо ви використовуєте своп, вам дійсно потрібно більше оперативної пам’яті, а не більший файл підкачки
Panther

1
якщо ви використовуєте жорсткі диски, то замість цього слід використовувати zram і знижувати пріоритет змін. І такий великий розділ swap не допоможе, тому що за типом, яким ви користуєтесь, як 4GB своп, ваша система повільно сканувала
phuclv

2
Пов’язано: askubuntu.com/q/1017021/504066
PerlDuck

Наскільки я пам'ятаю, файл swap буде споживати деяку кількість фізичної оперативної пам’яті (я думаю, що менше 1% від розміру файлу swap). Тому наявність надмірно великого файлу своп може погіршити продуктивність через споживання пам’яті. Але для файлів своп із досить великим розміром це не буде проблемою.
kasperd

Відповіді:


7

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

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

Щодо того, наскільки ви хочете, будь-яка площа заміни, що перевищує максимум, який ви фактично використовуєте, нічого не сприяє продуктивності та стабільності системи. Хитрість полягає в тому, щоб оцінити максимальний обсяг використання, який коли-небудь відбудеться в нормальній або навіть ненормальній ситуації, і використовувати його як розмір файлу своп і не більше.

На момент написання запиту обмінність місця, розміром більше ніж на 4 Гб більше, ніж ваш фізичний об'єм пам’яті, навряд чи буде використана, якщо тільки ваша система не дуже аномальна. У типовій такій системі, як настільна система, яку використовує одна людина за один раз, ви, ймовірно, навіть можете зупинитися на максимум від 6 Гб до 8 ГБ, навіть якщо фізична пам'ять більша.


6

Це не має різниці в швидкості чи продуктивності. Він просто дозволяє використовувати до 20 ГБ віртуальної пам’яті до того, як вбивця OOM почне вбивати процеси для повернення пам'яті.

Якщо ви хочете покращити продуктивність:

  • зменшується, swappinessякщо ви часто не використовуєте більше 4 Гб
  • додати оперативну пам’ять
  • перейти на SSD і покласти на нього файл swap

Якщо вам часто доводиться міняти блоки пам’яті, SSD через їх архітектуру та обмеженість циклів запису - це не дорога, оскільки вона може дуже швидко використовувати цикли запису на SSD. Якщо ви зрідка стикаєтесь з потребою в обміні пам'яті, SSD-файли - це добре
Videonauth

11
@Videonauth: "Легко користуйтеся циклами запису на SSD дуже швидко": будь-який напівпристойний сучасний SSD може роками писати повну потужність SSD . Ваша порада, можливо , була правильною у 2010 році, але вона застаріла. Навіть споживач 256 GB GiB Samsung SSD 840 може витримувати 100 Гб на день більше 2 років.
AlexP

Якщо у вас багато оперативної пам’яті, зменшення простоти робить ще менше значення, ніж якщо б ви обмежили оперативну пам’ять. Насправді встановлення великої кількості оперативної пам’яті робить будь-які інші налаштування для заміни зайвими, якщо цього достатньо, щоб уникнути заміни. Зберігайте розділ swap для стабільності «про всяк випадок», 99,9% часу він не буде використовуватися, і ви збережете велику продуктивність.
thomasrutter

1
Крім того, річ щодо обмежених циклів запису на SSD не відповідає дійсності вже не одне десятиліття. Насправді саме цей FUD потрібно викликати. Вибачте, цей коментар настільки зайвий, враховуючи те, що AlexP вже вирішив це, але це не лише підкреслює. SSD-диски чудово підходять для важких додатків.
thomasrutter

1
Вирівнювання зносу на жорстких дисках стало річчю приблизно в 2008 році ( стаття 2008 р. | Стаття Anandtech 2009 р.). "Чи були ноутбуки за звичайними споживчими цінами навіть із SSD-дисками в 2008 році" чорт, ні.
thomasrutter

3

Відповідно до відповіді Жиля

... Раніше був обмежений розмір розміром 2 Гб (на більшості 32-бітних платформ), але це вже не так вже роками. Обмеження було знято в якийсь момент у серії ядра 2.2.

Крім того, він цитує сторінку чоловіка для mkswap:

Максимальний корисний розмір області swap залежить від архітектури та версії ядра.

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

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

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

Що стосується swap-розділів, то, окрім раніше згаданих констант, для цього в ядрі немає обмежень, але кількість будь-яких розділів все ще буде обмежена базовим компонуванням BIOS та диска .


2

Ця відповідь може не підійти для Ubuntu 18.04 (спасибі @Chai T. Rex за те, що це вказав у коментарях).

У будь-якому випадку для попередніх версій, це стосується (все ще немає запропонованого оновлення LTS> LTS, тому це все ще може бути актуальним):

Це не файл, це розділ, і так, це відбувається через простоту

Параметр swappiness контролює схильність ядра до переміщення процесів з фізичної пам'яті та на диск обміну. Оскільки диски набагато повільніше, ніж оперативна пам'ять, це може призвести до уповільнення часу реакції для системи та додатків, якщо процеси занадто агресивно переміщуються з пам'яті.

Таким чином, якщо ваш розділ swap набагато більший, ніж у вас є оперативна пам'ять, система, як правило, заміняється більше, викликаючи загальну повільність.


4
Зараз є файли swap, і вони за замовчуванням (замість розділів) при установці 18.04 з нуля.
Чай Т. Рекс

1
Я припускаю, що поведінка swap майже не змінюється, незалежно від того, підтримується він розділом чи файлом. Ви також можете мати кілька файлів підкачки та / або розділів одночасно. У будь-якому разі, я не думаю, що більше своп не матиме негативного ефекту, поки залишилось достатньо оперативної пам’яті.
Командир байт

Я б припустив те саме, але поки я не
прийму

Там розміщуються розділи і є файли своп. Розмінні розділи можуть використовуватися двома або більше установками Linux на одному ПК (подвійне завантаження або потрійна завантаження). Розміняти розділ краще в разі повного диска, на якому можна було б створити фрагмент файлу своп. ... Файли swap працюватимуть так само добре, як і swap-розділи, якщо вони створені на неповних дисках, щоб уникнути фрагментації - Devon van Schoor j
Devon van Schoor,

2

Немає великої різниці в швидкості та продуктивності при збільшенні розділу swap, щоб бути довільно великим.

Існує кілька факторів, пов’язаних із свопом, які можуть вплинути на продуктивність, такі як swappinessтип жорсткого диска (SDD або HDD).

Зміна досить повільна, а посилення заміщення знижує продуктивність. Однак це впливає лише при недостатній кількості оперативної пам'яті. Але це краще, ніж не робити будь-яких свопів. Моя рекомендація - зробити розмір розділу swap вдвічі більшим, ніж ваша ОЗУ.


5
ця рекомендація застаріла. Сучасним системам з 32 або 64 ГБ оперативної пам’яті не знадобиться обмін 64 або 128 ГБ
phuclv

3
@ LưuVĩnhPhúc Я б сьогодні не використовував більше 2 Гб свопу ...
el.pescado

2 Гбіт здається дуже низьким ... віртуальні машини чи ігри дійсно можуть дуже швидко заповнити більше 2 Гб свопу. Я думаю, що 4 до 8gb своп добре працює з будь-якою кількістю оперативної пам'яті. Якщо вам потрібно більше 8 ГБ, то, ймовірно, слід додати більше оперативної пам’яті.
Жермен

0

Я дійшов до того, що файл swap або розділ swap практично не мають меж. Також мій файл обміну 16 ГБ досить великий, але розмір не впливає на швидкість.

Однак, що я збираюсь, це те, що впливає на швидкість - це система, яка фактично використовує цей swap-простір на відміну від фізичного обладнання.

Моє рішення для цього полягає в тому, щоб зробити високе значення swappiness, щоб своп не використовувався надмірно на відміну від більш швидкого обладнання. так я і зробив:

sudo -s
nano /etc/sysctl.conf

Додано до файлу:

#vm.swappiness = 50

зберегти

sudo sysctl -p

оновити (або міг щойно перезавантажити)


Додавання рядка #vm.swappiness = 50в /etc/sysctl.confне має ніякого ефекту, провідні #робить цю лінію коментаря, видаліть його. Ви можете перевірити заміщення cat /proc/sys/vm/swappiness.
mook765

Але описаний нами метод справді спрацював. Коли я ввожу [cat / proc / sys / vm / swappiness], я отримую 50 як вихід
Devon van Schoor
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.