ファイルシステムのメタデータキャッシングにほとんどのRAMを使用するようにシステムを設定したいのですが、読み取り/書き込みキャッシングとファイルのプリフェッチには適度に少量しか使用しません。理想的にはできるようにしたいと思います。実際にファイルを開くまで、ディスクを回転させずにファイルシステムを(RAMに収まる限り)参照します。
詳細は次のとおりです。
私は自家製のファイルサーバーを持っています。 LVMボリュームには約9TBのディスクが5つありますが、RAMは4GBしかありません。サーバーは他にほとんどファイルを提供しないため、RAMはキャッシングに使用されます(「無料」は、3.9Gのうち3.4Gがキャッシュに使用されていると報告しています)。
サーバーは私の寝室にあり、すべてのディスクが回転していると、静かなときに迷惑になるほどのノイズが発生します。 (シークノイズではなく、回転ノイズです。ディスクはさまざまなメーカーやモデルであり、回転速度のわずかな違いが干渉の原因となると思います。ディスク自体は騒々しいわけではありませんが、それらのいくつかが一緒に回転している場合サブヘルツ周期のわずかなノイズ。)そこで、ほとんどの場合、ディスクをスピンダウンするようにサーバーを構成しました。
もちろん、ファイルマネージャでフォルダを開いたときにディスクがスピンダウンした場合、そのフォルダがスピンアップしているディスクのいずれかが起動するまでに遅延が発生します。それは大したことではありません。しかし、私が見ている場所によっては、LVMがたまたま異なるディスク上の各サブフォルダーのメタデータを拡散した場合、連続して数回発生する可能性があります。
Linuxはほとんどの場合、キャッシュをファイルの内容でいっぱいにし、場合によってはプリフェッチされたデータでいっぱいになると思います。キャッシュは、スムーズな再生を保証するために数MBを超えるとあまり役に立ちません。映画を見たばかりなら、もうすぐ見ないでしょう。数MBを超えた後、プリフェッチが発生しても、完全に役に立たない私の場合。
しかし、ほとんどのファイルシステムメタデータ、少なくともすでにアクセスされた部分をキャッシュできるようにするには、4GBで十分だと思うでしょう。そうすれば、ディスクを起動しなくてもファイルを参照できます。睡眠。
ファイルを開くときにまだ遅延がありますが、それは問題ありません。 「クリック; 待機;クリック; 待機;クリック; 待機;演奏する; 「クリック」で見るクリック;クリック;演奏する; 待機;見る"。前者は信じられないほどイライラします。後者はほとんど予想されます。
ノート:
重要なのは、カーネルが3.2、OSがDebian、ボリュームがlvm2、FSがext4)です。
スピンダウンの唯一の理由は、夜間のノイズです。それ以外の場合、サーバーは継続的に実行されます。 (私はそれを適度な低電力にしました。)スピンダウン遅延は、時刻によって異なります。
ハードディスクはメディア専用です。 OSは別の(小さな)フラッシュドライブ上にあります。 (これは、スピンアップの遅延が/usr
で何かが必要だったからというだけではなく、データに起因することを意味します。何か問題が解決する場合は、数GBを節約できます。
パフォーマンスへの合理的な影響は大したことではありません。ディスクはとにかく私のネットワークよりも高速です。
Linuxがどのようにキャッシュするかを制御するには、これを参照してください https://www.kernel.org/doc/Documentation/sysctl/vm.txt
特にvfs_cache_pressureを見ると、おそらく非常に低い値またはおそらくゼロも必要です(1は私には少し安全に聞こえます)。
vfs_cache_pressure
------------------
Controls the tendency of the kernel to reclaim the memory which is used for
caching of directory and inode objects.
At the default value of vfs_cache_pressure=100 the kernel will attempt to
reclaim dentries and inodes at a "fair" rate with respect to pagecache and
swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer
to retain dentry and inode caches. When vfs_cache_pressure=0, the kernel will
never reclaim dentries and inodes due to memory pressure and this can easily
lead to out-of-memory conditions. Increasing vfs_cache_pressure beyond 100
causes the kernel to prefer to reclaim dentries and inodes.
また、swappiness
を変更して、データを交換したり、極端な場合にのみ発生するようにしたりすることもできます。
drop_caches
オプションは、キャッシュしたくないデータを明示的に削除する場合に便利です。
おそらく他にも役立つオプションがあると確信しているので、カーネルのドキュメントを確認してください。
それらを適用するには、変更したい設定を/etc/sysctl.conf
またはOSが起動時にそれらを復元する必要があるものは何でも。