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)?
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.