Uso da CPU do KVM

7

Eu tenho um host linux com 4 convidados linux KVM. Todos os hóspedes estão praticamente ociosos, com uma carga de < 0.1 dentro do hóspede.

Agora, se eu fizer um top no host, cada processo do KVM está usando algo em torno de 30% da CPU.

Este é um comportamento normal? Eu esperaria que o host precisaria de muito menos CPU apenas para hospedar um convidado inativo.

Se é normal, qual é a razão disso?

Se não é normal, qual pode ser o problema?

    
por michas 12.05.2013 / 19:10

2 respostas

5

Por ser cínico, posso dizer que é "normal" para os convidados do Windows, mas não para os convidados do Linux (pelo menos eu nunca vi um deles se comportando assim).

Com o Windows, isso depende muito dos aplicativos em execução (quase ociosos). Um XP simples ou W2K (ainda não tenho experiência com versões mais novas do KVM) causa 10% a 20% no host (sendo mostrado cerca de 0%), mas o MS SQL Server obtém facilmente acima de 30%. Isso parece estar relacionado ao acesso temporizador e / ou ACPI de alguma forma. Mas, mesmo em uma VM não-ACPI, nunca obtive o Windows abaixo de 10% no host.

Editar 1 (integrando comentários)

Qual é a saída de cat /sys/devices/system/clocksource/clocksource0/current_clocksource (no guest)? Isso deve ser kvm-clock. Verifique sua configuração do kernel (/proc/config.gz) para CONFIG_PARAVIRT_CLOCK e CONFIG_KVM_CLOCK.

Esta é uma lista das opções de configuração do kernel relevantes para o KVM .

    
por 12.05.2013 / 19:26
0

Eu verificaria se os convidados do KVM estão provisionados para que eles possam usar todos os recursos do host (CPU, RAM, etc.). Normalmente, os convidados do KVM só recebem 1 ou 2 CPUs (núcleos) em um sistema que pode conter muito mais.

Isso significaria que você não está comparando exatamente a mesma coisa ao analisar os recursos do host em relação aos internos de um determinado convidado do KVM.

Por exemplo

O host tem o seguinte:

$ 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

Enquanto um dos convidados do KVM tem isto:

$ 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
    
por 12.05.2013 / 20:18