Linux: не створювати розділ swap?


9

Мені було цікаво, оскільки я чув, що swap використовується, коли ви не в оперативній пам’яті, а обмін занадто сильно поганий, оскільки у мене багато оперативної пам’яті (8 ГБ)….

що робити, якщо я не створю розділ swap?

Крім того, чи потрібно це мені в сплячку або це не обов'язково?


ви повинні створити своп, я одного разу намагався не створювати своп, не вдалося продовжити встановлення
Lynob

що відбувається при встановленні всередині вікон? Я це зробив, і це також здавалося трохи повільним для мого обладнання в порівнянні з Windows, але я не створив розділ
Mihai Bratulescu,

Я ніколи не намагався встановити Linux всередині Windows, завжди створюю окремий розділ
Lynob

Відповіді:


13

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

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

Отже, ви хочете поміняти, потрібен вам чи ні.


8
"Отже, ви хочете поміняти, потрібен вам чи ні". - Схоже, ви зробили випадок, що йому потрібен своп, хоче він цього чи ні.
тирса

2
Припустимо, у мене достатньо оперативної пам’яті і можу дозволити собі витратити 2 Гб. Навіщо мені потрібен файл swap?
Тарік

1
У цьому випадку вам не потрібен файл swap. Але, як я доводив, ти хочеш одного. З - за того , чи ви не можете дозволити собі витрачати RAM, ви не повинні хотіти використовувати RAM нераціонально , коли ви не повинні.
Девід Шварц

Я запускаю CLI-сервер без заміни, і він працює ідеально. Запуск сервера teamspeak3, apache2, node.js Я ніколи не бачу, щоб було використано більше 500 мільйонів оперативної пам’яті. Тому мені не заважає використовувати оперативну пам’ять "неефективно". ВІДМОВА: Функція веб-сервера цього сервера призначена виключно для розробки, тому завантаження завжди все одно низьке. І якщо у мене є витік пам'яті під час розробки, я вважаю за краще вбивця OOM вбивати її, як тільки мені закінчується баран, ніж виштовхувати всі ці дурниці на диск.
Рідний кодер

12

Я працюю настільною системою без жодного заміни протягом декількох років, і це було чудово! Є кілька способів поведінки, які відрізняються; деякі з них вигідні, а деякі можуть завдати вам шкоди. Все залежить від того, що ти робиш.

Одна з головних відмінностей полягає в тому, як поводиться система, коли пам'ять закінчується:

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

Якщо є розділ swap, ядро ​​виштовхує вміст пам'яті в своп. Процес помилки може продовжувати розподіл пам'яті. Це триває, поки не закінчиться своп, який може тривати від десяти хвилин до години, якщо у вас є великий розділ для заміни. Поки це робить, ваша система сповільнюється до повзання. Відкрити термінал і вбити процес стає неможливо. Зазвичай я відключаю шнур живлення, коли це відбувається.

Отже, оскільки я збираюсь втрачати свої дані в будь-якому випадку, коли системні OOM, я вважаю за краще колишній варіант, принаймні, маю (високий) шанс на відновлення.


Це теж мій досвід. Linux не справляється з обміном обробкою досить добре, щоб ви могли самостійно вбивати програму-порушника. Надійніше просто вбивця OOM зробити це самостійно. Звичайно, це жахлива конструкція - кращим було б заморозити процес правопорушення, а не вбити його та надати приємний графічний інтерфейс, що дозволить вам розморозити чи вбити його, але ... Linux.
Timmmm

3
Нарешті відповідь, яка має сенс і відповідає моєму власному досвіду. Я не можу зрозуміти обґрунтування того, що "у вас повинен бути розділ для заміни". За винятком випадків, якщо ми хочемо перезимувати систему.
Тарік

5

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


Таким чином, розмір області своп повинен бути трохи більше розміру пам'яті, встановленої у вашій системі.
mdpc

@mdpc, не обов'язково; він просто повинен бути достатньо великим, щоб вмістити використаний операційний пам'ять, який неможливо відкинути (тобто дані, захищені файлом на диску).
psusi

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

3

Поширена помилкова думка вважати, що наявність зони заміни негативно впливає на продуктивність. Що сильно впливає на продуктивність - це недостатня кількість оперативної пам’яті. Площа обміну сама по собі не має негативного впливу на продуктивність, якщо ви не дбаєте про надійність. Це може мати позитивний вплив на продуктивність, навіть якщо ви думаєте, що у вас є достатня кількість оперативної пам’яті (і про дефіцит оперативної пам’яті не повідомляється).

По суті, слід розглянути три випадки:

  • 1: Є достатня кількість оперативної пам’яті для внутрішніх потреб ядра, щоб усі ваші програми мали свій робочий набір сторінок на оперативній пам’яті і все ще мали «безкоштовну» оперативну пам’ять для кеш-пам'яті для зберігання більшості гарячих даних файлової системи.

  • 2: те саме, що вище, за винятком того, що у вас недостатньо вільної оперативної пам’яті, щоб кеш-пам'ять буфера була повністю ефективною.

  • 3: Оперативної пам’яті недостатньо, щоб навіть зберігати використовувані вами програми.

У випадку 1, що має бути нормою для виробничої машини, обладнана свопом або нічого не змінює (принаймні, на ОС Linux та інших ОС, які перезавантажують пам'ять).

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

У третьому випадку наявність області підкачки дозволяє додатку продовжувати працювати за рахунок погіршення продуктивності за рахунок пагинації. З іншого боку, відсутня область підкачки (або достатньо велика) призведе до випадкових збоїв у програмах. Крім того, залежно від налаштувань ОС, вбивця OOM також може вирішити вбити найбільш охоплені пам’яттю додатки, якщо є великий попит на оперативну пам’ять, навіть не даючи їм можливості зберегти свої (ваші) критичні дані.

Цей останній випадок - той, з яким вам доведеться зробити вибір. Звичайно, є деякі випадки використання, коли процес вбивства є кращим варіантом, як системи, де час відповіді має вирішальне значення і де втрата транзакції / процесу не є великою справою.

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


1

Якщо ви не хочете використовувати swap-розділ, ви можете використовувати файл swap: зображення файлової системи, що зберігається у звичайному файлі та використовується як місце для обміну.

Наступні статті пояснюють, як це зробити докладно:


яка різниця між файлом swap і розділом swap? а що буде, якщо я нікого не маю?
Михай Братулеску

швидкість доступу ....
mdpc

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

2
@mdpc Накладні витрати файлової системи незначні, починаючи з ядра 2.6. Метадані, кеш і код файлової системи обходять. Сирі блоки диска доступні просто безпосередньо.
jlliagre

1
@mdpc Файл swap взагалі не повинен бути значно фрагментований, якщо ви його не створили останнім часом. Більше того, доступ до swap рідко є послідовним, але здебільшого випадковим через те, як працює пейджинг попиту, тому фрагментація не повинна бути проблемою.
jlliagre

0

Це трохи небезпечно, але ви МОЖЕТЕ працювати без місця для заміни. Але якщо ви остаточно перевищите об'єм пам'яті у вас, система майже відразу вийде з ладу без попереднього повідомлення.

Що своп вам дає, це розширена, але набагато повільніше для вашої пам’яті. Якщо ви перевищуєте, ви почнете мінятись, це дійсно вирве життя з вашої системи .... ТАКОЖ, знищуючи помилкові процеси, ви все одно можете зберегти вашу систему.

Деякі програми наполягають на виділенні (але не використанні) місця для обміну, деякі з них є програмами баз даних, якщо я пригадую. Знову ж таки, не маючи місця для заміни, ви можете обмежити запущені програми.

Нарешті, подивіться, що SWAP є CHEAP в тому, що вам не потрібно робити резервну копію області. (Я сподіваюся, що ви один із цих чудових видатних сисадмінів, які створюють резервні копії своїх систем).

Тож створіть його.

Моє правило було 2 * розміром пам'яті ..... але зараз я вважаю, що у багатьох випадках я нормальний з розміром 1 * пам'яті, але зазвичай використовую 1,5 * (розмір пам'яті). Вам не потрібно створювати цю велику суму, але я б ... особливо, якщо є якийсь виробничий вид роботи, який ви виконуєте.

О так, і для сплячого режиму ПОТРІБНО потрібен swap, щоб зберігати загальний образ пам'яті. Таким чином, розмір, якщо ви розглядаєте h8ibernation, повинен бути НАЙКРАЩИЙ (розмір пам’яті 1 *) + 100 Мб .. 100 МБ - це можливі накладні витрати, необхідні в процесі.


тож ... для деяких програм вам начебто потрібна зона підкачки для їх запуску? Мене не турбує те, що закінчиться оперативний бал з 8 Гб (хоча і неможливо)
Mihai Bratulescu,

Правило розміру пам'яті 2x є застарілим і застарілим. Але здійснити обмін - це не погана ідея. Він не використовує занадто багато місця на диску, тому ви не пропустите використаний простір; Зазвичай він не використовується, якщо у вас є достатня кількість оперативної пам’яті, і це дозволяє скинути ядро ​​на свій своп.
Геннес

@Hennes - прочитайте мою записку ... "раніше"
mdpc

0

Як видається, в обміну Linux є досить важка вимога, як тільки виникає тиск у пам'яті. Симптом полягає в тому, що якщо майже вся оперативна пам’ять використовується активними процесами, система сильно зупиняється, а жорсткий диск запущено.

Чому?

Сторінки без резервного файлу (як правило, за рахунок динамічного розподілу пам'яті) не можуть бути вилучені з оперативної пам’яті, коли не відбувається своп Ядро вдається до сторінок із резервним файлом, навіть якщо вони насправді знову потрібні, я. е. сміття навіть без свопів!

Більш детально про цю тонку проблему дивіться у цій публікації в блозі.

Висновок : Завжди проводите своп.

А для розміру як орієнтовної орієнтації використовуйте щось від 4 до 8 ГБ, навіть для систем з великою кількістю оперативної пам’яті, якщо вважати, що ви не перебуваєте в сплячому режимі. Більш детально див . Документацію Red Hat щодо місця для заміни .

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