Uso de CPU de KVM

9

Tengo un servidor Linux con 4 invitados Linux KVM. Todos los invitados están prácticamente inactivos, con una carga de <0.1 dentro del invitado.

Ahora, si hago un topen el host, cada proceso KVM está usando algo sobre el 30% de la CPU.

¿Es este un comportamiento normal? Esperaría que el host necesitara mucho menos CPU solo para alojar un invitado inactivo.

Si es normal, ¿cuál es la razón de esto?

Si no es normal, ¿cuál podría ser el problema?

michas
fuente
¿Qué distribuciones de Linux estás usando? Debian, Ubuntu, CentOS o algo más?
slm
El host está ejecutando un fedora actual, los invitados un SLES 11.2 anterior. Kernel es 3.6.10-4.fc18.x86_64 en el host y 3.0.13-0.27-default en el invitado.
michas

Respuestas:

6

Siendo cínico, podría decir que es "normal" para los invitados de Windows pero no para los invitados de Linux (al menos nunca vi que uno se comportara así).

Con Windows, depende mucho de las aplicaciones que se ejecutan (casi inactivo). Un XP simple o W2K (todavía no tengo experiencia con las versiones más nuevas en KVM) causa del 10% al 20% en el host (se muestra aproximadamente 0% dentro), pero el servidor MS SQL obtiene esto fácilmente por encima del 30%. Esto parece estar relacionado con el acceso al temporizador y / o ACPI de alguna manera. Pero incluso en una VM que no es ACPI, nunca tuve Windows por debajo del 10% en el host.

Edición 1 (integrando comentarios)

¿Cuál es la salida de cat /sys/devices/system/clocksource/clocksource0/current_clocksource(en el invitado)? Eso debería ser kvm-clock. Verifique la configuración de su núcleo (/proc/config.gz) para CONFIG_PARAVIRT_CLOCK y CONFIG_KVM_CLOCK.

Esta es una lista de las opciones de configuración del kernel relevantes para KVM .

Hauke ​​Laging
fuente
Solo hay invitados de Linux en mi caso. (pregunta actualizada)
michas
2
@michas Oh chico, arruinaste mi querido prejuicio ... ¿Son máquinas virtuales en modo texto o tienen X? ¿Cuál es la salida de cat /sys/devices/system/clocksource/clocksource0/current_clocksource?
Hauke ​​Laging
current_clocksource está acpi_pmen el invitado y tscen el host. No X, pero se está ejecutando un servidor de aplicaciones Java y un DB de Oracle en cada invitado.
michas
@michas Eso debería ser kvm-clocken su lugar (en el invitado). Nunca tuve que configurar eso explícitamente. Verifique la configuración de su kernel ( /proc/config.gz) para CONFIG_PARAVIRT_CLOCKy CONFIG_KVM_CLOCK.
Hauke ​​Laging
1
Ambos están configurados en y. Establecer current_clocksource para kvm-clockmejorar las cosas. Ahora cada proceso KVM es de alrededor del 20 por ciento. El sistema se migró a KVM desde una configuración anterior de virtualbox. Parece que todavía hay algunos ajustes de la configuración anterior ...
michas
0

Verificaría para asegurarme de que los invitados KVM estén aprovisionados para que puedan utilizar todos los recursos del host (CPU, RAM, etc.). Por lo general, los invitados KVM solo se asignan, por ejemplo, 1-2 CPU (núcleos) en un sistema que puede contener muchos más.

Esto significa que no está comparando exactamente lo mismo al mirar los recursos del host frente a los elementos internos de un invitado KVM dado.

Por ejemplo

El anfitrión tiene lo siguiente:

$ 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

Si bien uno de los invitados de KVM tiene esto:

$ 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
fuente
1
Similar aquí: 8 núcleos en el host y 4 núcleos en cada invitado. - Pero no veo cómo eso resulta en una carga sustancial de un invitado inactivo.
michas