O host KVM não utilizará memória para armazenamento em cache

4

Eu tenho um host KVM (Linux 3.14.32) executando 8 máquinas virtuais. Eles são superprovisionados (a memória alocada para eles é maior do que a memória física disponível no host). No entanto, eles consomem apenas cerca de 85% da memória física, o que deve deixar algum espaço para o cache. No entanto, tudo no host é relatórios insuportavelmente lentos e gratuitos que quase nenhuma memória é usada para armazenamento em cache:

             total       used       free     shared    buffers     cached
Mem:         32224      26767       5457          0          0          3
-/+ buffers/cache:      26762       5461
Swap:         1021        414        607

Como você pode ver, 5,5 GB são desperdiçados. Depois de fechar as VMs, tudo volta ao normal - o kernel usa 260M de cache.

/ 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

Eu tenho o swappiness definido como 0. As imagens de disco da VM estão no LVM com cache = writeback.

    
por Michał Zieliński 01.08.2015 / 16:07

2 respostas

3

É recomendado ignorar o cache ( cache=none ) ao usar dispositivos RAW. Isso usa o modo O_DIRECT, portanto, o cache da página do host é ignorado e a E / S acontece diretamente entre os buffers do espaço do usuário qemu-kvm e o dispositivo de armazenamento.

QEMU also supports a wide variety of caching modes. If you're using raw volumes or partitions, it is best to avoid the cache completely, which reduces data copies and bus traffic.

Ref: Ajustando o KVM

    
por 21.10.2015 / 23:53
2

Eu sugeriria que você poderia ter alguns problemas de E / S, em vez de problemas de memória. Dê uma olhada no topo (confira IO_WAIT) e veja se é algo acima de ~ 5%.

Além disso, como você está trocando, pode ser que um processo esteja tentando alocar mais do que é possível. Olhe para o link do KSM e ele poderá deduzir você a um nível decente ou tentar diminuir as alocações de RAM por algumas frações e veja se isso faz diferença.

    
por 21.10.2015 / 23:00