KVM/QEMU:硬件加速不起作用

KVM/QEMU:硬件加速不起作用

我尝试使用 KVM 和 QEMU 安装我的第一个虚拟机,但它似乎确实按预期使用了硬件加速。我得出这个结论首先是因为它非常慢,其次是因为

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

机器运行时,kvm_intel的值应该是1,对吗?

我的主机是运行 Arch Linux 的 Dell XPS 13(当然最近更新过)。客户系统也是 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

检查是否已加载(查看 kvm 顶部):

$lsmod | grep virtio
virtio        16384  0

再次,virtio 似乎未被使用。我的理解正确吗?

我还检查了 BIOS 中是否启用了虚拟化支持(戴尔今年 2 月提供的最新 A15 版本),并且一直都是这样。

该用户位于 kvm 组中(安装虚拟机时该组并不在该组中,这可能是问题所在吗?)

我找到的页面https://warpedtimes.wordpress.com/2010/01/06/hardware-accelerated-virtualization-with-qemu-and-kvm/ 鼓励我思考问题出在哪里,但提出的问题都不适用。我也没有收到 QEMU 的错误消息,也没有在 dmesg 中看到任何与 kvm 或 virtio 相关的内容。

网络运行良好,分辨率类似 VGA,但我尚未对此进行调查。所以这可能是配置问题。

磁盘文件是原始的,我使用 -m 1024 选项启动虚拟机。启动模式是旧式的(我无法弄清楚如何让 kvm 在 uefi 模式下启动)。

有人知道我的问题是什么吗?还有其他方法可以检查硬件加速是否真的有效吗?但它真的非常慢。启动和运行都一样。我的 Virtualbox 中的 Windows 运行速度要快得多。可能还有其他问题吗?

有人知道我的问题是什么吗?我发布了我认为可能有趣的所有信息。您需要更多信息吗?

提前致谢

答案1

我确实在网上搜索了很长时间才找到答案,但没有找到解决方案。正如经常发生的那样:一旦被问到,你很快就会得到解决方案:

启动机器时,我必须通过添加选项明确告诉 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(并在失败时抛出错误)。因此,如果有人知道为什么对我来说不是这种情况,我仍然会很感激。

相关内容