KVM - Multiple vcpu not pinning to physical cpu
I'm using KVM on a 32-core Xeon machine but I'm having an issue where the virtual cpus don't pin to the physical ones. I'm not sure if I'm making a fundamental mistake but the setup of the kvm seems to be very straight-forward using virt-manager.
I have successfully created a VM with 4 cpu's. These cpus appear in the VM in /proc/cpuinfo. using virsh vcpuinfo I can also see that these cpus exist. However they all appear to be pinned to the same physical cpu. If I try to change this using "virsh vcpupin machine 0 3" for example, all vcpus get pinned to 3. This is also observed if the vm is jumping between physical cpus. All of them change to the same cpu. I have also tried this with taskset.
From my understanding, if I create a vm with multiple cpus, each cpu creates a separate thread which in turn can be bound to a physical cpu. This isn't the case for me. I get one constant thread and another that appears and disappears. I have also ran cpu heavy applications on the vm. This shows processes taking 99% cpu on each of the 4 cpus. However using top in the host I only observe one cpu using 99%. At this point I get a soft lock on cpu within the VM.
From what I can see the issue is that all vcpus are pinned to a single cpu. Has anyone experienced this before? Is there any setting that I'm missing that allows use of multiple cores with kvm?
Thanks for your help! Let me know if you need anymore info!
---------- Post added at 02:44 PM ---------- Previous post was at 02:33 PM ----------
I also forgot to mention that I'm running Fedora 16 as host and VM.