Оскільки ядро 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.swappiness
to" 0
не дозволить ядру вилучати анонімні сторінки на користь сторінок із кеш-файлів. Це може бути корисно, якщо програми виконують більшу частину кешування самостійно, що може бути у випадку з деякими базами даних. У настільних системах це може покращити інтерактивність, але недоліком є те, що продуктивність вводу / виводу, ймовірно, спричинить удар.
Значення за замовчуванням, швидше за все, було обрано як приблизне середнє місце між цими двома крайнощами. Як і будь-який параметр продуктивності, коригування vm.swappiness
повинно ґрунтуватися на даних порівняльних даних, порівнянних з реальними навантаженнями, а не лише на відчутті кишки.