4 votes

L'hôte KVM n'utilise pas la mémoire pour la mise en cache.

J'ai un hôte KVM (Linux 3.14.32) qui fait tourner 8 machines virtuelles. Elles sont surprovisionnées (la mémoire qui leur est allouée est supérieure à la mémoire physique disponible sur l'hôte). Cependant, elles ne consomment qu'environ 85% de la mémoire physique, ce qui devrait laisser de la place pour le cache. Cependant, tout ce qui se trouve sur l'hôte est d'une lenteur insupportable et free signale que presque aucune mémoire n'est utilisée pour la mise en cache :

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

Comme vous pouvez le voir, 5,5 Go sont gaspillés. Après avoir fermé les VMs, tout revient à la normale - le noyau utilise 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

J'ai réglé la permutation sur 0. Les images disques de la VM sont sur LVM avec cache=writeback.

3voto

Cameron Points 1075

Il est recommandé de contourner le cache ( cache=none ) lorsque vous utilisez des appareils RAW. Ceci utilise le mode O_DIRECT, donc le cache de page de l'hôte est contourné et les E/S se font directement entre les tampons de l'espace utilisateur de qemu-kvm et le périphérique de stockage.

QEMU prend également en charge une grande variété de modes de mise en cache. Si vous utilisez des volumes bruts ou des partitions, il est préférable d'éviter complètement le cache, ce qui réduit les copies de données et le trafic sur le bus.

Réf : Réglage de KVM

2voto

Biju Points 1

Je pense que vous avez des problèmes d'E/S plutôt que des problèmes de mémoire. Jetez un coup d'oeil à top (vérifiez IO_WAIT) et voyez s'il y a quelque chose au-dessus de ~5%.

De plus, comme vous échangez des données, il se peut qu'un processus tente d'allouer plus de ressources qu'il n'en est capable. Regardez dans KSM https://www.kernel.org/doc/Documentation/vm/ksm.txt et il pourrait être en mesure de vous déduire à un niveau décent ou d'essayer de réduire les allocations de RAM de quelques fractions et voir si cela fait une différence.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X