为什么第二次运行“查找”命令比第一次完成得更快?

为什么第二次运行“查找”命令比第一次完成得更快?

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 及更高版本。

相关内容