/etc/sysctl.conf在重新启动后不会保留
为了减少频繁的内存刷新到文件系统的任务,我在/etc/syctl.conf
添加了以下两行。
vm.dirty_background_ratio = 50 vm.dirty_ratio = 80
然后我跑了, sudo sysctl -p
并且改变正确地生效了。 但是,在系统重启后,我仍然看到dirty_ratio和dirty_background_ratio的旧值。
new-sys-admin@ThinkPad:~$ sysctl -n vm.dirty_background_ratio 10 new-sys-admin@ThinkPad:~$ sysctl -n vm.dirty_ratio 5
我正在运行Ubuntu 12.04.3 LTS 3.2.0-52-generic-pae。 看了几个post后:
- Ubuntu在每次启动时运行sysctl -p的方法?
- Ubuntu 12.04,为什么服务procps启动不启动procps?
看起来像upstart作业,/ /etc/sysctl.d/*
/etc/init.d/procps
应该在系统启动时运行,并通过/etc/init/procup.conf
重新加载/etc/sysctl.d/*
和/etc/sysctl.conf
内容但是它似乎不是这样的。
在下次重新启动时,我运行了service procps start
并且更改生效。 我想知道如何使procps在启动时持续运行,如果我错过了使这些更改持久化的额外步骤。
编辑1
根据Bill的建议,还尝试在/etc/sysctl.d/10-local.conf
使用这些值。
new-sys-admin@ThinkPad:~$ cat /etc/sysctl.d/10-local.conf vm.dirty_background_ratio = 50 vm.dirty_ratio = 80
重新启动后,将还原值。
上面Gsus的答案也解决了我的问题。
/usr/lib/pm-utils/power.d/laptop-mode
在 sysctl处理/etc/sysctl.d
的文件后写入值dirty_ratio=10 dirty_background_ratio=5 writeback_centisecs=500
。
但是我觉得在pm脚本中评论一行不太舒服。
因为我在桌面系统上运行并且意识到我不需要从上面进行dirty_*
更改,所以我尝试将/usr/lib/pm-utils/power.d/laptop-mode
移动到另一个位置。 pm utils没有抱怨。
因此,可能会转移文件,以便更新程序包不会重新创建它。
sudo dpkg-divert --add --rename --divert /usr/lib/pm-utils/power.d/laptop-mode /usr/lib/pm-utils/laptop-mode.diverted sudo mv /usr/lib/pm-utils/power.d/laptop-mode /usr/lib/pm-utils/laptop-mode.diverted
如果要手动调整参数dirty_ratio dirty_background_ratio writeback_centisecs
则应该只执行此操作。
对于电源管理工具,当他们在/etc/sysctl.d中创建文件以更好地了解正在发生的事情时,它会更清楚。
在/usr/lib/pm-utils/power.d/laptop-mode
,注释掉函数laptop_mode_ac()
的以下行:
write_values 0 10 5 500
那里的值变为:
dirty_ratio = 10 vm.dirty_background_ratio = 5
然后重新启动,sysctl的值必须保持不变。
将命令放在/etc/sysctl.d
下的/etc/sysctl.d
。 像10-local.conf
这样的东西包含:
vm.dirty_background_ratio = 50 vm.dirty_ratio = 80
如果文件保留在原位,则应在每次重新启动时运行。