stat() 会导致实际的硬盘访问还是信息会被缓存?

stat() 会导致实际的硬盘访问还是信息会被缓存?

在优化我的 PHP 操作码缓存时,我尝试交替 stat 设置(= 操作码缓存检查文件是否通过 修改stat(),然后再使用缓存结果)。但我没有发现我的应用程序基准有任何差异。正在使用的文件系统是ext4通过选项安装的noatime

假设使用的元数据是否正确统计()stat(),保存在内存中,还是在使用 时总是存在某种硬盘交互?

答案1

stat(文件的元数据)返回的数据像任何其他文件系统数据一样被缓存。如果您最近访问过它,使其仍在缓存中,则后续访问速度会更快,直到 RAM 中的其他内容替换它。

访问文件的内容不会将其元数据加载到内存中(反之亦然)。

检查stat需要一点额外的费用(如果元数据在缓存中,则费用很少,但仍然有一点)。这是否补偿潜在的额外处理取决于您要执行的处理量以及 IO/CPU 饱和比。

相关内容