大きなファイルを1回だけスキャンする場合、ページキャッシュへの影響を心配する必要がありますか、それともOSがスキャンによってページキャッシュに無意味なチャーンが発生しないように注意しますか。ページキャッシュの恩恵を受ける可能性のある他のプロセスに影響を与えないようにしたい。
POSIX_FADV_DONTNEED
の使用を検討しましたが、Linuxでposix_fadvice
とPOSIX_FADV_DONTNEED
が何かを実行するかどうかについて矛盾するアドバイスがあります。
誰かが明確にすることができます、ありがとう。
Linuxでは_POSIX_FADV_DONTNEED
_が考慮されます。カーネルソースの _mm/fadvise.c
_ を参照してください。 _POSIX_FADV_DONTNEED
_を指定してposix_fadvise()
を呼び出すたびに、対応するページキャッシュがすべて排出されます。
jthill で述べたように、ページキャッシュへのI/Oの影響を最小限に抑えるためのより良いアプローチは、_O_DIRECT
_でファイルを開くことです。