stat() は実際のハードディスクアクセスを引き起こしますか、それとも情報はキャッシュされますか?

stat() は実際のハードディスクアクセスを引き起こしますか、それとも情報はキャッシュされますか?

PHP opcodeキャッシュを最適化するときに統計設定を交互に試してみました(= opcodeキャッシュはファイルが修正を通過したことを確認し、キャッシュされたstat()結果を使用します)。しかし、アプリケーションベンチマークには違いはありません。使用中のファイルシステムがext4オプションでマウントされましたnoatime

使用されたメタデータが正しいと仮定します。統計()stat()、メモリに保存されていますか、それとも使用するときに常に何らかのハードドライブの相互作用がありますか?

ベストアンサー1

stat(ファイルのメタデータ)返されたデータは、他のファイルシステムデータと同様にキャッシュされます。最近アクセスしてもキャッシュに残っている場合は、RAM内の他のエントリがそれを置き換えるまで後続のアクセスが速くなります。

ファイルの内容にアクセスしても、そのメタデータはメモリにロードされません(その逆も同様です)。

確認にはstat少し余分な費用がかかります(メタデータがキャッシュにある場合は少しですが、まだ少し費用がかかります)。これが潜在的な追加処理を補償するかどうかは、実行するスループットとIO / CPU飽和率によって異なります。

おすすめ記事