I was in a chat room of a presentation put on by IBM and Microsoft last week and one question was about SQL Server running inside Hyper-V. There was no great answer that I found, so I decided to run some tests.
My conern isn't CPU or RAM, those are going to have some slight overhead for virtualization, however disk and network are the two bigger concerns. Generally network isn't going to be too bad for a lightly loaded sql server, however DISK i/o is going to be critical most of the time for SQL Servers.
What I found was not the answer I wanted.
SQLIO, a benchmark program for doing performance tests on your i/o subsystem was "tricked" by Hyper-V virtual disks - Even though the disks were told not to cache the Hyper Visor seemed to cache the data.
My results were clearly wrong, I ran 3 tests, all were on machines with SOME loads on them (to simulate a real virtual machine instead of purely a test lab machine that had no load - i.e. what a customer on this particular Hyper-V server at BitShop would achieve TODAY):
All tests are 8kb random IO, 8 outstanding IO requests on a 4gb file on RAID6 DAS. Tests were run 6 minutes, results were fairly consistent numbers like:
| Server |
MBs/Sec |
IOs/Sec |
| Win 2008, No Hyper-V (older machine) |
6.32 |
809.92 |
Win 2008 Hyper-V - Parent Partition
(8 core, 32gb ram) |
8.10 |
1037.63 |
| Win 2008 Hyper-V - Child Partition |
306.41 |
39,220.94 |
As you can see, the performance numbers were useless due to the caching in the parent partition I assume.