Коротка відповідь:
Установіть свій файл swap:
round(sqrt(RAM))
якщо ви не використовуєте сплячку
RAM+round(sqrt(RAM))
якщо ви все-таки використовуєте сплячку
Встановіть swappiness
10 на робочому столі, але не на сервері!
Довга відповідь:
В минулому:
Правило, що застосовується протягом останніх 25 років, було як мінімум 1xRAM і максимум 2xRAM, так що ви бачите цитований весь час.
Цей мінімум був встановлений ще в кам'яну епоху, коли я був підлітком, а динозаври все ще блукали по Землі, і тому що оперативна пам’ять була просто занадто дорогою, і вам абсолютно потрібен цей обмінність для того, щоб досягти нічого.
Максимум було встановлено на той час через зменшення віддачі: просто надто повільно потрібно міняти стільки пам'яті, оскільки доступ до жорсткого диска в 1000 разів повільніше, ніж ОЗУ: хороший в екстреному випадку, але не дуже хороший для щоденного використання! У той час, коли у вас не вистачало місця для заміни, настав час додати більше оперативної пам’яті! (що досі справедливо).
Тепер:
Якщо ви не використовуєте сплячий режим і ваша пам'ять перевищує 1GByte нове правило полягає в тому , round(sqrt(RAM))
де RAM
, очевидно , ваш розмір ОЗУ в ГБ і sqrt
квадратний корінь. :-)
Якщо ви використовуєте сплячку, вам потрібно мати можливість поміняти весь об'єм оперативної пам’яті + вже замінену оперативну пам’ять на диск, таким чином формула стає: RAM+round(sqrt(RAM))
Правило зменшення віддачі досі зберігається максимумом, але якщо ви не перевіряєте фактичне використання, використання 2xRAM - це лише витрата дискового простору , тому не використовуйте максимум, якщо у вас не залишиться місця для обміну за допомогою інших методологій .
Все це разом дає вам таку таблицю: (останні 3 стовпчики, що позначають місця заміни)
RAM No hibernation With Hibernation Maximum
1GB 1GB 2GB 2GB
2GB 1GB 3GB 4GB
3GB 2GB 5GB 6GB
4GB 2GB 6GB 8GB
5GB 2GB 7GB 10GB
6GB 2GB 8GB 12GB
8GB 3GB 11GB 16GB
12GB 3GB 15GB 24GB
16GB 4GB 20GB 32GB
24GB 5GB 29GB 48GB
32GB 6GB 38GB 64GB
64GB 8GB 72GB 128GB
128GB 11GB 139GB 256GB
256GB 16GB 272GB 512GB
512GB 23GB 535GB 1TB
1TB 32GB 1056GB 2TB
2TB 46GB 2094GB 4TB
4TB 64GB 4160GB 8TB
8TB 91GB 8283GB 16TB
Вище сказане - це лише велике правило; це не закон тяжіння!
Ви можете порушити це правило (на відміну від закону сили тяжіння), якщо ваш конкретний випадок використання інший!
Порада: завжди виділяйте SWAP на початку жорсткого диска, оскільки головки повинні менше рухатися на внутрішній стороні диска.
Так: На SSD, це вже не має значення, де ви знаходите область заміни, оскільки вони використовують квантове тунелювання замість рухомих головок, а сучасні SSD використовують усі свої комірки пам'яті (навіть нерозподілений простір) для запобігання квантової деградації.
Як перевірити, чи ваше використання swap відрізняється від "загального" правила:
Просто виконайте:
for szFile in /proc/*/status ; do
awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile
done | sort --key 2 --numeric --reverse | more
який дасть вам список усіх запущених програм, які розміщені (з тією, що використовує найбільше місця для обміну вгорі)
Якщо ви використовуєте більше кількох КБ: змініть розмір до мінімального, інакше не турбуйтеся ...
Якщо ви на сервері, перестаньте читати зараз: ви все налаштовані!
Якщо ви працюєте на настільному / ноутбуковому клієнті (а не на сервері), ви хочете, щоб ваш графічний інтерфейс був максимально чуйним і мінявся лише тоді, коли вам це потрібно . Ubuntu був оптимізований для раннього заміни для використання на сервері, але на своєму клієнті ви хочете, щоб редагування цієї величезної необмеженої картинки на 250 мегапікселів gimp
було швидкою , тому встановлення swappiness
значення 10 не дозволить ядру занадто рано замінюватися, гарантуючи, що це не буде ' t помінятися занадто пізно:
Якщо у вас є sysctl.conf
файл,
sudo nano /etc/sysctl.conf
АБО
Якщо у вас є sysctl.d
каталог, але немає sysctl.conf
файлу, створіть новий файл:
sudo nano /etc/sysctl.d/35_swap.conf
і в обох випадках додайте:
# change "swappiness" from default 60 to 10
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10
до кінця файлу збережіть файл ( Ctrl+ XY+ Enterу нано) та виконайте:
sysctl --system
перезавантажити параметр або застосувати підхід Window $ і перезавантажити ... :-)