刷新文件在Linux 放弃读缓存磁盘访问时间


我提出的访问时间来分析一些构建过程,但它不是我想要的方式工作:访问时间是我第一次更新了读取文件,然后它就会在停留很长一段时间相同,或直至在下一次重新启动。 例如:

$ ll -u some_file
 -rw-r--r-- 1 root root 1.3M 2010-04-07 10:03 some_file
 $ grep abcdef some_file
 $ ll -u some_file
 -rw-r--r-- 1 root root 1.3M 2010-04-07 11:24 some_file
 # The access time is updated
 
 # waiting a few minutes...
 $ grep abcdef some_file
 $ ll -u some_file
 -rw-r--r-- 1 root root 1.3M 2010-04-07 11:24 some_file
 # The access time has not been updated :(
 我认为该文件是由Linux在自由缓冲存储器,仅此副本被访问速度的原因,随后的时间。 一个解决办法是抛弃在内存中的缓冲区。 一些论坛搜索后,我发现:

 sync
 echo 1 > /proc/sys/vm/drop_caches
 echo 2 > /proc/sys/vm/drop_caches
 echo 3 > /proc/sys/vm/drop_caches
 但它不工作,它似乎只写缓冲区保持同步,而不是读的。 也许它是由于一些在我的发行版(Fedora 9中)定制的内核配置?

或者我在这里失去了一些东西? 有没有办法实现这一访问时间刷新?

还请注意,我不想在我的整个模拟一些文件树写道。 由于我使用的一些Makefile的编译系统,这将导致整个项目将在重新建造。

我使用的是标准的ext3文件系统,无需特殊的选项。

 /dev/sda1 on / type ext3 (rw)
 我试图重新安装它strictatime (未确认)和atime (没有什么区别,我想这是默认值)。

标签:Linux文件系统缓存时间
答1:
好吧,这种行为实际上是由于具体的Fedora 9内核停用标准的访问时间更新优化的理由(写为每个磁盘读是非常耗时)。

选项DEFAULT_RELATIME (在我的情况内核2.6.27.25)成立,这禁止访问时间,如果最后刷新刷新前发生不到一天。

内核编译选项文档给出了内核引导选项norelatime它禁用此功能... 但它没有工作!

要修改成功这个问题,我真的做到:

 echo 60 > /proc/sys/fs/relatime_interval
 这是减少到1分钟的间隔。

感谢您的帮助使我的这个解决方案。

答2:
您是否使用noatime选项或relatime安装选项? 你可以看到,如果你与mount的命令:

 [kbrandt@kbrandt-opadmin: ~] mount
 /dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
 如果是这样,重新挂载文件系统的选项,如果没有那些(或可能的情况这将是更好的编辑选择出/etc/fstab ,只是重新启动)。 这些选项是文件系统无关 。 选项说明这些都是在“文件系统独立山选项”,在man mount ,但基本上他们阻止或限制性能被更新atime的增加。

我不知道这是您的问题的解决方案,但由于您在访问时间而定,我建议你这样做反正。


--------------------------------------------------------------------------------

顺便说一句,你可能要问您的具体生成过程进行分析,以确定的atime这里或stackoverflow是正确的道路可走。


--------------------------------------------------------------------------------

更新: 是否stat -c "%x" filename表现出同样的事情吗? (忽略我的最后一次更新,没有注意到-u选项...),但也许有些事情,你去与ll的别名,所以我会检查与统计,以确保。

另外,你说/没有noatime选项,但你做对根系这些测试,而不是另一个文件系统,就像一个NFS装载的东西?

是否touch -a -t 199812130530设法改变访问时间?

LapTop006:注意relatime最近成为默认,所以你可能需要强制它使用``strictatime挂载选项。 `芒邻重新安装,strictatime挂载点`可以让你改变这个线上
:是的,“统计”提供了相同的结果,我访问我的根文件系统。 但是你检查你的系统? 是否的atime总是在每个文件刷新读取? 我想知道如果故障是由于我的Linux的味道,而不是一个标准的Linux行为。
凯尔勃兰特:在我的Ubuntu的桌面上,是中,grep更新访问时间,如果没有relatime noatime选项或重新安装。
:THX的,这个信息给了我一个暗示... 现在看来,这是由于内核编译选项,我需要重新启动才能确认,我将提供更多的细节。

相关内容