在编写 Python 代码时,我倾向于经常保存文件(频率相当高code->test->code->test->...
)。我讨厌 Linux 每次写入时都将我的更改同步到磁盘。
如何配置 Linux 以便它将文件写入内容保留在内存中一段时间/一定次数?
为了使其有用,当然必须从内存中读取尚未同步的文件(以便 Python 解释器始终看到最新内容)。后台同步不会阻止同时进行的其他写入/读取,这会带来额外好处 :-)
答案1
通常是 Linux总是缓存磁盘写入一段时间,但这取决于文件系统的挂载选项。确保文件系统挂载在async
模式,通过检查findmnt
或/proc/mounts
。
- 好的:
/dev/sda4 /home btrfs rw,relatime 0 0
- 坏的:
/dev/sda4 /home btrfs rw,sync,relatime 0 0
如果您的磁盘已安装在同步模式由于某种原因,请使用此命令进行临时修复,并调整配置以/etc/fstab
使其永久生效:
mount -o remount,async /home
(/home
用实际的文件系统根替代 - 可能只是/
在单分区设置中。)
不过,大多数情况下,额外的 fsyncing 是由文本编辑器完成的 – Vim 尤其针对实际文件和交换文件执行此操作。使用fsync
和swapsync
中的选项vimrc控制它:
set nofsync swapsync=
对于 Emacs,你可以设置write-region-inhibit-fsync
。
本文描述了 Firefox 中的 Linuxfsync()
行为,还提到当文件系统以以下data=ordered
模式挂载时,ext3(不是 ext4)会导致非常长的延迟:
在一些相当常见的 Linux 配置中,特别是在“ ”模式下使用 ext3 文件系统时
data=ordered
,调用 fsync 不仅会刷新被调用文件的数据,还会刷新该文件系统的所有缓冲数据。
如果您在此模式下使用 ext3,请考虑禁用它。