Чому замість за замовчуванням встановлено на 60?


109

Я просто прочитав деякі матеріали про свобідність у Linux. Я не розумію, чому за замовчуванням встановлено 60.

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

Чому вони налаштували ядро ​​так?


2
@Mat Дивіться це, як зробити тестування простоти.
Геремія

Відповіді:


133

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

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

Linux може впоратися з відсутністю місця підкачки, оскільки, за замовчуванням, політика обліку пам'яті ядра може перевищувати пам'ять . Мінус полягає в тому, що коли фізична пам'ять вичерпана, і ядро ​​не зможе поміняти анонімні сторінки на диск, механізм вбивці поза пам’яті ( вбивця OOM) почне вибивати з процесів «шахрайських» процесів, що заповнюють пам'ять, щоб звільнити пам'ять для інші процеси.

vm.swappinessВаріантом є модифікатором , який змінює баланс між обмінювати зі сторінок кеша файлів на користь анонімних сторінок. Кеш-файлу надається довільне значення пріоритету 200, з якого vm.swappinessвиводиться модифікатор ( file_prio=200-vm.swappiness). Анонімні сторінки за замовчуванням починаються з 60 ( anon_prio=vm.swappiness). Це означає, що за замовчуванням ваги пріоритету помірно стоять на користь анонімних сторінок ( anon_prio=60, file_prio=200-60=140). Поведінка визначена у mm/vmscan.cдереві джерела ядра.

З огляду на vm.swappinessв 100пріоритети були б рівні ( file_prio=200-100=100, anon_prio=100). Це має сенс для важкої системи вводу / виводу, якщо не хочеться, щоб сторінки з кеш-файлів були вилучені на користь анонімних сторінок.

І навпаки, встановити значення " vm.swappinessto" 0не дозволить ядру вилучати анонімні сторінки на користь сторінок із кеш-файлів. Це може бути корисно, якщо програми виконують більшу частину кешування самостійно, що може бути у випадку з деякими базами даних. У настільних системах це може покращити інтерактивність, але недоліком є ​​те, що продуктивність вводу / виводу, ймовірно, спричинить удар.

Значення за замовчуванням, швидше за все, було обрано як приблизне середнє місце між цими двома крайнощами. Як і будь-який параметр продуктивності, коригування vm.swappinessповинно ґрунтуватися на даних порівняльних даних, порівнянних з реальними навантаженнями, а не лише на відчутті кишки.


4
Як установка ОС на твердотільному пристрої впливає на компроміс?
Герріт

3
@gerrit Тип базового носія інформації не має значення. Такі деталі не видно підсистемі управління пам'яттю.
Thomas Nyman

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

2
@MatrixManAtYrService Завдяки внутрішньому вирівнюванню зносу та вбудованій надмірності, показано , що сучасні SSD-диски (на які йдеться в попередньому коментарі) тривають до 2 PB (!) Записів, перш ніж виявляти помилки. Навіть дешевші накопичувачі в цих експериментах тривали 300 Тб до появи помилок, що значно перевищує офіційний гарантійний показник близько 100 ТБ. Принаймні, на мою думку, налаштування простоти для розміщення на SSD на робочих станціях або ноутбуках насправді не гарантована.
Thomas Nyman

2
@ThomasNyman ви добре оціните, для більшості користувачів це не варто турбуватися. Випадок, який привів мене до цієї посади, передбачав обмін місцями на SD-картці, що, я визнаю, є дещо кращим випадком.
MatrixManAtYrService

9

Проблема полягає в тому, що не існує жодного значення за замовчуванням, яке б відповідало всім потребам. Встановити параметр swappiness в 10 може бути відповідним параметром для настільних ПК, але значення за замовчуванням 60 може бути більш підходящим для серверів. Іншими словами, заміщення потрібно налаштовувати відповідно до випадку використання - робочий стіл та сервер, тип програми тощо.

Крім того, ядро ​​Linux використовує пам'ять для кешу диска, інакше оперативна пам’ять не буде використовуватися, і це не ефективно та не призначено. Якщо мати дані в кеші, це означає, що якщо комусь знову потрібні ті самі дані, він, ймовірно, отримає їх з пам'яті. Отримати дані звідти набагато швидше, ніж знову отримати їх з диска. А параметр swappiness - це механізм того, наскільки ядро ​​Linux віддає перевагу переходу на диск, щоб скоротити кеш-диск. Чи слід скоріше видаляти старі дані з кешу чи слід замінювати деякі сторінки програми?

Ця стаття може пролити трохи світла і на цю тему. Особливо, як оцінюється тенденція до обміну.


Я не розумію, чому 60 більше підходить для серверів. У мене є сервери, і деякі процеси йдуть в обмін, навіть якщо у нас 40% вільної оперативної пам'яті. не має сенсу для мене.
Гюго

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


Посилання на статтю мертве, але ви все ще можете переглядати її з
автомата

Пов'язана стаття є інформативною. Дякуємо, що поділилися цим.
Пістос

5

Додавання більш детальної інформації до відповідей вище.
Оскільки ми все більше використовуємо VM, хост Linux може бути vm в одному з цих хмарних середовищ. В обох прикладах 1 і 2 ми отримали гарне уявлення про запущені програми та про те, скільки оперативної пам’яті вони споживають. У 3, не так багато

  • Приклад 1
    : Високопродуктивна приватна хмара (думаю, що більшість банків заплатить мільйони), та, де диск забезпечений дуже дорогим масивом зберігання даних з ДУЖЕ хорошим IO. Частина цієї пам’яті може знаходитися в оперативній пам’яті (в масиві дисків), підкріпленій SSD дисками, підкріпленою звичайними дисками з шпинделями. У цій ситуації диск, який бачить VM, може бути лише трохи повільніше, ніж оперативна пам'ять, до якої він може отримати доступ. Для одного vm немає великої різниці між swap і ram.
  • Приклад 2
    Те саме, що в прикладі 1, але замість одного vm ви маєте сотні, тисячі і більше. У цій ситуації ми з’ясовуємо, що оперативна пам’ять сервера (гіпервізор) є дешевою та багатою, де оперативна пам’ять є дорогою (відносно кажучи). Якщо ми розділимо вимоги оперативної пам’яті між оперативною пам’яттю Hypervis і SWAP, що надається нашим дуже дорогим масивом зберігання даних, ми виявимо, що ми швидко використовуємо всю оперативну пам’ять у масиві пам’яті, потім блоки обслуговуються SSD і, нарешті, шпинделями. Раптом кожен починає реально повільно. У цьому випадку ми, мабуть, хочемо призначити велику кількість оперативної пам’яті (від гіпервізора) до VM і встановити свобідність на 0 (лише поміняти місцями, щоб уникнути виходу з пам'яті), оскільки сукупний ефект усіх цих програм буде мати вплив на продуктивність сховище,
  • Приклад 3 Сучасний ноутбук або робочий стіл, можливо, із SSD. Вимоги до пам'яті вважаються невідомими. Який браузер використовує користувач, скільки вкладок у них буде відкрито, чи вони також редагують документ, зображення RAW або, можливо, відео, всі вони будуть споживати оперативну пам’ять. Якщо встановити заміщення на низьке значення та виконати інші налаштування файлової системи, це означає, що на SSD записано менше записів, і це триватиме довше.

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