
Сегодня мы поговорим об 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/swappinesscat /proc/sys/vm/vfs_cache_pressure
Чтобы перманентно их изменить, добавьте в конец файла строки:
sudo nano /etc/sysctl.conf
vm.swappiness = 10 vm.vfs_cache_pressure = 50
И перезагрузитесь:
sudo reboot
Все готово :) Могу добавить, что мой Зенбук после подобного тюнинга стал использовать swap крайне редко… и когда он его таки использует, что самое важное, переход на него абсолютно незаметен и без каких либо рывков.