Требуется ли перезагрузка для изменения swappiness?

14

Если я настраиваю значение подкачки для другого, например, от 60 до 0, то мне всегда нужно перезагружать машину, чтобы изменения вступили в силу? Даже при изменении с:

sysctl -w vm.swappiness=0
evachristine
источник

Ответы:

25

Все хорошо объяснено на странице Википедии, которую вы дали.

# Set the swappiness value as root
echo 10 > /proc/sys/vm/swappiness

# Alternatively, run this as a non-root user
# This does the same as the previous command
sudo sysctl -w vm.swappiness=10

# Verify the change
cat /proc/sys/vm/swappiness
10

На этом этапе система будет управлять свопом так, как вы только что его настроили, НО, если вы перезагрузите СЕЙЧАС, ваши изменения будут забыты, и система будет работать со значением по умолчанию (при условии 60, то есть, после этого своп начнется при 40%). занятие оперативной памяти).

Вы должны добавить строку ниже, /etc/sysctl.confчтобы сохранить изменения навсегда:

vm.swappiness = 10

Надеюсь, теперь это станет понятнее!

tisc0
источник
Интересно, что -wпереключатель должен записывать изменения. Можно подумать, что после написания этого, добавление строки по умолчанию в sysctl.conf не потребуется.
WEBjuju
Привет WEBjuju, Вы правы, переключатель все еще не работает для меня (Fedora 25 или Centos 7). В этом нет необходимости, поскольку изменение действующего значения в файле / proc выполняется без каких-либо действий.
tisc0
7

нужно перезагрузить машину, чтобы изменения вступили в силу?

На самом деле, наоборот - перезагрузка сбрасывает swappiness на значение по умолчанию. Чтобы это сохранялось при перезагрузках, вам нужно включить директиву в загрузочный скрипт или использовать метод, рекомендованный в статье в Википедии, добавив:

vm.swappiness = ??

To /etc/sysctl.conf(или /etc/sysctl.dфайл), где ??находится значение, которое вы хотите использовать. Обратите внимание, что простое добавление этого не приведет к изменениям в данный момент.

лютик золотистый
источник
1

Принятый ответ правильный, но рекомендуется использовать отдельный файл конфигурации "sysctl", чтобы вы не могли случайно перезаписать другие настройки (что может произойти, если вы перезаписали глобальный "sysctl.conf").

# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf

Те, кто уже изменил глобальный конфигурационный файл "/etc/sysctl.conf", могут захотеть удалить строки, определяющие это значение "swappiness" из этого файла. Вы можете использовать эту команду для удаления этих строк из глобального конфигурационного файла (с сохранением комментариев):

# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf

Теперь, чтобы применить новое значение, скажите sysctlиспользовать его:

# sysctl -p /etc/sysctl.d/swappiness.conf

Или примените все настройки, включая swappiness:

# sysctl -p /etc/sysctl.d/*

Проверьте это:

# sysctl vm.swappiness
vm.swappiness = 10
basic6
источник
Согласитесь, это лучшая практика, которая делает вещи понятнее и безопаснее. Хорошая привычка также при использовании инструмента управления конфигурацией.
19
1

Я обнаружил , что на машине CentOS , в vm.swappinessв настоящее время набор в /usr/lib/tuned/virtual-guest/tuned.conf.

Определите , где по умолчанию создается , глядя через tunedфайлы конфигурации :

sudo grep -R swap /usr/lib/tuned | grep swappiness

После обновления по умолчанию текущая перестановка все еще может быть установлена ​​без перезагрузки :

sudo sysctl vm.swappiness=10

и проверено:

cat /proc/sys/vm/swappiness
WEBjuju
источник
1
/etc/tuned/tuned-main.conf (RHEL7) имеет параметр, позволяющий /etc/sysctl.conf, /etc/sysctl.d и т. д. переопределять параметры, применяемые настроенным (т. е. reapply_sysctl = 1). По крайней мере, на моей установке, это по умолчанию.
kbulgrien
0

Пользовательские изменения в соответствии sysctlс соглашением идут в файлы с префиксом, 60-поэтому имя файла должно быть /etc/sysctl.d/60-swappiness.conf. Выполните service procps startот имени пользователя root, чтобы принудительно перечитать значения конфигурации (перезагрузка не требуется).

Дуг Мунк
источник