CAT / DEV / NULLをファイルの連続して2回呼び出すと、2番目の通話はNO OPになりますか?

StackOverflow https://stackoverflow.com/questions/6088169

  •  09-09-2020
  •  | 
  •  

質問

安いメモリキャッシングメカニズムとしてcat filepath > /dev/nullを使用したいです。 私が疑問に思っているのは:2回目に電話をかけた場合、そしてファイル すでにディスクキャッシュに入っている、OSは何もしないほどスマートですか?

アップデート:FADVISE POSIX_FADV_WILLNEEDを使用して、これをCIFSボリュームでテストしました。 ファイルをローカルにキャッシュするには(コマンドライン上のLinux-FToolsを使用して)。それはわかりました このボリュームは、これが機能するために読み書きモードにマウントする必要があります。読み取り専用です モードでは、FADVISEは無視されたようです。これにはSambaと関係がある必要があります Oplockメカニズム

役に立ちましたか?

解決

posix_fadvise(...、posix_fadv_willneed)の方が/ dev / null - 実際のIOを必要とする必要があり、CPUキャッシュを破壊するファイルの内容が必要ありません。。

さらに、ファイルの関連部分がすでにキャッシュ内にある場合、POSIX_FADVISEはCATファイル> / dev / null

よりもずっと多くの作業を行います。

あなたが今のちょうどでページをになるようにあなたが本当ににする必要がある場合は、ファイルの関連セクションをMMapしてMlock ItをMMapにしてください(後でロックを解除する可能性があります。きつい)。root権限が必要です。

一般的にこの種のことをすることは精度であり、避けられるべきである。カーネルを強制するために行動する方法は、今すぐ実際のワークロードを最適化する機能を減らすことができます。

他のヒント

いいえ、できません。

プログラムが走っているだけでなく、プログラムが何もしないかどうかを判断します。

とにかくメモリキャッシングを制御する必要があるのはなぜですか。絶対に必要な場合は、TMPFSファイルシステムを使用するか、CompCache(圧縮RAMブロックデバイス)を使用する(圧縮RAMブロックデバイス)

を使用することを検討してください。

他の回答が言ったように、 Nothing はしません。しかし、あなたが本当にを意味するのであれば:

私がそれをもう一度呼び出すなら、 ファイルはすでにディスクキャッシュにあります に十分なスマートなOS 2回目のディスクから?

...その後、yes 1 です。これが、すべての後にディスクキャッシュが機能する方法です。


1。問題のファイルシステムがページキャッシュを使用している限り。

It will be fast as hell, but it won't be a no-op (if it were, there would be legit reasons for syscalls to do unexpected things instead of their promised functions...). However, depending on the filesystem driver used, and the kernel options, you could be running close to the memory bandwidth.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top