![为什么第二次运行“查找”命令比第一次完成得更快?](https://linux22.com/image/1165934/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%AC%AC%E4%BA%8C%E6%AC%A1%E8%BF%90%E8%A1%8C%E2%80%9C%E6%9F%A5%E6%89%BE%E2%80%9D%E5%91%BD%E4%BB%A4%E6%AF%94%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%AE%8C%E6%88%90%E5%BE%97%E6%9B%B4%E5%BF%AB%EF%BC%9F.png)
我time find ~
第一次运行时(即第一次find
在会话中运行)所花的时间比第二次运行所花的时间长。这是为什么?
第一次运行:
real 0m12.410s
user 0m0.424s
sys 0m1.287s
第二次运行:
real 0m0.988s
user 0m0.214s
sys 0m0.405s
答案1
这链接由 Rinzwind 提供标题为什么如果运行两次,[find] 的运行速度会非常快?和top 命令中的“cached”是什么?涵盖同一问题。
本质上,如果有可用的 RAM,内核可以使用其中的一部分来缓存信息。这样使用的内存可以根据应用程序的需求进行使用。
Linux 占用了我的内存解释如下术语 可用的,缓冲,自由的, 和用过的。它还提供了以下命令来清除“大部分磁盘缓存”:
echo 3 | sudo tee /proc/sys/vm/drop_caches
为了确认寻找第二次跑得更快,我time find ~
第一次跑的是:
real 0m10.765s
user 0m0.395s
sys 0m1.169s
再次查看内存缓存的有益效果:
real 0m1.119s
user 0m0.196s
sys 0m0.476s
然后我用以下命令清除缓存echo 3 | sudo tee /proc/sys/vm/drop_caches
并再次运行time find ~
。果然,时间又变高了:
real 0m19.198s
user 0m0.457s
sys 0m1.425s
但由于新的缓存,运行寻找随后如预期,时间有所改善:
real 0m1.100s
user 0m0.199s
sys 0m0.484s
在阅读缓存, 我碰到将 Linux 上的文件缓存/预加载到 RAM 中并提出了一些答案vmtouch——虚拟内存触摸器:它被描述为“便携式文件系统缓存诊断和控制”,并且是在仓库中适用于 Bionic 及更高版本。