为什么清除缓存后,读文件的程序依然运行很快?

118 天前
 youthdou

自己写的程序,通过 mmap 将一个大文件映射到内存,随机读取部分数据。

测试环境:虚拟机,ubuntu 22.04 ,机械盘。

第一运行时间大概在 20s 左右。

第二次运行前,运行“echo 3 > /proc/sys/vm/drop_caches ”,清除缓存。再次运行,运行时间 1s 左右。清了缓存,为什么仍然会快很多?

1938 次点击
所在节点    Linux
6 条回复
seers
118 天前
mmap 内存不会清理,显示 munmap 才行
youthdou
118 天前
@seers 结束的时候会调用 unmap 。
iBugOne
118 天前
既然你说了是虚拟机,那么有没有一种可能,你的宿主机把虚拟磁盘文件对应的块*也*给缓存起来了(狗头
timewarp
118 天前
看下/proc/meminfo 里 file active/inactive 就知道缓存在不在了
youthdou
117 天前
@iBugOne 👍 实体机上试了下,清除缓存后运行,时间是一致的。
youthdou
117 天前
@timewarp 看过了,缓存是被清掉了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1133279

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX