Herman
Well-known member
This is a bit of a far cry from vb.net, but I have asked the question elsewhere and still cannot seem to find a definite answer... So take this more like a "have you seen this before" thing.
I have at work four ESXi virtualization server holding each 8 virtual machines with various OS flavors for automated testing of the application we develop. I have taken over the management about 4 months ago, and originally this was put together gradually by different teams that have since gone. So recently i made space in my schedule to refresh the pool a bit, as all virtual machines were using old bases, not all the VM's were reliable, etc.. So I built base images of the various environments, updated them, tweaked them for performance, and cloned them all over the place.
My question is in regards to Windows 7 in particular. I usually design VM's to use a single vcpu, as this is the preferred approach recommended by VMWare. Our servers are i7 860s @ 2.8GHz, one CPU, quad core, 8 threads with hyperthreading, has two 500GB 10K RPM SAS drives, and 16GB of RAM. Take a look at these two pictures:
First, what the CPU utilization of the server SHOULD be under normal load. 8 virtual CPUs used at 50%, CPU hovering between 95% to 100% most of the time, RAM doing fine with 1GB to spare for the hypervisor. Note that this is also what a Windows 7 virtual server looks like when each VM has access to two virtual CPUs. This one has Windows XP all over, each with a single vcpu, difference being instead of 8 threads at 50% duty cycle, it's 16 threads at 25% duty cycle with Win7.
http://s7.postimage.org/wh99ye3y3/good.png
Now this is what the same graph looks like under the exact same load, on the exact same machine, but with only one vcpu allocated per VM. This in theory should maximize throughput by limiting thread switching, however it seems Windows 7 is incapable of running smoothly on a single thread:
http://s18.postimage.org/gchmlub7t/bad.png
Does anyone have a rational explanation as to what is going on here? With a single virtual CPU each eight concurrent VM's seem incapable to use 50% of the processor reliably...
Again I know this is off topic but I know there are many professionals that visit this forum that might have run into the same kind of "issue". Note also that this isn't really a problem per se, I'm fine with assigning each VM 2 vcpu's if that makes the OS happy, I am just wondering what is the rational explanation behind this.. Is Windows so much optimized for dual cores (even with the uniprocessor HAL loaded) that it won't ever properly run on a single core?
Thanks!
I have at work four ESXi virtualization server holding each 8 virtual machines with various OS flavors for automated testing of the application we develop. I have taken over the management about 4 months ago, and originally this was put together gradually by different teams that have since gone. So recently i made space in my schedule to refresh the pool a bit, as all virtual machines were using old bases, not all the VM's were reliable, etc.. So I built base images of the various environments, updated them, tweaked them for performance, and cloned them all over the place.
My question is in regards to Windows 7 in particular. I usually design VM's to use a single vcpu, as this is the preferred approach recommended by VMWare. Our servers are i7 860s @ 2.8GHz, one CPU, quad core, 8 threads with hyperthreading, has two 500GB 10K RPM SAS drives, and 16GB of RAM. Take a look at these two pictures:
First, what the CPU utilization of the server SHOULD be under normal load. 8 virtual CPUs used at 50%, CPU hovering between 95% to 100% most of the time, RAM doing fine with 1GB to spare for the hypervisor. Note that this is also what a Windows 7 virtual server looks like when each VM has access to two virtual CPUs. This one has Windows XP all over, each with a single vcpu, difference being instead of 8 threads at 50% duty cycle, it's 16 threads at 25% duty cycle with Win7.
http://s7.postimage.org/wh99ye3y3/good.png
Now this is what the same graph looks like under the exact same load, on the exact same machine, but with only one vcpu allocated per VM. This in theory should maximize throughput by limiting thread switching, however it seems Windows 7 is incapable of running smoothly on a single thread:
http://s18.postimage.org/gchmlub7t/bad.png
Does anyone have a rational explanation as to what is going on here? With a single virtual CPU each eight concurrent VM's seem incapable to use 50% of the processor reliably...
Again I know this is off topic but I know there are many professionals that visit this forum that might have run into the same kind of "issue". Note also that this isn't really a problem per se, I'm fine with assigning each VM 2 vcpu's if that makes the OS happy, I am just wondering what is the rational explanation behind this.. Is Windows so much optimized for dual cores (even with the uniprocessor HAL loaded) that it won't ever properly run on a single core?
Thanks!
Last edited: