Uso de CPU do KVM

8

Eu tenho um host Linux com 4 convidados Linux KVM. Todos os convidados estão praticamente inativos, com uma carga de <0,1 dentro do hóspede.

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

Esse comportamento é normal? Eu esperaria que o host precisasse de muito menos CPU apenas para hospedar um hóspede ocioso.

Se é normal, qual o motivo disso?

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

michas
fonte
Quais distros do Linux você está usando? Debian, Ubuntu, CentOS ou algo mais?
slm
O host está executando um fedora atual; os convidados, um SLES 11.2 mais antigo. O kernel é 3.6.10-4.fc18.x86_64 no host e 3.0.13-0.27-padrão no convidado.
Michas

Respostas:

5

Sendo cínico, eu poderia dizer que isso é "normal" para convidados do Windows, mas não para convidados do Linux (pelo menos eu nunca vi alguém se comportar assim).

No Windows, depende muito dos aplicativos em execução (quase ociosos). Um XP ou W2K simples (ainda não tenho experiência com versões mais recentes no KVM) causa de 10% a 20% no host (sendo mostrado cerca de 0% no interior), mas o MS SQL Server fica facilmente acima de 30%. Isso parece estar relacionado ao acesso ao timer e / ou ACPI de alguma forma. Mas, mesmo em uma VM que não seja da 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 convidado)? Isso deve ser kvm-clock. Verifique a configuração do seu kernel (/proc/config.gz) para CONFIG_PARAVIRT_CLOCK e CONFIG_KVM_CLOCK.

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

Hauke ​​Laging
fonte
Existem apenas convidados linux no meu caso. (questão atualizada)
michas
2
@michas Oh garoto, você arruinou meu preconceito amado ... São VMs em modo texto ou elas têm X? Qual é a saída de cat /sys/devices/system/clocksource/clocksource0/current_clocksource?
Hauke ​​Laging
current_clocksource está acpi_pmno convidado e tscno host. Nenhum X, exceto um servidor de aplicativos java e um banco de dados Oracle está sendo executado em cada convidado.
michas
@michas Isso deve ser o kvm-clocklugar (no convidado). Eu nunca tive que configurar isso explicitamente. Verifique o seu kernel config ( /proc/config.gz) para CONFIG_PARAVIRT_CLOCKe CONFIG_KVM_CLOCK.
Hauke ​​Laging
1
Ambos estão definidos como y. Definir current_clocksource para kvm-clockmelhorar as coisas. Agora, cada processo KVM é de cerca de 20%. O sistema foi migrado para o KVM a partir de uma configuração anterior da caixa virtual. Parece que alguma configuração ainda estão a partir da configuração de idade ...
Michas
0

Eu verificaria para garantir que os convidados do KVM sejam provisionados para que possam usar todos os recursos do host (CPU, RAM, etc.). Normalmente, os convidados da KVM são alocados, por exemplo, de 1 a 2 CPUs (núcleos) em um sistema que pode conter muito mais.

Isso significa que você não está comparando exatamente a mesma coisa ao analisar os recursos do host versus os internos de um determinado convidado 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 da KVM tem isso:

$ 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
fonte
1
Semelhante aqui: 8 núcleos no host e 4 núcleos em cada convidado. - Mas não vejo como isso resulta em uma carga substancial de um hóspede ocioso.
michas