2017-03-27 3 views
2

J'ai un hôte Ubuntu 16.04 sur lequel j'ai installé un invité virtuel (serveur Windows 2012) en utilisant KVM. La RAM totale disponible est de 16 Go.Allocation de mémoire dynamique dans KVM

J'ai installé des pilotes de balles virtio. J'ai alloué 4 Go de mémoire actuelle et 12 Go de mémoire maximale aux fenêtres. Cependant, les fenêtres voient 8 Go de mémoire non allouée comme mémoire utilisée. S'il vous plaît voir la figure ci-jointe. Lorsque j'ouvre des applications lourdes, la mémoire allouée est limitée à la mémoire disponible de 4 Go. L'ordinateur se comporte de la même manière lorsque la mémoire pleine est utilisée dans les fenêtres (ne fonctionne pas correctement).

Les fenêtres peuvent voir toutes les 12 Go de RAM, mais ne peuvent utiliser que 4 Go. Comment puis-je m'assurer que Windows peut utiliser tous les 12 Go de mémoire?

Répondre

3

Le comportement que vous décrivez est simplement la manière dont le conducteur du ballon fonctionne. L'hyperviseur expose une machine virtuelle avec 12 Go de modules DIMM virtuels installés. Le pilote de ballon récupère alors 8 Go de cette mémoire et la restitue à l'hyperviseur. La façon dont il récupère la mémoire varie selon le système d'exploitation invité, mais il doit essentiellement l'allouer pour qu'il semble être utilisé, empêchant ainsi le système d'exploitation invité de l'utiliser. Le pilote de ballon ne s'ajuste pas automatiquement en fonction des exigences de charge de travail invité. Donc, si vos invités Windows ont besoin de plus de 4 Go, vous devez utiliser libvirt/virsh sur le système d'exploitation hôte pour modifier le niveau du ballon, afin de redonner à l'OS invité une partie des 8 Go «utilisés». Si vous voulez que le système d'exploitation invité voit & utiliser le plein 12 Go, n'utilisez tout simplement pas le pilote de ballon.