2012-05-08 8 views
7

FSDirectoryとMMapDirectoryの違いは何ですか?私はキャッシュをウォーミングアップしたい。これは役に立つかもしれないが、これがキャッシュのウォームアップにどのように役立つのか分からなかった。あなたが何か考えているなら、私に説明してください。ポインタでさえ歓迎します。FSDirectoryとMMapディレクトリの違いは?

Luceneのドキュメントによると、MMapはインデックスのルックアップを高速化するために仮想メモリを使用しています。 speedpアップが達成される方法

、何私のインデックスが大きい場合、彼らは私の仮想メモリに収まらないように起こる>

+0

最初の部分が見つかりました:)仮想メモリで利用可能なインデックスは、ルックアップが速くなります。 – ganesshkumar

答えて

7

MMapDirectoryは抽象FSDirectoryクラスの具象サブクラスの一つであります。メモリマップファイルを使用して、インデックス内の情報にアクセスします。

他のオプションは、異なる方法を使用するSimpleFSDirectoryNIOFSDirectoryです。 3つのすべての簡単な説明については、documentation for FSDirectoryをご覧ください。そこに表示されるように、FSDirectory.open(File)は、ご使用の環境に最適な実装を選択しようとします。

私自身の経験では、NIOFSDirectoryMMapFSDirectoryのパフォーマンスに大きな違いは見られませんでしたが、独自のデータとハードウェアの設定を使用してパフォーマンステストを行う必要があります。

MMapFSDirectoryを使用すると、仮想メモリとインデックスサイズが32ビットマシン(unless your indexes are larger than 2^48 bit = 32TB)でのみ問題になる可能性があります。

+0

私はこのプロジェクトをやっており、MMapDirectoryの影響は顕著です。ファイルサイズが大きい場合は、違いを記録します。私はメモリに収まらないファイルをロードしています。 – ganesshkumar

1

インデックスが仮想メモリに収まらない場合は、FSDirectoryを使用する方がよいでしょう。問題は、MMapDirectoryを仮想メモリに収まらないときに使用することは、FSDirectoryを使用し、OSのキャッシングアルゴリズムを使用することと同等であることです(OSのキャッシングアルゴリズムは、手作業で行うことよりも優れています)。両方の場合、インデックスの一部だけが物理メモリーに一度に格納されるため、両方の場合に物理メモリに格納されるため、「等価」となります)。

関連する問題