We have recently purchased a server which is running Hyper-V 2008 R2 bare metal. The server has two quad-core Intel Xeon processors with hyperthreading, so if I'm understanding correctly this gives us 16 cores. Within Hyper-V we have created a virtual machine running Windows Server 2008 R2 with 4 virtual processors. The processor settings screen is telling me that this represents 25% of the total system processing power. Does this mean that the remaining 75% can not be tapped into by the virtual OS? We will be running a few other virtual machines, but this one is for SQL Server and we'd like to throw as much horsepower at it as possible.
A vCPU can only be mapped to a single physical CPU. You can't take 4 physical CPUs and make a single vCPU that's 4x faster; it's just not how it works.
Hyper-V is limited to assigning 4 vCPUs to a VM (last I checked). If you need significant CPU power, go physical, there's no sense in adding virtualization overhead to something that CPU intensive and parallel in the first place.
Side note: SQL doesn't necessarily use all the cores you can throw at it in the first place. It really depends on what you're using it for and how parallelizable the load is.
Yep, What Chris said. If you need more then 4 CPU's in a Hyper-V virtual machine then either create two SQL servers in virtual and spread out your databases or go physical. Depending on your SQL server license you may be able to add more SQL servers in virtual (on the same physical host) without occurring more licensing costs, but read the SQL virtual licensing white paper for more info.
I would also agree that if you have SQL running out of CPU power with 4 virtual CPU's then you've either got some serious app utilization or the SQL commands are badly written.
About 4 CPU core limit:
In VM's config file section:
[processors] [count type=”integer”]16[/count]
Now you have 16 core CPU.
UPDATE: Seems screenshot needed