过去,我做了很多晦涩的系统优化工作,但是在powertop
告诉我应该将USB端口设置为自动挂起后,我便摆脱了大多数此类优化工作,这迫使它们进入永久睡眠状态,并且在我意识到更高交换性的好处之后。
但是今天,在看的时候/etc/fstab
,我注意到我已经commit=60
为/和/ home设置了选项。我记得这是针对笔记本电脑的优化,以减少写入磁盘的次数,从而节省电池。但是后来我开始担心这可能会导致数据丢失(有时我的电池断开连接,然后在启动时fsck
告诉我一些孤儿inode)。
在寻找此选项的解释时,我得出以下解释(第二种解释似乎与我以前的理解相抵触):
$ man mount | awk '/commit=/,/^$/'
commit=nrsec
Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
Zero means default.
https://forums.gentoo.org/viewtopic-p-4088752.html
commit = 60会停止“立即”(默认为5秒)优先于超读的写入,并在几秒钟后将写入缓存。在大量读写混合在一起的情况下,这是很好的选择,在这种情况下,用户希望优先进行读取,以便处理器可以保持忙碌状态,而不是在等待写入完成之前暂停,然后再继续读取。
我所看到的一个真实示例正在等待几秒钟,以使Gnome下拉菜单出现,这似乎没有任何原因。原因是磁盘忙于写入,因此CPU必须等待写入完成才能从磁盘获取所有数据以显示菜单。
什么是提交真的?增加它真的有好处(例如响应速度和节能)吗?可能会导致数据丢失吗?