KVM / QEMU: аппаратное ускорение не работает

1796
Bloch

Я пытался установить свою первую виртуальную машину с KVM и QEMU, но она, похоже, использует аппаратное ускорение, как и предполагалось. Я пришел к такому выводу, во-первых, потому что он очень медленный, а во-вторых, из-за выхода

$lsmod | grep kvm kvm_intel 180224 0 kvm 708698 1 kvm_intel irqbypass 13284 1 kvm 

когда машина работает, значение kvm_intel должно быть 1, правильно?

Мой хост-компьютер - Dell XPS 13 под управлением Arch Linux (недавно обновленный, конечно). Гостевой системой является также Arch. Оба 64 битные.

Я проверил все, что нашел на https://wiki.archlinux.org/index.php/KVM, и пришел к выводу, что мое оборудование поддерживает виртуализацию:

$'LC_ALL=C lscpu | grep Virtualization Virtualization: VT-x 

и что модули ядра включены и загружены:

$zgrep CONFIG_KVM /proc/config.gz CONFIG_KVM_GUEST=y  # CONFIG_KVM_DEBUG_FS is not set CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_KVM_VFIO=y CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y CONFIG_KVM_COMPAT=y CONFIG_KVM=m CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m CONFIG_KVM_AMD_SEV=y CONFIG_KVM_MMU_AUDIT=y 

То же самое для virtio

$zgrep VIRTIO /proc/config.gz CONFIG_BLK_MQ_VIRTIO=y CONFIG_VIRTIO_VSOCKETS=m CONFIG_VIRTIO_VSOCKETS_COMMON=m CONFIG_NET_9P_VIRTIO=m CONFIG_VIRTIO_BLK=m # CONFIG_VIRTIO_BLK_SCSI is not set CONFIG_SCSI_VIRTIO=m CONFIG_VIRTIO_NET=m CONFIG_CAIF_VIRTIO=m CONFIG_VIRTIO_CONSOLE=m CONFIG_HW_RANDOM_VIRTIO=m CONFIG_DRM_VIRTIO_GPU=m CONFIG_VIRTIO=m CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_BALLOON=m CONFIG_VIRTIO_INPUT=m CONFIG_VIRTIO_MMIO=m CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y CONFIG_RPMSG_VIRTIO=m CONFIG_CRYPTO_DEV_VIRTIO=m 

проверьте, загружен ли он (см. top для kvm):

$lsmod | grep virtio virtio 16384 0 

Опять же, virtio, кажется, не используется. Я правильно интерпретирую это?

Я также проверил, что в BIOS включена поддержка виртуализации (последняя версия A15 предоставлена ​​Dell в феврале этого года), что было все время.

Пользователь входит в группу kvm (чего не было при установке виртуальной машины, может ли это быть проблемой?)

Страница, которую я нашел https://warpedtimes.wordpress.com/2010/01/06/hardware-accelerated-virtualization-with-qemu-and-kvm/, воодушевила меня на мысль, что что-то не так, но ничего из предложенного проблемы применяются. Я также не получаю сообщение об ошибке от QEMU и не вижу ничего, связанного с kvm или virtio в dmesg.

Сеть работает нормально, разрешение похоже на VGA, но я еще не исследовал это. Так что это может быть предметом конфигурации.

Файл диска сырой, и я запускаю виртуальную машину с параметром -m 1024. Режим загрузки является устаревшим (я не мог понять, как заставить загрузку KVM в режиме UEFI).

У кого-нибудь есть идея в чем моя проблема? Есть ли другой способ проверить, действительно ли работает аппаратное ускорение? Но это действительно очень медленно. Запуск и бег. Моя Windows в Virtualbox работает намного быстрее. Может ли быть другая проблема?

У кого-нибудь есть идея в чем моя проблема? Я разместил всю информацию, которая, по моему мнению, может быть интересной. Вам нужна дополнительная информация?

Заранее большое спасибо

1
Ваш вопрос очень хорошо продуман. Да, есть другой способ проверить, использует ли QEMU KVM. Введите `info kvm` в монитор QEMU, чтобы получить статус прямо из эмулятора. Также обратите внимание, что если вы не передаете QEMU флаг `-enable-kvm`, эмулятор может игнорировать доступность аппаратной виртуализации. dsstorefile1 6 лет назад 0
Приятно слышать, что то, как я изложил свой вопрос, хорошо воспринято. Ах, это очень полезно. Я думаю, что исследуем больше о мониторе QEMU, поскольку он, кажется, существует по какой-то причине;) Не могли бы вы указать, что вы подразумеваете под "эмулятором _might_ игнорировать доступность виртуализации"? Bloch 6 лет назад 1
QEMU немного загадка. Повсюду есть немного скрытых недокументированных функций, таких как порты 513 и 514, которые обнаруживаются при SYN-сканировании `nmap` представления хоста внутри ВМ. В любом случае, чтобы ответить на ваш вопрос, единственное, что говорится в руководстве о настройках аппаратной виртуализации по умолчанию, это то, что `tcg` является ускорителем по умолчанию, поэтому моя интерпретация заключается в том, что все остальные ускорители игнорируются, даже если они присутствуют. dsstorefile1 6 лет назад 0

1 ответ на вопрос

0
Bloch

Я действительно долго искал ответ в Интернете, но не нашел решения. Как это часто бывает: однажды спросив, вы быстро найдете решение:

При запуске машины мне пришлось явно указать QEMU использовать KVM, добавив опцию

-machine type=pc,accel=kvm 

теперь я получаю гораздо более быструю виртуальную машину и

$lsmod | grep kvm  kvm_intel 180224 3 kvm 708608 1 kvm_intel irqbypass 16384 1 kvm 

Однако virtio по-прежнему 0

Я все еще не понимаю, почему это необходимо, потому что все, что я до сих пор читал, подразумевает или явно говорит о том, что qemu пытается использовать kvm по умолчанию (и выдает ошибку при сбое). Так что, если кто-нибудь знает, почему это не так для меня, я все равно буду благодарен.

QEMU также не использует virtio по умолчанию. dsstorefile1 6 лет назад 0
Спасибо за комментарий. Я тоже это понял. Тем не менее, это не удивительно по сравнению с тем, что он не использует KVM. Я нашел несколько учебных пособий, связанных с первоначальным вопросом, который использует эту простую команду, чтобы открыть виртуальную машину и утверждать, что она использует kvm. Bloch 6 лет назад 1

Похожие вопросы