Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I currently have an IIS application pool running on a physical server with 2 x quad core processors that has an average of 50% utilization across all cores. I need to make this application highly available and after researching our options I settled on creating a Hyper V cluster with this application in a virtual machine.

What I am worried about is that the VM only has 4 vCPUs and based on the characteristics I have previously seen with another Hyper V server it seems like 1 vCPU can only max out one core of the physical CPU. Even if the vCPU is at 100% it will not be able to utilize the processing power of the other physical cores. If this observation is correct then I would already be utilizing 100% of 4 cores based on my current utilization of 50% across 8 cores (not accounting for the overhead inherent in virtualization itself).

In researching this I have watched Brian Ehlert youtube video on Hypervisor CPU utilization and read his Hyper-v Concepts vCPU Tecknet wiki entry. Based on my understanding of what Brian is saying, since the w3wp.exe process that runs the application pool is spinning up and tearing down worker threads to handle individual users connections to our website then these discrete connections should provide the break point where the vCPU can move from one physical processor to the next rapidly enough to allow me to utilize the performance of all 8 cores of a physical system when the VM only has 4 vCPUs.

This still doesn't add up to me and goes against what I have seen. Since a single vCPU must complete it's current processing before it can be switched to another physical CPU that would mean that there is no way for a single vCPU to achieve a higher net utilization of the physical CPUs than 100% of one core. If the apps threads do not have breakpoints then this will be 100% of one physical core, if it the apps threads do have breakpoints that would allow the hypervisor to move the vCPU on to the next physical core than the utilization might be something like 25% of each of the physical cores in a quad core system with the resulting total still being limited to 100% of a single core.

Based on this reasoning it would seem that 1 vCPU will never be able to utilize a greater total % of the all the physical cores than 100% of a single core when the vCPUs utilization of physical cores is summed up across all cores.

Ultimately this would mean that I cannot achieve the performance level of an 8 core system from inside a VM even if the VM had 4 vCPUs and was running on a system with 16, 32, or even 64 physical cores.

Is there a way to achieve the performance I am looking for in a single VM?

share|improve this question

2 Answers 2

up vote 1 down vote accepted

Based on my understanding of what Brian is saying, since the w3wp.exe process that runs the application pool is spinning up and tearing down worker threads to handle individual users connections to our website then these discrete connections should provide the break point where the vCPU can move from one physical processor to the next rapidly enough to allow me to utilize the performance of all 8 cores of a physical system when the VM only has 4 vCPUs.

Back to reading some basics about how processory work. Point. There is NO WAY (!) to trickthe 4 virtual cores to use up 8 physical cores to 100%. There is no "breaking point" that is visible OUTSIDE THE VIRTUAL MACHINE.

You are basically limited to 4 virtual cores per VM. Now, you CAN cluster / NLB and use multiple virtual machines.

share|improve this answer
    
Thanks for your input, I don't want to go down the path of clustering or Network load balancing VMs due to the increased complexity and because the IIS application is Commerce Server 2007 which would require additional Commerce Server licensing for use in additional VMs. –  Chris Magnuson Oct 21 '10 at 1:11
    
Then you better stay physical and do not go virtual. –  TomTom Oct 21 '10 at 1:17

Realistically with the latest generation of CPUs, you can expect to see a 1 to 3% reduction in processing power (assuming something strange doesn't come into play) and if you assign 4 vCPUs your VM will respond like it has 4 of the physical cores (HTT cores only count for apps that stick to the ALU).

On a side note; that Technet Wiki entry is extremely confusing, and I think there is quite a bit of wrong information in there.

share|improve this answer
    
So your answer would be that there is no way way to achieve the performance of 8 physical cores in a VM regardless of how physical cores the hypervisor actually has? –  Chris Magnuson Oct 21 '10 at 1:08
    
Currently VMware's ESX (or ESXi) is the only way I know of to get 8 vCPUs in a VM (there may be others besides ESX I don't know of). Hyper-V is limited to 4 however, and vCPUs will never exceed 1:1 performance with physical CPUs. So no, you can't utilize all 8 with Hyper-V (though future versions are likely to support more). –  Chris S Oct 21 '10 at 2:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.