Сегодня мы поговорим об swap, варианты его подключения + тюнинг.
Традиционный способ подключение swap — при установке системы, выделить отдельный раздел для него и примонтировать. Этот способ имеет свои плюсы, самое главное — если это свежий диск, то выделение ему целого раздела позволяет избежать фрагментации. Это единственный плюс, т.к. начиная с некоторого патча в ядре 2.6 swap-разделы по производительности не отличаются от swap-файлов. Файлы удобнее тем, что их легко создать и перемасштабировать, как тебе нравится. Вот например, в один прекрасный день мне показалось, что на моем Зене раздел в 4 гига под swap на SSD уж слишком жирно.. и решил я этот раздел снести, свободное место слить в /home и добавить swap поменьше, уже файликом. Итак, как это делается… поехали.
Проверим включен ли swap сейчас:
free -m
total used free shared buffers cached
Mem: 3953 154 3799 0 8 83
-/+ buffers/cache: 62 3890
swap: 0 0 0
0 — выключен. Значит нужно его добавить.Прежде чем продолжить, решим сколько же нам swap то нужно на нашем десктопе, смотрим табличку:
RAM(MB) No hibernation With Hibernation Maximum 256 256 512 512 512 512 1024 1024 1024 1024 2048 2048 RAM(GB) No hibernation With Hibernation Maximum 1 1 2 2 2 1 3 4 3 2 5 6 4 2 6 8 5 2 7 10 6 2 8 12 8 3 11 16 12 3 15 24 16 4 20 32 24 5 29 48 32 6 38 64 64 8 72 128 128 11 139 256
Гибернацией вообще пользуются редко… поэтому. для 4-х гиг памяти, достаточно 2 гига свапа. Ок. Убедитесь что у вас есть свободное место в корне / и продолжим.
Добавляем swap-файл в / размером в 2 гига:
sudo fallocate -l 2G /swapfile
Проверяем права:
ls -lh /swapfile
-rw-r--r-- 1 root root 2.0G Aug 24 17:19 /swapfile
Делаем его доступным только для root:
sudo chmod 600 /swapfile
И проверим еще раз:
ls -lh /swapfile
-rw------ 1 root root 2.0G Aug 24 17:19 /swapfile
Создаем swap:
sudo mkswap /swapfile
Включаем swap:
sudo swapon /swapfile
А теперь проверяем:
sudo swapon -s
Filename Type Size Used Priority /swapfile file 2097150 0 -1
И:
free -m
total used free shared buffers cached
Mem: 3953 154 3799 0 8 83
-/+ buffers/cache: 62 3890
swap: 2044 0 2044
Осталось сделать его перманентным, добавим в fstab строку:
sudo nano /etc/fstab
/swapfile none swap sw 0 0
Сопсно все :) Теперь наш swap у нас будет работать всегда.
Теперь опишем пару фокусов со swap`om. Есть 2-а параметра ядра которые мы будем править, swappiness и vfs_cache_pressure.
swappiness — на каком уровне использования RAM в работу вступает SWAP. Мы ориентируемся на использования swap только в крайнем случае. Поэтому у нас это будет параметр 10, у кого ядро старше 3.5 можно поставить 1, для таких Зенбуков как у меня я рекомендую поставить 22.
vfs_cache_pressure — тут с описанием немного сложно, это связано с кешированием и скоростью выгрузки этого кеша. Для SSD рекомендуется параметр 50, для обычных HDD — 2000.
Проверить ваши текущие параметры можно командами:
cat /proc/sys/vm/swappiness
cat /proc/sys/vm/vfs_cache_pressure
Чтобы перманентно их изменить, добавьте в конец файла строки:
sudo nano /etc/sysctl.conf
vm.swappiness = 10 vm.vfs_cache_pressure = 50
И перезагрузитесь:
sudo reboot
Все готово :) Могу добавить, что мой Зенбук после подобного тюнинга стал использовать swap крайне редко… и когда он его таки использует, что самое важное, переход на него абсолютно незаметен и без каких либо рывков.