0

バッファ キャッシュの使用可能なアドレス空間に上限を設定する方法はありますか? 制限はなく、メモリ使用量が特定のポイントに達すると、他のプロセスがスワップアウトされてバッファキャッシュが拡張できるようになると思いますか?

とは言っても、そこまで来たら読み書きが失敗するだけじゃないですか。

4

2 に答える 2

3

BufferCacheが大量のメモリを使用しているという理由だけで、読み取り/書き込みが失敗することはありません。ディスクをキャッシュするためのバッファとして使用されるのは未使用のRAMのみですが、一部のプロセスでメモリが必要な場合は、優先度が高くなります。これはカーネルによって自動的に実行されます。バッファキャッシュはリソースの最適な使用法であり、システムの通常の動作に悪影響を与えることはありません。

于 2011-03-17T09:46:03.487 に答える
1

一般的な問題は、読み取り/書き込みが失敗することではありませんが、アプリケーションがフリーズし、最終的に失敗します。これは非常に簡単な実験です。非常に大きなファイルのディレクトリを取得し、それを非常に遅いデバイスにコピーします。使用可能なメモリの100%が書き込みキャッシュによって消費されます。このキャッシュは、低速のデバイスに実際に書き込むことによってのみクリアされます。問題は、アプリケーションがメモリを必要とする場合、またはディスクにスワップされたものにスワップバックする必要がある場合にどうなるかということです。キャッシュの空が遅すぎるため、実際の唯一のオプションは、他の何かをディスクにスワップして、より多くのメモリを使用できるようにすることです。そのため、システム全体がスラッシングしています。スワップスペースが不足している場合は、深刻な問題が発生します。いずれにせよ、デスクトップはかなりスラッグで、コピーが完了するまで完全にロックされている可能性があります。

この問題を修正する方法はわかりませんが、vm.vfs_cache_pressureを0に、vm.swappinessを0に調整して、この問題を軽減してください。

于 2012-01-12T16:12:36.603 に答える