поміняти розділ на файл для продуктивності?


62

Що краще для продуктивності? Розділ, що знаходиться ближче до внутрішньої сторони диска, матиме повільніші часи доступу, і нам потрібно дочекатися, коли накопичувач переключиться між ОС та підкачати розділи.

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

У чому полягає вигода на продуктивність?

Скільки значення має swapfile із фіксованим розміром?

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


Тільки з цікавості. Чи можете ви надати деталі системи, такі як версія ядра, ОЗУ, розділ та схема файлової системи?
Вікі

На якій ОС ви шукаєте?
Шатьє Матьє

4
Інформацію про Linux див. Lkml.org/lkml/2005/7/7/326
Адам Монсен

Будь-яке оновлення для запитання відповідає?
кокбіра

Відповіді:


29
  1. На жорстких дисках пропускна здатність і пошук часто проходять швидше до початку диска, оскільки ці дані зберігаються ближче до зовнішньої області диска, яка має більше секторів на циліндр. Таким чином, створення swap на початку диска може підвищити продуктивність.

  2. Для ядра 2.6 Linux немає різниці в продуктивності між розділом swap та нефрагментованим файлом swap. Коли за допомогою розділу swap розділ / файл увімкнено, ядро 2.6 виявляє, на якому диску блокується swapfile, на якому зберігається , так що коли настає час заміни, йому взагалі не доведеться мати справу з файловою системою.

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

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

У Linux, якщо свопфіл створений нефрагментованим і ніколи не розширений, він не може бути фрагментованим, принаймні, при звичайних файлових системах, таких як ext3 / 4. Він завжди буде використовувати ті самі блоки диска, які є суміжними.

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


5
Єдине, що тут потрібно додати, - це те, що якщо машина налаштована на "призупинення на диску", то насправді відбувається те, що речі в пам'яті записуються на заміну. Щоб це не працювало, своп повинен бути на своєму власному розділі, оскільки його не може бути в активній файловій системі. Тому, якщо у вас є сервер, ви, ймовірно, не використовуєте цю функцію і могли б із задоволенням використовувати файл swap. Якщо у вас є ноутбук, ви, ймовірно, хочете поміняти розділ, щоб ви могли "призупинити подання" на сплячку.
Натан С. Уотсон-Хей

@ NathanS.Watson-Haigh Що відбувається з даними, які вже є в обміні? Його не можна викинути.
XTF

3
@ NathanS.Watson-Haigh Чи можете ви зв’язати джерело? Ubuntu 17.04 за замовчуванням використовує файл swap. Було б дивно, якби не вдалося "призупинити диск".
Маттіас Вайлер

22

Насправді це не має великої різниці, доки ви не використовуєте розріджені файли .

Створення "звичайного" файлу з dd присвоїть файл (якщо це взагалі можливо) за один запуск, а створення розрідженого файлу скаже вам, що у вас є 10 Гб файл, який лежить навколо, але фактично не використовує весь простір. Я не зовсім впевнений, що mmwp все одно не виділить простір, але зазвичай файл своп буде рости з часом і, таким чином, не буде виділяти безперервний сектор (як в частині диска), а швидше виділяти блоки за потребою, які призводять до фрагментація з часом (звичайно залежно від використання диска)

Внутрішньо ядро ​​Linux отримає доступ до базових блоків файлу swap більш-менш безпосередньо - я не можу зараз знайти посилання, що відбувається під кришкою, ви повинні довіряти мені на цьому, якщо хтось не знайде щось більш офіційне. Все, що я можу придумати зараз, це:

все це стосується лише версії 2.6 ядер Linux.

Якщо ви хочете досягти оптимальної продуктивності (а що це, насправді? ... заміна повільна, періодична. Підвищуйте оперативну пам’ять, щоб ви не мінялися місцями для найкращої продуктивності), ви хочете використовувати розділ.


18
Сучасні версії swapon прямо відмовляться працювати з розрідженими файлами, відформатованими як swap, посилаючись на те, що у файлі є дірки.
Тім Пост

3

Це цікаве запитання і читали багато про те саме. Зазвичай розділ swap краще, ніж файл, завдяки базовій файловій системі. Але якщо вам завжди потрібно збільшити розмір свого swap, тоді файл є кращим варіантом. До ядра 2.4 вважалося, що розділ swap швидше, ніж файл, але тепер з покращеннями ядра 2.6 продуктивність майже однакова.

Щось я знайшов і в Інтернеті.

http://www.go2linux.org/swap-file-vs-swap-partition

і

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html


Жодне з цих посилань дійсно не пояснює причин їхніх рішень.
Білл Грей

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

Спробував копати далі і знайшов відносну статтю про вікі. Тільки для того, щоб допомогти вам, є кілька параметрів налаштування підкачки, які ви можете перевірити. Також перевірте пояснення під час реалізації для Linux. Може допомогти. en.wikipedia.org/wiki/Paging
Вікі

Переглянув одну із цитат на вищезгаданому посилання на вікі та знайшов цікаву тему про ту саму проблему. Ви можете перевірити це. lkml.org/lkml/2005/6/28/427
Вікі

У своєму запитанні я згадав про перевантаження файлової системи, але це не стільки блок продуктивності, скільки перегородка біля внутрішнього диска. Ця затримка була б більшою, ніж накладні файлові системи.
Білл Грей

2

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

За словами, розділ є, мабуть, кращим способом, ефективнішим, хоча файл є більш гнучким. Просто переконайтеся, що він знаходиться на шпинделі 7200+ RPM.


1
Чому розділ має кращу ефективність, коли час доступу може бути більшим фактором затримки?
Білл Грей

5
Оскільки використання файлу може зажадати більше рухів головою, тому що, коли пошук сторінки для читання / запису даних може знаходитися в будь-якій точці файлової системи, тому fs структури може знадобитися шукати, тоді як з розділом swap кожна сторінка буде знаходитись у відомому місці в межах перегородка. Це робить час доступу (як призначений для масової пропускної здатності) диференціюючим фактором.
Девід Спіллетт

2
"Не налаштовуйте своп, якщо вам не потрібно перезимувати" - суперечливий погляд. Іноді, коли системи майже немає, обмін реальною пам'яттю може дозволити системі відновитися. Відсутність підкачки може обмежити роботу із запущеними програмами, які здійснюють величезні обсяги пам’яті, але насправді не торкаються більшості (наприклад, певні інструменти налагодження). Іноді зайняту, але непрацюючу область пам’яті краще використовувати як кеш диска, і цей компроміс можна здійснити, лише якщо є можливість заміни. Див. Unix.stackexchange.com/questions/2658/… для обговорення.
Анон

1
Що сказав @Anon Chrome - горезвісна свиняча пам'ять, і навіть маючи <100 вкладок, мій ноутбук розміром 16 Гб стає невідповідним протягом декількох хвилин, коли використання пам’яті становить близько 90% і немає файлу підкачки. Дивно, але Ubuntu не має вбудованого механізму, який би попереджав користувача про те, що в ОС не вистачає пам'яті .
Дан Даскалеску

2

Мислення нашої роботи полягає в тому, що оскільки файл Swap може стати фрагментарним, а фрагментація уповільнює доступ до swap, розділ є кращим підходом. Звичайно, визначення swapfile статичного розміру робить те ж саме, але це виглядає суб'єктивно акуратніше.

Чи є такий підхід єдиним вірним способом? Напевно, ні, оскільки така практика була встановлена ​​близько 10 років тому. Єдина основна зміна технології приводу протягом останніх років - це складність RAID-контролерів, які ми використовуємо (ми ще недостатньо багаті для SSD). Збільшення розмірів дисків означає, що створений нами розділ знаходиться ближче до початку роботи накопичувача, ніж це було раніше, коли накопичувачі 18 Гб були стандартними, тому швидкість заміни навіть швидша, ніж була за старих днів.

Звичайно, у наших системах Windows на базі ESX позиція файлу swap повністю, повністю суперечлива. Між файлом свопінгу та пластинами фізичного диска існує стільки шарів віртуалізації, що це просто не має значення. Але ми тримаємо це на окремому розділі, тому що це просто стандарт.


4
Файл swap не стає фрагментарним, оскільки ядро ​​використовує прямий підхід mmap і ніколи не зростатиме і не скорочує файл. +1, хоча для вашого коментаря щодо віртуалізації: це часто не має значення.
parasietje

0

Використання файлу swap може використовувати трохи додаткової пам'яті для перекладу файлу в пам'ять. Ми говоримо про менше 1 МБ пам'яті на 1 Гб своп. Кеш файлової системи НЕ кешує підміненими даними, а лише організаційними даними, які мають відповідати більшості додаткових вимог пам'яті.

Крім того, я сумніваюся, що ви втратите будь-які розумні показники, за винятком того, що, можливо, один раз у 1000 разів шукати одну додаткову голову.

Кумедний факт, використання zswap разом із динамічно розширюваним файлом своп призводить до вражаючого прискорення операцій із свопом за дуже малих витрат при невикористаному використанні.


1
Чи можете ви надати якісь обгрунтування своїх претензій? Це здається досить анекдотичним.
австрійський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.