8

it seems that I am unable to pass multiple cores / CPUs to KVM guests. Whatever I do, the guests only report one CPU / core.

Host hardware: Xeon E5620 on a Supermicro mainboard Host software: Ubuntu 11.04 (Natty) 64-Bit

I have compiled my own (newer) kernel 2.6.37 for Natty (since I had certain problems with PCI passthrough if I used the standard kernel). I did not alter the other parts of the distribution; notably, I am using the original qemu-kvm package which was included.

Since virt-manager and the related tools were failing with unintelligible error messages when trying the very first basic action, I am starting the virtual machines by hand instead of using any wrappers / managers. I am using commands like this one:

/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

I also have tried -cpu host and -smp cores=1,threads=1,sockets=2 (amongst other things).

I am running several Windows guests (Server 2003 R2 (32 Bit), Server 2008 R2 (64 Bit), Windows XP Pro (32 Bit), Windows 7 Pro (64 Bit)) and Linux guests (Ubuntu 11.10 (64 Bit), Debian squeeze (32 Bit)), but all of these only report one processor / core, regardless of the -smp settings; besides that, the setup works reliably.

Now, I really need additional CPU power in one of the guests, so I am wondering what I am doing wrong. Of course, I have read about changing the HAL within Windows and tried several things (Uniprocessor HAL vs. Multiprocessor HAL), but with no success. After having put a whole day into trying to solve the problem, I now don't know what else I could do.

Does anybody have any idea what is going wrong? Is there some kernel compile option (2.6.37) which may be responsible for not being able to pass multiple cores to the guests? Does the qemu-kvm version have to fit to the kernel version (there are no warning messages when I start the guests like shown above)?

Update #1:

As expected, a linux guest as well doesn't show more than one CPU / core:

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:~#

This output has been produced on a guest with has been started with -cpu host and -smp 2.

2
  • You mentioned you got an error message when starting virt-manager - what error message ? Also can you pastebin cat /proc/cupinfo from an ubuntu guest. If you look at the qemu man page, -cpu specifies a model, -smp 2 would specify the number of cpu.
    – Panther
    Jan 30, 2012 at 5:17
  • @bodhi.zazen: Thanks for answering; I have updated the question.
    – Binarus
    Feb 2, 2012 at 9:05

1 Answer 1

14

Well then, shame on me:

In the middle of the command line above, there is already an option "-smp 1". I didn't remember this, and I haven't seen it during my tests. When removing it, it works like expected.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .