Utilisation CPU de KVM

9

J'ai un hôte Linux avec 4 invités Linux KVM. Tous les invités sont à peu près inactifs, avec une charge <0,1 à l'intérieur de l'invité.

Maintenant, si je fais un topsur l'hôte, chaque processus KVM utilise environ 30% du processeur.

Est-ce un comportement normal? Je m'attendrais à ce que l'hôte ait besoin de beaucoup moins de CPU juste pour héberger un invité inactif.

Si c'est normal, quelle en est la raison?

Si ce n'est pas normal, quel pourrait être le problème?

michas
la source
Quelles distributions Linux utilisez-vous? Debian, Ubuntu, CentOS ou autre chose?
slm
L'hôte exécute un fedora actuel, les invités un ancien SLES 11.2. Le noyau est 3.6.10-4.fc18.x86_64 sur l'hôte et 3.0.13-0.27 par défaut sur l'invité.
michas

Réponses:

6

Étant cynique, je pourrais dire que c'est "normal" pour les invités Windows mais pas pour les invités Linux (au moins je n'en ai jamais vu un se comporter comme ça).

Avec Windows, cela dépend beaucoup des applications en cours d'exécution (presque inactives). Un simple XP ou W2K (je n'ai pas encore d'expérience avec les nouvelles versions de KVM) provoque 10% à 20% sur l'hôte (étant affiché environ 0% à l'intérieur) mais MS SQL Server obtient cela facilement au-dessus de 30%. Cela semble être lié à l'accès de la minuterie et / ou ACPI en quelque sorte. Mais même dans une machine virtuelle non ACPI, je n'ai jamais eu Windows en dessous de 10% sur l'hôte.

Edit 1 (intégrant des commentaires)

Quelle est la sortie de cat /sys/devices/system/clocksource/clocksource0/current_clocksource(dans l'invité)? Cela devrait être kvm-clock. Vérifiez la configuration de votre noyau (/proc/config.gz) pour CONFIG_PARAVIRT_CLOCK et CONFIG_KVM_CLOCK.

Il s'agit d'une liste d'options de configuration du noyau pertinentes pour KVM .

Hauke ​​Laging
la source
Il n'y a que des invités Linux dans mon cas. (question mise à jour)
michas
2
@michas Oh boy, tu as ruiné mon préjugé bien-aimé ... S'agit-il de machines virtuelles en mode texte ou ont-elles X? Quelle est la sortie de cat /sys/devices/system/clocksource/clocksource0/current_clocksource?
Hauke ​​Laging
current_clocksource est acpi_pmdans l'invité et tscsur l'hôte. Pas de X, mais un serveur d'applications Java et une base de données Oracle s'exécutent dans chaque invité.
michas
@michas Cela devrait être à la kvm-clockplace (dans l'invité). Je n'ai jamais eu à configurer cela explicitement. Vérifiez votre kernel config ( /proc/config.gz) pour CONFIG_PARAVIRT_CLOCKet CONFIG_KVM_CLOCK.
Hauke ​​Laging
1
Les deux sont définis sur y. Définir current_clocksource pour kvm-clockaméliorer les choses. Désormais, chaque processus KVM représente environ 20%. Le système a été migré vers KVM à partir d'une configuration précédente de virtualbox. On dirait que certains réglages sont toujours de l'ancienne configuration ...
michas
0

Je vérifierais pour m'assurer que les invités KVM sont provisionnés afin qu'ils puissent utiliser toutes les ressources de l'hôte (CPU, RAM, etc.). En règle générale, les invités KVM ne sont attribués que, disons, 1 à 2 CPU (cœurs) sur un système qui peut en contenir beaucoup plus.

Cela signifie que vous ne comparez pas exactement la même chose lorsque vous regardez les ressources de l'hôte par rapport aux internes d'un invité KVM donné.

Par exemple

L'hôte a les éléments suivants:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
Thread(s) per core:    2
Core(s) per socket:    6
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Stepping:              7
CPU MHz:               1200.000
BogoMIPS:              6404.04
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K
NUMA node0 CPU(s):     0-11

Alors que l'un des invités KVM a ceci:

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 6
Stepping:              3
CPU MHz:               3202.024
BogoMIPS:              6404.04
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
NUMA node0 CPU(s):     0
slm
la source
1
Similaire ici: 8 cœurs sur l'hôte et 4 cœurs sur chaque invité. - Mais je ne vois pas comment cela se traduit par une charge substantielle d'un invité inactif.
michas