Использование процессора KVM

9

У меня есть хост Linux с 4 гостями Linux KVM. Все гости в основном бездействуют, имея нагрузку <0,1 внутри гостя.

Теперь, если я делаю topна хосте, каждый процесс KVM использует что-то около 30% процессора.

Это нормальное поведение? Я ожидаю, что хост будет нуждаться в гораздо меньшем количестве ресурсов процессора только для того, чтобы разместить гостевого гостя.

Если это нормально, в чем причина?

Если это не нормально, в чем может быть проблема?

Михась
источник
Какие дистрибутивы Linux вы используете? Debian, Ubuntu, CentOS или что-то еще?
SLM
Хост управляет текущей федорой, гостями которой является старый SLES 11.2. Ядром является 3.6.10-4.fc18.x86_64 на хосте и 3.0.13-0.27 по умолчанию на гостевой.
Михас

Ответы:

6

Будучи циничным, я могу сказать, что это «нормально» для гостей Windows, но не для гостей Linux (по крайней мере, я никогда не видел, чтобы кто-то так себя вел).

В Windows это во многом зависит от запущенных приложений (почти незанятых). Обычная XP или W2K (у меня пока нет опыта работы с более новыми версиями в KVM) вызывает от 10% до 20% на хосте (показывается около 0% внутри), но MS SQL-сервер получает это легко выше 30%. Похоже, это как-то связано с доступом к таймеру и / или ACPI. Но даже в не-ACPI VM у меня никогда не было Windows ниже 10% на хосте.

Редактировать 1 (объединяя комментарии)

Какой вывод cat /sys/devices/system/clocksource/clocksource0/current_clocksource(у гостя)? Это должно быть KVM-часы. Проверьте конфигурацию вашего ядра (/proc/config.gz) на наличие CONFIG_PARAVIRT_CLOCK и CONFIG_KVM_CLOCK.

Это список параметров конфигурации ядра, относящихся к KVM .

Хауке Лагинг
источник
В моем случае только гости Linux. (вопрос обновлен)
Михас
2
@ Michas О, парень, ты разрушил мои любимые предубеждения ... Это виртуальные машины в текстовом режиме или у них есть X? Какой выход cat /sys/devices/system/clocksource/clocksource0/current_clocksource?
Хауке Лагинг
current_clocksource находится acpi_pmв гостевой и tscна хосте. Нет X, но сервер приложений java и оракул DB работает в каждом госте.
Михас
@michas Это должно быть kvm-clockвместо (в гостевой). Мне никогда не приходилось настраивать это явно. Проверьте настройки ядра ( /proc/config.gz) для CONFIG_PARAVIRT_CLOCKи CONFIG_KVM_CLOCK.
Хауке Лагинг
1
Оба настроены на y. Установка current_clocksource kvm-clockделает вещи лучше. Теперь каждый KVM-процесс составляет около 20 процентов. Система была перенесена в KVM из предыдущей настройки виртуального ящика. Похоже, что некоторые настройки все еще из старой настройки ...
Michas
0

Я хотел бы убедиться, что гости KVM подготовлены так, чтобы они могли использовать все ресурсы хоста (ЦП, ОЗУ и т. Д.). Обычно гости KVM распределяются, скажем, по 1-2 ЦП (ядра) в системе, которая может содержать гораздо больше.

Это будет означать, что вы не сравниваете одно и то же, когда смотрите на ресурсы хоста и внутренние ресурсы данного гостя KVM.

Например

Хост имеет следующее:

$ 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

В то время как один из гостей KVM имеет это:

$ 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
источник
1
Аналогично здесь: 8 ядер на хосте и 4 ядра на каждого гостя. - Но я не вижу, как это приводит к значительной нагрузке на холостого гостя.
Михас