2

CIFSマウントからファイルを読み取り、ソケットを介して送信するLinux用のストリーミングサーバーを作成しています。理想的には、Linuxはファイルをメモリにキャッシュして、後続の読み取りが高速になるようにします。これは本当ですか?ネットワーク読み取りをキャッシュするようにカーネルに指示できますか?

編集:これらのファイルには複数の読み取りがありますが、書き込みはありません。

ありがとう!

更新:これをCIFSボリュームでテストし、fadvise POSIX_FADV_WILLNEEDを使用してファイルをローカルにキャッシュしました(コマンドラインでlinux-ftoolsを使用)。これを機能させるには、ボリュームを読み取り/書き込みモードでマウントする必要があることがわかりました。読み取り専用モードでは、fadviseは無視されているようです。これは、sambaoplockメカニズムと関係があるはずです。

4

1 に答える 1

3

CIFSの通常のキャッシュコヒーレンシルール[1]に従い、はい、カーネルCIFSクライアントはファイルデータをキャッシュします。

[1]大まかに言って、CIFSは原則としてキャッシュされませんが、oplockを使用することで、クライアントはより積極的にデータをキャッシュできます。CIFSロックの説明については、たとえばhttp://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.htmlのSambaマニュアルを参照してください。クライアントが読み取り専用モードでファイルを開く場合、クライアントはレベル2のoplockを使用すると思われます。競合するアクセスが発生しないため、複数のクライアントが同じファイルに対してレベル2のoplockを持つことができるはずです。一部のクライアントがファイルへの書き込みアクセスを要求した場合にのみ、oplockが壊れます。

于 2011-05-15T13:53:30.360 に答える