私はファイルシステム内の1億個のファイル(多くのサブディレクトリに分散)を扱っており、特にそれらを効率的にrsyncするために、それらを非常に迅速にリストできるようにする必要があります。
一方、ファイルの実際のコンテンツをキャッシュに保持する必要はありません。
私は常にファイルの追加と削除を行っていますが、頻繁ではありません(毎秒10回程度)。
OS(2.6.18-194.el5)に利用可能な24GBを使用するように指示する方法はありますかRAMファイルキャッシングよりもiノードキャッシングの方が多いですか?私はすでに/ proc/etcを見ました/ vm/vfs_cache_pressureですが、私が探しているものとは正確には一致しないようです...
vfs_cache_pressure
の値を下げてみませんか? / proc/sys/vm/*のドキュメント によると、これはあなたが望むことをするはずです:
vfs_cache_pressure
このパーセンテージ値は、ディレクトリおよびiノードオブジェクトのキャッシュに使用されるメモリを再利用するカーネルの傾向を制御します。
デフォルト値のvfs_cache_pressure = 100では、カーネルはページキャッシュとスワップキャッシュの再利用に関して「公正な」速度でデントとiノードを再利用しようとします。 vfs_cache_pressureを減らすと、カーネルはdentryキャッシュとinodeキャッシュを保持することを優先します。 vfs_cache_pressure = 0の場合、メモリの負荷が原因でカーネルがデントとiノードを再利用することはありません。これにより、メモリ不足状態が発生しやすくなります。 vfs_cache_pressureを100を超えて増やすと、カーネルはデントとiノードを再利用することを優先します。
Vfs_cache_pressureを100を大幅に超えて増加させると、パフォーマンスに悪影響を及ぼす可能性があります。再利用コードは、解放可能なディレクトリおよびiノードオブジェクトを見つけるためにさまざまなロックをかける必要があります。 vfs_cache_pressure = 1000を使用すると、解放可能なオブジェクトが10倍多く検索されます。
これらの2つのコマンドを使用して、同じジョブを実行できます。
Updatedb(ドライブ全体のファイルとフォルダーの場所のリストを更新するため)
/を見つけます(OS全体のすべてのファイルを一覧表示します。これにより、データベースからファイルを取得するときに高速になります)。