我有一台运行8个虚拟机的KVM主机(Linux 3.14.32)。 它们被过度configuration(为其分配的内存大于主机上可用的物理内存)。 然而,他们只消耗约85%的物理内存,这应该留下一些caching空间。 但是,主机上的所有内容都很慢,而且可用的报告几乎没有内存用于caching:
total used free shared buffers cached Mem: 32224 26767 5457 0 0 3 -/+ buffers/cache: 26762 5461 Swap: 1021 414 607
正如你所看到的5.5 GB被浪费了。 closures虚拟机后,一切恢复正常 – 内核使用260M的caching。
的/ proc / meminfo中:
MemTotal: 32997976 kB MemFree: 5543224 kB MemAvailable: 5584332 kB Buffers: 2612 kB Cached: 83876 kB SwapCached: 72524 kB Active: 24721804 kB Inactive: 2214632 kB Active(anon): 24675412 kB Inactive(anon): 2175048 kB Active(file): 46392 kB Inactive(file): 39584 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 1046520 kB SwapFree: 622068 kB Dirty: 84 kB Writeback: 4 kB AnonPages: 26806104 kB Mapped: 28436 kB Shmem: 488 kB Slab: 60024 kB SReclaimable: 25076 kB SUnreclaim: 34948 kB KernelStack: 3232 kB PageTables: 62212 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 17545508 kB Committed_AS: 53713960 kB VmallocTotal: 34359738367 kB VmallocUsed: 431560 kB VmallocChunk: 34359138492 kB HardwareCorrupted: 0 kB DirectMap4k: 9728 kB DirectMap2M: 33536000 kB
我将swappiness设置为0. VM的磁盘映像位于具有cache = writeback的LVM上。
build议在使用RAW设备时绕过caching( cache=none )。 这使用O_DIRECT模式,因此主机页面caching被绕过,I / O直接发生在qemu-kvm用户空间缓冲区和存储设备之间。
QEMU还支持各种caching模式。 如果您正在使用原始卷或分区,则最好完全避免caching,这会减less数据副本和总线stream量。
参考: 调整KVM
我会build议你可能有一些I / O问题,而不是内存问题。 看看顶部(查看IO_WAIT),看看它是否高于〜5%。
另外当你交换的时候,可能是一个进程试图分配更多的资源。 看看KSM https://www.kernel.org/doc/Documentation/vm/ksm.txt ,它可能能够把你的体重降到一个合适的水平,或者试着把RAM的分配降低几分,有区别