内容: 记录为什么使用find命令进行根目录查找后,再使用find命令查询其它会变快
原理:
1、linux操作系统对文件会有一个dentry目录项的缓存,用于组织和快速查找目录
2、这个dentry缓存结构是从slab缓存拿的
3、当多次访问目录,内存会缓存该目录的dentry结构组织,方便快速打开文件
实践:
刚开机时,slabtop查看dentry用量
执行一次find对根目录进行查找:find / -name “*.cpp”
再次执行slabtop查看:可以看到用量增大了很多,因为对根目录查找要缓存很多
再次执行find后再用slabtop查看dentry用量:结果跟上次差不多,没有再暴增
(注意再次执行find后会非常快的打印出来结果,因为已经有缓存了)
过5分钟再使用slabtop观察:反而降了一点,应该是一部分过于深层的目录项被换出了
总结:linux会将文件组织结构缓存在内存,find命令会促使linux提早加载目录结构到内存
大四学生一枚,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。有喜欢C/C++,linux的同学欢迎私信一起讨论学习。