База знаний: Linux Server
Тюнинг и очистка swap
Автор Алексей | HiTex.BY, Последнее изменение: Алексей | HiTex.BY на 18 января 2018 16:58
Для начала в консоли выполним команду:

cat /proc/sys/vm/swappiness

Поумолчанию результат будет 60.
Это параметр, который контролирует количество свободной памяти, который контролирует, при какой загруженности у нас начнется сброс страниц в swap. Ну а дальше простая формула: 100%-60%=40%, т.е. уже при 40% загруженой ОЗУ данные начинают активно сливаться на жетский диск, что, как мне кажется, не есть хорошо. И вероятнее всего вы спросите, нельзя ли сделать так, чтобы слив начался хотя бы при 90% занятой памяти. И я вам отвечу: да, можно. Сначала в конфиг /etc/sysctl.conf добавим запись:
vm.swappiness=10
Затем, дабы не перезагружать комп, выполним с правами суперпользователя команду:
sysctl -p
Теперь параметр оперативная память будет выгружаться в своп при достижении 90% занятости.

А сейчас мы снова вернемся к теме, рассмотреной в прошлый раз - к дисковому кэшу. То, о чем пойдет речь дальше, делайте на свой страх и риск, я за последствия нести ответственность отказываюсь. =)
Существует такой параметр, как vfs_cache_pressure. Этот параметр определяет, на сколько ваша операционная система готова держать кэши в оперативной памяти или же сливать их своп. Посмотреть значение можно такой командой:
cat /proc/sys/vm/vfs_cache_pressure
Параметры vm.vfs_cache_pressure:

  • 0 — не кэшировать ничего.
  • 100 — значение по-умолчанию.
  • >100 — агрессивно кэшировать дисковые операции.

Знатоки рекомендуют устанавливать значение 1000 и больше для обычных винчестеров и около 50 для SSD дисков. Чем выше значение vm.vfs_cache_pressure тем отзывчивей будет система (тем больше будет кэширование), но это при условии что у Вас достаточно оперативной памяти (более 2Гб).
Если вы остановились в выборе на каком-то определенном значении, то впишем его туда же, куда раньше мы прописывали параметр vm.swappiness - в конфиг /etc/sysctl.conf:
vm.vfs_cache_pressure=1000
Ну и чтобы значения вступили в силу, выполним с правами суперпользователя команду:
sysctl -p.

На этом тюнинг можно считать законченым. Но у вас наверняка может возникнуть вопрос: "У меня дофига свободной оперативы, но при этом в свопе что-то лежит, а я хочу его освободить. Как мне очистить своп?" И на этот вопрос есть ответ.
Для начала убедитесь, что содержимое свопа не превышает размер свободной оперативной памяти. Если свободной памяти больше, чем свопа, то на какое-то время своп просто отключаем командой:
swapoff -a
После чего дожидаемся, когда содержимое свопа перельется в оперативную память. Обязательно промониторьте это дело любой предпочитаемой вами утилитой (виджетом, командой free, командой top/htop или что вам больше по душе). Когда из свопа все перелилось, снова его включаем:
swapon -a

(306 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)