QEMU / KVM:无法将多个内核 / CPU 传递给来宾

Bin*_*rus 4 kvm cpu

似乎我无法将多个内核/CPU 传递给 KVM 来宾。无论我做什么,客人都只报告一个CPU /核心。

主机硬件:Supermicro 主板上的 Xeon E5620 主机软件:Ubuntu 11.04 (Natty) 64-Bit

我已经为 Natty 编译了我自己的(更新的)内核 2.6.37(因为如果我使用标准内核,我在 PCI 直通方面会遇到某些问题)。我没有改变发行版的其他部分;值得注意的是,我使用的是包含的原始 qemu-kvm 包。

由于 virt-manager 和相关工具在尝试第一个基本操作时失败并显示难以理解的错误消息,因此我手动启动虚拟机,而不是使用任何包装器/管理器。我正在使用这样的命令:

/usr/bin/qemu-system-x86_64 -M pc -cpu host -smp cores=2,threads=1,sockets=1 -drive file=/dev/sda6,if=virtio,cache=none,index=0 -drive file=/dev/sdb,if=virtio,cache=none,index=1 -cdrom /dev/cdrom -pidfile ./qemu-garak.pid -boot c -k de -m 4096 -smp 1 -device pci-assign,host=01:05.0 -daemonize -usb -usbdevice "tablet" -name garak -net nic,vlan=0,model=virtio,macaddr=02:01:01:01:01:01 -net tap,vlan=0,ifname=virtnet1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifup -vnc :1
Run Code Online (Sandbox Code Playgroud)

我也试过 -cpu host 和 -smp cores=1,threads=1,sockets=2 (等等)。

我正在运行几个 Windows 来宾(Server 2003 R2(32 位)、Server 2008 R2(64 位)、Windows XP Pro(32 位)、Windows 7 Pro(64 位))和 Linux 来宾(Ubuntu 11.10(64 位), Debian 挤压(32 位)),但所有这些都只报告一个处理器/核心,不管 -smp 设置如何;除此之外,设置工作可靠。

现在,我真的需要一个客人的额外 CPU 能力,所以我想知道我做错了什么。当然,我已经阅读了有关在 Windows 中更改 HAL 的内容并尝试了几种方法(单处理器 HAL 与多处理器 HAL),但没有成功。在花了一整天试图解决问题之后,我现在不知道我还能做什么。

有人知道出了什么问题吗?是否有一些内核编译选项(2.6.37)可能导致无法将多个内核传递给来宾?qemu-kvm 版本是否必须适合内核版本(如上所示启动来宾时没有警告消息)?

非常感谢,

比纳鲁斯

更新 #1:

正如预期的那样,一个 linux 来宾也不会显示多个 CPU/核心:

root@baldur:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 2400.400
cache size      : 4096 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm
bogomips        : 4800.80
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

root@baldur:~#
Run Code Online (Sandbox Code Playgroud)

此输出是在使用 -cpu host 和 -smp 2 启动的来宾上生成的。

Bin*_*rus 10

那么,让我感到羞耻:

在上面的命令行中间,已经有一个选项“-smp 1”。我不记得这个,我在测试中也没有看到它。删除它时,它按预期工作。