%20%E3%81%A8%E9%81%8E%E5%89%B0%E3%81%AA%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%20RAM.png)
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 はディスク イメージにインストールされていますが、別の物理ディスクを使用してみる必要があるでしょうか?