Does changing of the swappiness need a reboot?

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

Tags:

Swap