仮想化 (KVM) と過剰なキャッシュ RAM

仮想化 (KVM) と過剰なキャッシュ RAM

KVM-libvirt (virt-manager) を介して Windows 10 の仮想マシンをセットアップしましたが、ホスト側で異常な動作が発生しています。24GB の RAM を搭載した 64 ビット Arch ホストを実行しており、そのうち 12 がホストに割り当てられ、残りの 12 が VM に割り当てられています。

VM を起動してしばらく放置すると (あまり長くない、おそらく 1 時間程度)、ホストの残りの RAM 全体がバッファリング/キャッシュされます。たとえば、現在、次のようになりますfree -m:

              total        used        free      shared  buff/cache   available
Mem:          24064       13887         253         110        9923        9957
Swap:          4095        1313        2782

VM を起動する前に、いくつかのアプリケーションを実行していましたが、それらの RAM は 2 GB 程度しか使用しておらず、それ以降は新しいアプリケーションは開かれておらず、通常の Web ブラウジングのみです (実際にこの質問を書いています)。

さて、LinuxのキャッシュRAMについていろいろ読んだことがあります。空きRAMは無駄なRAMになるなどという話ですが、これによってホスト上で実行されているほぼすべてのものがスワップされることになります。そして、それは私にとって大きな問題です。なぜなら、すべてがそれで遅い。

私の知る限り、RAMキャッシュはメモリのスワップを引き起こすことはないはずです。Linuxはもっと賢いはずだと知っています自分スワップやキャッシュをクリアしてはいけないなど、メモリの効率的な利用方法についてですが、すべてをスワップアウトしてシステムの速度を大幅に低下させることは、賢明でも効率的でもないと思います。

一体何が起こっているのでしょうか? Linux は VM ディスク アクセスをキャッシュしているため、常に RAM の残り全体を使用しているのでしょうか? VM はディスク イメージにインストールされていますが、別の物理ディスクを使用してみる必要があるでしょうか?

関連情報