Linuxカーネルのドキュメントによると、先読みを無効にするにはPOSIX_FADV_RANDOMをお勧めします。しかし、(sudo hdparm -A 0 / dev / sdb)を使用してReadheadを無効にすると、read(2)が512kごとに分割され、別の呼び出しで動作することがわかりました(理由はわかりませんが、最大セクタかもしれません)。要求に応じて)。
では、実際に先読みを無効にするオプションは何ですか? POSIX_FADV_RANDOMもOSキャッシュを無効にしますか、それともPOSIX_FADV_DONTNEEDを追加する必要がありますか?
ベストアンサー1
POSIX_FADV_RANDOM
カーネルファイルシステムドライバが実行する先読みを無効にします。ファイルシステム階層に必要以上に読み込まないようにアドバイスします。先読みはファイルレベルで行われます。ファイルシステム階層は、同じファイルから追加のデータを取得できますがPOSIX_FADV_RANDOM
。
hdparm -A 0
ディスク自体で実行される先読みを無効にします。 1つのセクタを読み取るときに、内部キャッシュに次のいくつかのセクタを保存しないことをディスクにアドバイスします。
どちらも先読みを無効にしますが、システムの異なる層で使用されます。
POSIX_FADV_RANDOM
プリフェッチのみが無効になります。POSIX_FADV_DONTNEED
ゾーンをキャッシュしたくない場合(またはキャッシュから削除するには)ゾーンをに設定します。