KVM / QEMU: Hardwarebeschleunigung funktioniert nicht

1671
Bloch

Ich habe versucht, meine erste virtuelle Maschine mit KVM und QEMU zu installieren. Die Hardware-Beschleunigung scheint jedoch beabsichtigt zu sein. Zu diesem Schluss bin ich erst gekommen, weil es furchtbar langsam ist und zweitens wegen der Ausgabe von

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

Wenn die Maschine läuft, sollte der Wert von kvm_intel 1 sein, richtig?

Mein Host-Computer ist ein Dell XPS 13, auf dem Arch Linux ausgeführt wird (natürlich vor kurzem aktualisiert). Das Gastsystem ist auch Arch. Beide 64-Bit.

Ich habe alles, was ich gefunden habe, auf https://wiki.archlinux.org/index.php/KVM überprüft und festgestellt, dass meine Hardware Virtualisierung unterstützt:

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

und dass die Kernel-Module enthalten und geladen sind:

$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 

Dasselbe gilt für 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 

Prüfen Sie, ob geladen ist (siehe oben für kvm):

$lsmod | grep virtio virtio 16384 0 

Wieder scheint Virtio nicht verwendet zu werden. Interpretiere ich das richtig?

Ich habe auch überprüft, dass die Virtualisierungsunterstützung im BIOS aktiviert ist (die letzte A15-Version, die Dell im Februar dieses Jahres zur Verfügung gestellt hat). Dies war die ganze Zeit.

Der Benutzer befindet sich in der Gruppe kvm (was bei der Installation der virtuellen Maschine nicht der Fall war. Könnte das das Problem sein?)

Die Seite, die ich gefunden habe, https://warpedtimes.wordpress.com/2010/01/06/hardware-accelerated-virtualization-with-qemu-and-kvm/ hat mich in dem Gedanken angeregt, dass etwas nicht stimmt, aber keines der vorgeschlagenen Probleme treffen zu. Ich erhalte auch keine Fehlermeldung von QEMU und sehe nichts in Verbindung mit kvm oder virtio in dmesg.

Das Netzwerk funktioniert einwandfrei, die Auflösung ist VGA-ähnlich, aber ich habe das noch nicht untersucht. Das könnte also eine Konfigurationssache sein.

Die Festplattendatei ist roh und ich starte die VM mit der Option -m 1024. Der Boot-Modus ist ein Erbe (ich konnte nicht herausfinden, wie man kvm im uefi-Modus bootet).

Hat jemand eine Idee was mein Problem ist? Gibt es eine andere Möglichkeit zu überprüfen, ob die Hardwarebeschleunigung tatsächlich funktioniert? Aber es ist wirklich sehr langsam. Starten und Laufen. Mein Windows in Virtualbox läuft viel schneller. Könnte es ein anderes Problem geben?

Hat jemand eine Idee was mein Problem ist? Ich habe alle Informationen gepostet, von denen ich dachte, sie könnten interessant sein. Benötigen Sie zusätzliche Informationen?

vielen Dank im Voraus

1
Ihre Frage ist sehr gut durchdacht. Ja, es gibt eine andere Möglichkeit, zu überprüfen, ob QEMU KVM verwendet. Geben Sie "info kvm" in einen QEMU-Monitor ein, um den Status direkt vom Emulator abzurufen. Beachten Sie außerdem, dass der Emulator die Verfügbarkeit der Hardwarevirtualisierung möglicherweise ignoriert, wenn Sie QEMU nicht mit dem Flag "-enable-kvm" übergeben. dsstorefile1 vor 6 Jahren 0
Ich bin erfreut zu hören, dass meine Frage gut aufgenommen wurde. Ah, das ist sehr hilfreich. Ich denke, ich werde mehr über den QEMU-Monitor untersuchen, da er aus einem bestimmten Grund da zu sein scheint;) Könnten Sie angeben, was Sie mit "der Emulator _might_ die Verfügbarkeit der Virtualisierung ignorieren" meinen? Bloch vor 6 Jahren 1
QEMU ist ein bisschen ein Rätsel. Es gibt wenig versteckte undokumentierte Funktionen, wie zum Beispiel die Ports 513 und 514, die bei einem "nmap" SYN-Scan der Hostdarstellung innerhalb der VM angezeigt werden. Um Ihre Frage zu beantworten, ist das einzige, was das Handbuch zu den Hardware-Virtualisierungsvorgaben sagt, dass "tcg" der Standardbeschleuniger ist. Meine Interpretation ist also, dass alle anderen Beschleuniger ignoriert werden, auch wenn sie vorhanden sind. dsstorefile1 vor 6 Jahren 0

1 Antwort auf die Frage

0
Bloch

Ich habe wirklich lange im Internet nach der Antwort gesucht, aber keine Lösung gefunden. Wie so oft: Einmal gefragt, haben Sie schnell die Lösung:

Beim Starten der Maschine musste ich QEMU explizit durch Verwendung der Option zur Verwendung von KVM anweisen

-machine type=pc,accel=kvm 

jetzt bekomme ich eine viel schnellere VM und

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

Virtio ist jedoch immer noch 0

Ich bin immer noch verwirrt, warum dies notwendig ist, weil alles, was ich bisher gelesen habe, impliziert oder ausdrücklich impliziert, dass qemu standardmäßig kvm verwendet (und einen Fehler ausgibt, wenn es fehlschlägt). Wenn also jemand weiß, warum dies für mich nicht der Fall ist, wäre ich trotzdem dankbar.

Virtuell verwendet QEMU auch nicht standardmäßig. dsstorefile1 vor 6 Jahren 0
danke für den Kommentar. Das habe ich auch herausgefunden. Dies überrascht jedoch nicht wirklich im Vergleich dazu, dass kvm nicht verwendet wird. Ich habe mehrere Tutorials als das gefunden, das in der ursprünglichen Frage verlinkt wurde, die diesen einfachen Befehl zum Öffnen der VM verwendet und behauptet, dass sie kvm verwendet Bloch vor 6 Jahren 1