如果我配置交换性值更改为另一个,例如:60 到 0,那么我总是需要重新启动机器才能使更改生效?即使修改时:
sysctl -w vm.swappiness=0
答案1
您提供的维基百科页面中已经很好地解释了一切。
# 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
希望您现在更清楚了!
答案2
需要重启机器才能使更改生效吗?
事实上,恰恰相反——重新启动会将交换性重置为其默认值。要使其在重新启动后持续存在,您需要在启动脚本中包含指令或使用维基百科文章中推荐的方法添加:
vm.swappiness = ??
To /etc/sysctl.conf
(或/etc/sysctl.d
文件),其中??
是您要使用的值。请注意,仅添加此内容不会导致当时发生任何变化。
答案3
接受的答案是正确的,但建议使用单独的“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
或者应用所有设置,包括交换性:
# sysctl -p /etc/sysctl.d/*
验证一下:
# sysctl vm.swappiness
vm.swappiness = 10
答案4
按照惯例,用户对 的更改sysctl
会进入带有前缀的文件中60-
,因此文件名应该是/etc/sysctl.d/60-swappiness.conf
.以 root身份执行service procps start
以强制重新读取配置值(无需重新启动)。