虚拟化 (KVM) 和过多的缓存 RAM

elp*_*ato 7 kvm arch-linux virtual-machine virt-manager

我已经通过 KVM-libvirt (virt-manager) 设置了一台装有 Windows 10 的虚拟机,但我在主机端出现了奇怪的行为。我正在运行具有 24GB RAM 的 64 位 Arch 主机,其中 12 个分配给它,另外 12 个分配给 VM。

在启动虚拟机并让它静置一段时间后,也许一个小时不会太长,我整个主机的剩余 RAM 都被缓冲/缓存。例如,现在我从free -m:

              total        used        free      shared  buff/cache   available
Mem:          24064       13887         253         110        9923        9957
Swap:          4095        1313        2782
Run Code Online (Sandbox Code Playgroud)

在启动 VM 之前,我运行了几个应用程序,但它们的 RAM 不超过 2GB 左右,从那时起没有打开任何新的东西,只是一些正常的网页浏览(实际上是在写这个问题)。

现在,我已经阅读了很多关于 linux 缓存 RAM 的内容,因为空闲 RAM 被浪费了 RAM 等等,但这导致主机上运行的几乎所有内容都被交换。这对我来说是一个大问题,因为一切都变得如此缓慢。

据我所知,RAM 缓存不应该导致内存被交换。我知道 linux在有效的内存利用方面应该比我更聪明,例如我不应该清除交换和/或缓存......对我有效。

可能会发生什么?linux 是否缓存了 VM 磁盘访问,这就是为什么它总是使用我的 RAM 的全部剩余部分?VM 安装在磁盘映像中,我应该尝试使用单独的物理磁盘吗?