If I configure the swappiness value to another, from ex.: 60 to 0, then I always need to reboot the machine to the changes to take effect? Even when modifying with:
sysctl -w vm.swappiness=0
If I configure the swappiness value to another, from ex.: 60 to 0, then I always need to reboot the machine to the changes to take effect? Even when modifying with:
sysctl -w vm.swappiness=0
Everything is well explained in the Wikipedia page you gave.
# 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
At this point, the system will manage the swap like you just configured it, BUT if you reboot NOW, your change will be forgotten and the system will work with the default value (assuming 60, meaning than it will start to swap at 40% occupation of RAM).
You have to add the line below in /etc/sysctl.conf
to keep your change permanently:
vm.swappiness = 10
Hope it’s more clear for you now!
need to reboot the machine to the changes to take effect?
The opposite, in fact -- rebooting will reset the swappiness to its default value. To make it persist across reboots, you need to include a directive in a boot script or use the method recommended in the wikipedia article by adding:
vm.swappiness = ??
To /etc/sysctl.conf
(or an /etc/sysctl.d
file), where ??
is the value you want to use. Note that just adding this will not cause any change at the time.
The accepted answer is correct, but it's recommended to use a separate "sysctl" config file so that you don't accidentally overwrite other settings (which might happen if you overwrite the global "sysctl.conf").
# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf
Those who've already modified the global config file "/etc/sysctl.conf" might want to remove lines defining this "swappiness" value from that file. You could use this command to remove these lines from the global config file (keeping comments):
# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf
Now, to apply the new value, tell sysctl
to use it:
# sysctl -p /etc/sysctl.d/swappiness.conf
Or apply all settings, including swappiness:
# sysctl -p /etc/sysctl.d/*
Verify it:
# sysctl vm.swappiness
vm.swappiness = 10
I found that on a CentOS machine, the vm.swappiness
was being set in
/usr/lib/tuned/virtual-guest/tuned.conf
.
Determine where the default is being set by looking through tuned
configuration files:
sudo grep -R swap /usr/lib/tuned | grep swappiness
After updating the default, current swappiness can still be set without rebooting:
sudo sysctl vm.swappiness=10
and tested by:
cat /proc/sys/vm/swappiness
User changes to sysctl
by convention go into files with the prefix 60-
so the filename should be /etc/sysctl.d/60-swappiness.conf
. Execute service procps start
as root to force a reread of configuration values (no reboot needed).
We can change values in cache using sysctl -w vm.swappiness=xx
but this cache will get flush after server restart thus we need to vm.swappiness=xx
in /etc/sysctl.conf
for kernel will pick values during server boot from /etc/sysctl.conf
.
-w
switch is supposed to write the change. One would think that after writing that, adding the default line in sysctl.conf would not be necessary. – WEBjuju Jan 25 '17 at 12:55