In my work I often use Microsoft VirtualPC on my laptop to demonstrate software for clients and to conduct training. Most anyone who's used a VPC to do a demonstration of server-based products--the kind that should be deployed on "real servers"--has at some point had the unpleasant experience of apologizing for poor performance during a pivotal moment in a demo.
I'm always looking for ways to speed up demos, and there are only a few general approaches I know of:
-
Lighten the "weight" of the VPC, so there's not so much bulk for the VPC OS to deal with and so the demo "fits" the constraints of the host's capabilities
-
Use a better VM technology (I'm currently converting my demos to Hyper-V--more on that in the future)
-
Separate the guest OS I/O from the host and use a fast external HDD
The faster disk option (#3) is one I employed some time ago when I had a spare 7200rpm disk to use as an external VHD store, but I never really "proved" that it worked better than the 5400 rpm disk it replaced. I also never "proved" that moving to external USB 2.0 disks had helped in the first place!
Recently I happened to have several USB 2.0 hard disks and some spare time available. (I upgrade way too often and I have too many computers).
I decided to do a somewhat scientific experiment to see if, in fact, the faster hard drive had actually helped, and if the performance of the external disks were similar to their internal alternatives. The two variables I was able to change based on available hardware:
-
Dive interface SATA/IDE
-
Disk rotation speed (5400rpm/7200rpm)
Other than these factors, all else is the same (same PC, same brand USB 2.0/HDD enclosure, same tests). In addition to comparing the performance with the different external disks, I benchmarked the internal disk. This was an interesting test because the internal and external 200GB drives are identical Seagate 200GB 2.5" drives--so the test should be an "apples to apples" comparison of throughput lost through USB 2.0.
The test environment:
-
Lenovo ThinkPad X61 2Ghz Core2Duo CPU, Windows 2008 Standard x64, 4GB RAM
-
Test #1 - Copy a single 8GB VHD file from the ThinkPad to the USB hard disk
-
Test #2 - SQLIO with large IO load (sequential I/O, 256KB read/write, 2 threads, 60 seconds, 100MB file size
Here are the test results:
| |
100GB IDE
USB 2.0 |
160GB SATA
USB 2.0 |
200GB SATA
USB 2.0 |
200GB SATA
Internal |
| Disk Mfg |
Fujitsu |
WD |
Seagate |
Seagate |
| RPM |
7200 |
5400 |
7200 |
7200 |
| 8GB Copy (MB/sec) |
21.3 |
20.9 |
21.3 |
N/A |
| Read |
|
|
|
|
| IO/sec |
111.6 |
114.3 |
115.1 |
225.1 |
| MB/sec |
27.9 |
28.6 |
28.8 |
56.2 |
| Avg Latency (ms) |
142 |
139 |
138 |
70.0 |
| Write |
|
|
|
|
| IO/sec |
83.1 |
83.3 |
83.3 |
214.2 |
| MB/sec |
20.8 |
20.8 |
20.8 |
53.6 |
| Avg Latency (ms) |
191.0 |
211.0 |
191.0 |
73.0 |
Well, it appears that switching from a 5400 RPM disk to 7200 RPM USB 2.0 disk had actually delivered no benefit. But I was a little suprised that the SATA interface also seemed to have no benefit over the older IDE technology...I had assumed that would have made a difference given the difference in transfer rates between the two.
So, when USB 2.0 is the external I/O path, it seems that one needn't be too picky about the drive itself. The USB interface is just too slow and inefficient to leverage the latest hard drive technologies.