CPU-Auslastung von KVM

9

Ich habe einen Linux-Host mit 4 KVM-Linux-Gästen. Alle Gäste sind ziemlich untätig und haben eine Last von <0,1 im Gast.

Wenn ich jetzt eine topauf dem Host mache , verbraucht jeder KVM-Prozess ungefähr 30% der CPU.

Ist das ein normales Verhalten? Ich würde erwarten, dass der Host viel weniger CPU benötigt, nur um einen inaktiven Gast zu hosten.

Wenn es normal ist, was ist der Grund dafür?

Wenn es nicht normal ist, was könnte das Problem sein?

michas
quelle
Welche Linux-Distributionen verwenden Sie? Debian, Ubuntu, CentOS oder etwas anderes?
slm
Der Gastgeber betreibt einen aktuellen Fedora, die Gäste einen älteren SLES 11.2. Der Kernel ist 3.6.10-4.fc18.x86_64 auf dem Host und 3.0.13-0.27-Standard auf dem Gast.
Michas

Antworten:

6

Als Zyniker könnte ich sagen, dass dies für Windows-Gäste "normal" ist, aber nicht für Linux-Gäste (zumindest habe ich nie gesehen, dass sich einer so verhält).

Unter Windows hängt dies stark von den ausgeführten Anwendungen ab (nahezu im Leerlauf). Ein einfaches XP oder W2K (ich habe noch keine Erfahrung mit neueren Versionen in KVM) verursacht 10% bis 20% auf dem Host (wird ungefähr 0% innerhalb angezeigt), aber MS SQL Server erreicht dies leicht über 30%. Dies scheint irgendwie mit dem Timer-Zugriff und / oder ACPI zu tun zu haben. Aber selbst in einer Nicht-ACPI-VM habe ich Windows nie unter 10% auf dem Host.

Bearbeiten 1 (Kommentare integrieren)

Was ist die Ausgabe von cat /sys/devices/system/clocksource/clocksource0/current_clocksource(im Gast)? Das sollte kvm-clock sein. Überprüfen Sie Ihre Kernelkonfiguration (/proc/config.gz) auf CONFIG_PARAVIRT_CLOCK und CONFIG_KVM_CLOCK.

Dies ist eine Liste der für KVM relevanten Kernel-Konfigurationsoptionen .

Hauke ​​Laging
quelle
In meinem Fall gibt es nur Linux-Gäste. (Frage aktualisiert)
Michas
2
@michas Oh Mann, du hast mein geliebtes Vorurteil ruiniert ... Sind das VMs im Textmodus oder haben sie X? Was ist die Ausgabe von cat /sys/devices/system/clocksource/clocksource0/current_clocksource?
Hauke ​​Laging
current_clocksource befindet sich acpi_pmim Gast und tscauf dem Host. In jedem Gast wird kein X, sondern ein Java-Anwendungsserver und eine Oracle-Datenbank ausgeführt.
Michas
@michas Das sollte kvm-clockstattdessen sein (im Gast). Ich musste das nie explizit konfigurieren. Überprüfen Sie Ihre Kernel-Konfiguration ( /proc/config.gz) auf CONFIG_PARAVIRT_CLOCKund CONFIG_KVM_CLOCK.
Hauke ​​Laging
1
Beide sind auf eingestellt y. Wenn Sie current_clocksource auf setzen, werden kvm-clockdie Dinge besser. Jetzt liegt jeder KVM-Prozess bei rund 20 Prozent. Das System wurde von einem früheren Virtualbox-Setup auf KVM migriert. Scheint, als ob einige Einstellungen noch aus dem alten Setup stammen ...
michas
0

Ich würde überprüfen, ob die KVM-Gäste bereitgestellt werden, damit sie alle Ressourcen des Hosts (CPU, RAM usw.) nutzen können. Normalerweise werden KVM-Gästen nur 1-2 CPUs (Kerne) auf einem System zugewiesen, das möglicherweise viel mehr enthält.

Dies würde bedeuten, dass Sie nicht genau dasselbe vergleichen, wenn Sie die Ressourcen des Hosts mit den Interna eines bestimmten KVM-Gastes betrachten.

Zum Beispiel

Der Host hat Folgendes:

$ 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

Während einer der KVM-Gäste dies hat:

$ 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
quelle
1
Ähnlich hier: 8 Kerne auf dem Host und 4 Kerne auf jedem Gast. - Aber ich verstehe nicht, wie das zu einer erheblichen Belastung eines untätigen Gastes führt.
Michas