Tag Cloud

BlogCumulus.net by Ryan Tomlinson and Roy Tanck requires Flash 9 and javascript

Recent Comments

Comment RSS
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010 Nodnarb.Net

Microsoft Hyper-V 2008 R2 IDE vs. SCSI Performance

by Brandon November 30, 2009 02:46 PM

Virtualization has been a hot topic in tech for several years now and shows no signs of going out of style any time soon. I think there are some really great uses for it, such as server and application consolidation, but, I also think there is a lot of hype and glamour surrounding the topic as well. Will virtualizing your servers really save you money and time? That all depends, in my opinion. Only you know what applications you have and how well those currently perform. The only way you'll know how virtual machines will help or hurt you is by testing.

The department I work for currently uses Microsoft Virtual Server 2005 R2 on top of Windows Server 2003 for the majority of our virtual machines. When Microsoft introduced Hyper-V with Windows Server 2008, we discussed upgrading, but ultimately held off on the new Microsoft virtualization solution. Hyper-V had many mixed reviews upon its debut, so we wanted to wait to see what later revisions could deliver. Also, at the time, Virtual Server 2005 met our needs just fine. Since VS2005 wasn't broken ... you get the idea.

Time has passed since then and Microsoft has recently released Windows Server 2008 R2 with an updated version of Hyper-V. There have been several improvements to Hyper-V since its initial release. Virtual Server 2005 has started to show its age, compared to all the other virtualization solutions now available, so now is a great time to do some testing of Hyper-V 2008 R2.

As users of Virtual Server 2005, my co-workers and I have known using SCSI virtual disks (with Virtual Machine Additions installed) has advantages over using IDE disks in VS2005. Switching from the IDE to a SCSI interface made noticeable virtual machine performance improvements. When Hyper-V was originally released, however, booting off SCSI disks wasn't supported. "How version 1.0!" we all thought. Removing features from new products isn't new for Microsoft, after all. Well, it's not supported in Server 2008 R2, either. I was disappointed, but this time the question "Does it really matter?" came to mind.

I decided to test this using one of our newer servers that has been freshly reloaded with Windows Server 2008 R2 Standard with Hyper-V from scratch. For the test, I'd create a new Windows 7 virtual machine with two extra drives attached. One drive would be connected to the virtual IDE controller. The other would be connected to a new virtual SCSI controller. Both drives would be set to the same physical size (30GB) and both would be created as fixed-size virtual disks.

The test platform specs are as follows.

Test Server:

  • HP ProLiant DL380 G5
  • Dual Intel Xeon E5450 quad core 3.00GHz CPUs
  • 14GB ECC memory
  • HP NC373i gigabit server adaptor (1x1GBPs connection)
  • Drive C is a HP Smart Array P400 controller (512 MB) with 2x HP 68GB 15k RPM SAS drives in RAID-1 (cache enabled)
  • Drive E is a HP Smart Array P800 controller (512 MB) connected to an external MSA50 drive array with 10x HP 68GB 15k RPM SAS drives in RAID-10 (cache enabled)
  • Windows Server 2008 R2 with Hyper-V installed on drive C
  • Virtual machine VHD files on drive E

Test Virtual Machine:

  • Windows 7 Enterprise RTM 32-bit
  • 2GB memory
  • Drive C (boot) is a 40GB fixed-size NTFS volume connected to IDE controller 0, port 0 on the virtual machine.
  • Drive E (IDETest) is a 30GB fixed-size NTFS volume connected to IDE controller 1, port 0 on the virtual machine.
  • Drive F (SCSITest) is a 30GB fixed-size NTFS volume connected to SCSI controller 0, ID 0 on the virtual machine.
  • UAC is turned off, no updates applied (fresh installation for testing)
  • No antivirus installed
  • Logged in as an administrator

Below are some screenshots of the virtual machine's disk configuration, along with the Hyper-V settings for the virtual machine.

Virtual machine settings Virtual machine disk configuration

Disclaimer time. I've worked in the IT field for many years now and am knowledgeable in many areas of IT infrastructure and application development. I am relatively new to Windows Server 2008 R2 with Hyper-V, however. I'm also not a professional reviewer and benchmarker. I do my best to test, record, and interpret the results, but you may come to different conclusions. If you do, let me know (but play nice)! I also encourage you to repeat similar test steps if you have the time and resources. I'm doing this for fun and learning and didn't receive compensation from any product vendors (or their competitors!).

First round of tests: ATTO Disk Benchmark

To begin, I decided to go with good 'ol fashioned disk benchmarking. I searched for disk benchmarking software on Google and found ATTO Disk Benchmark v2.45. It's available as a free download from ATTO Technology, Inc. I've seen this software used on various hardware review sites, also.

For each test, I set ATTO to use the following parameters:

  • Transfer Size: 0.5 to 8192.0 KB
  • Total Length: 2GB
  • Direct I/O checked
  • Overlapped I/O selected
  • Queue Depth 4

The tests were run three times in a row for each virtual drive. The IDE disk was tested first. The virtual machine was then rebooted before the SCSI disk was tested. Below are screenshots of each test. Look in the application title bar for the test iteration.

ATTO IDE test 1  ATTO IDE test 2 ATTO IDE test 3

ATTO SCSI test 1 ATTO SCSI test 2 ATTO SCSI test 3

Do these test results look strikingly similar to you, too? It seems the trend between SCSI and IDE disks are almost identical. To get a better visual representation of this that I could compare, I decided to plot the data in Excel. The graph below compares the average of the IDE read and write runs to the average of the SCSI read and write runs.

IDE vs SCSI Performance graph From the graph, it's easy to see how IDE and SCSI reads/writes are right on par with each other. Sure, there are some differences here and there, but I think the margin of error in this testing method makes this too close to call. There were variances in each run of ATTO, so, for now, it's looking like these virtual disks perform virtually (pun intended) equal.

One thing I wondered about is the behavior when the tests hit the 512KB mark. Until then, reads/writes scale nicely. For both SCSI and IDE, read and write performance basically "meet" at the 512KB mark and then diverge from there, with priority clearly given to reads for data transfer sizes greater than 512KB. Write performance after that tops out at about 200 MB/sec and holds steady, with read performance topping out at 500 MB/sec. I tried ATTO on the virtual host computer with the same settings and no virtual machines running and experienced similar results. I then ran ATTO on some other computers, such as my laptop and desktop, and did not experience that behavior. Reads and writes on those machines stayed near equal after a 4KB data set size.

I believe the cause of the performance differences, in this case, is the HP array controller's cache. Transfer rates in hundreds of megabytes per second is pretty high, after all. The test is still valid, in my opinion, because you'll want to have your controller's cache enabled when running virtual machines in a production environment. In fact, the only other instance where I was able to replicate this behavior with ATTO Disk Benchmark was on a Lenovo X61 tablet with an Intel 32GB solid-state disk (SSDSA2SH032G1GN). On this drive, there was a similar separation of read and write performance, this time at the 4KB mark.

Second round of tests: Microsoft's SQLIO utility

I wasn't completely satisfied with the ATTO benchmark after reviewing the results. For one, I wasn't sure if ATTO Disk Benchmark was necessarily the correct tool to test this scenario (SAS drives in RAID10, virtual environment, etcetera). Secondly, I wanted something that could differentiate between random and sequential testing, along with giving the virtual drives a longer workout. The ability to import test results directly into Excel would be a big help, too.

A co-worker recommended a utility from Microsoft called SQLIO. The name of this utility is deceptive, because it does not depend on Microsoft SQL Server nor does it seem to have anything else to really do with it. It should not be confused with another Microsoft utility with a similar name. After some Google searches about the app, I came across a really great tutorial with examples and video by Brent Ozar.

I used Brent's sample configuration batch file to run my tests. All I changed were the drive letters on the "-d" parameter. I followed the rest of his instructions and let the testing run over the weekend on the IDE and SCSI virtual disks. When I ran the USP_Import_SQLIO_TestPass stored procedure to populate the SQLIO_TestPass table from the imported data, I specified "Hyper-V IDE" or "Hyper-V SCSI" in the sixth parameter. I then imported the data into an Excel pivot table. The entire process was pretty easy to follow. Testing each disk took about six hours.

Below is a pivot chart of the test results. The "128" values on the horizontal axis represent 128 outstanding requests and the "2, 4, 8, 32, 64" values represent the number of threads. I only included the "128" outstanding requests values because having them all in the graph made it unreadable. The numbers in the graph area are the "Max MB/sec" column.

SQLIO Results Chart Overall, again, the performance for Hyper-V virtual SCSI and IDE disks are close to identical. The most important values are the Max MB/s and Max IOs/sec. For the random read and write tests, IOs/sec are nearly matching evenly for both IDE and SCSI across all tests. I would attribute this to the controller's cache. On sequential reads, however, the SCSI virtual disk has a slight edge over the IDE disk. Also, on sequential reads, the Max MB/sec of the SCSI disk is about 10MB/sec higher than the IDE disk for each run. Another interesting series of data to note is the Max Latency for sequential writes (shorter is better). As the thread counts increase, the IDE disk performed best by eight threads, but then climbed back up by 128 threads. The SCSI disk, however, started low and increased almost linearly.

Conclusion

Whew, that was a lot of testing ... at least for someone who doesn't do that type of work all the time. In the end, I don't think you'll see a huge difference between virtual IDE and virtual SCSI disk performance in Hyper-V 2008 R2. It's true that the SQLIO tests revealed some slight advantages to virtual SCSI disks, but I believe you'd only experience this under very controlled situations.

What other kind of tests could I have done? I'm sure there are plenty out there that I'm not aware of. I felt this was a good start, though, considering I couldn't find much out there regarding IDE vs. SCSI performance in Hyper-V. One additional test I thought of after I finished was placing a constant load on the virtual machine's CPU during the SQLIO tests. I've run out of time with this hardware, though, so maybe I'll get to save that for another day.

I hope you found this post helpful. If you have any questions, please leave a comment and I will answer as soon as I can. Thanks for reading!

Tags: , , ,

Computers

Comments

November 30, 2009 06:05 PM
NZRegs
nice post.  good to see that the IDE vs SCSI results are similar.

couple of things to keep in mind when choosing disk types in Hyper-V R2:
- boot disk *must* be IDE
- limit of 4 ide 'devices'
- only SCSI disks can used for hot-add storage (new feature with R2)
December 1, 2009 04:28 AM
pingback
Pingback from topsy.com

Twitter Trackbacks for
        
        Microsoft Hyper-V 2008 R2 IDE vs. SCSI Performance
        [nodnarb.net]
        on Topsy.com
December 7, 2009 10:27 AM
Brent Ozar
Glad you found the SQLIO tutorial useful!  If there's ever anything I can do for you, don't hesitate to let me know.  Keep up the great work!  Really in-depth piece here.
December 8, 2009 02:27 AM
Brandon
Thanks Brent! I've shown the tutorial to some co-workers and they agree it will be a really helpful tool to use when the need for performance troubleshooting and hardware tweaking comes up.
January 26, 2010 02:33 PM
PC Input/Output
For SCSI support, Hyper-V uses a SCSI controller that is not emulated.  Instead it uses the virtual machine bus which is much faster and requires less CPU overhead.
March 23, 2010 12:33 PM
pingback
Pingback from ivansan.wordpress.com

Virtualization Performance Resources « Ivan's Blog
United States Steve 
May 3, 2010 09:55 PM
Steve
Just a quick FYI, best practice is to use SCSI disks for all but the OS installation required IDE drive. While both SCSI and IDE both run on the exact same VM bus (giving identical speed), SCSI disks allow for hot-adding under R2, as well as sizes up to 2TB and quantities above 4 disks. Again, because speeds are identical, there is no reason to limit your flexibility by using IDE disks except for the required OS installation.
Israel gil 
August 24, 2010 08:48 AM
gil
Still confused as to which one to choose.. ide or scsi?

is that realy true:
"For SCSI support, Hyper-V uses a SCSI controller that is not emulated.  Instead it uses the virtual machine bus which is much faster and requires less CPU overhead. "

??

thanks
United States Steve 
August 24, 2010 11:32 AM
Steve
Choose IDE because you MUST for the OS installation. For each additional hard drive choose SCSI. And correct, the SCSI controller runs on the VM Bus making it the same speed as IDE (no penalty for emulation), but with the additional flexibilities noted above (hot add, increased sizes, more quantities, etc...)
Israel gil 
August 25, 2010 12:40 PM
gil
Finally a perfect and clear response

thank you steve
Israel gil 
August 25, 2010 12:41 PM
gil
sorry for the duplicated posting - for some reason there is a message that is coming up after posting which made me think that it didnt post
August 25, 2010 12:44 PM
brandon
No problem! It is an issue with the blog that I need to look into.

- B

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading