Virtual Machines and External Hard Drive throughput
In a recent discussion I was involved in about performance of Virtual Machines, a number of interesting things came up.
There's a number of generally recommended tips if you're running a VM, either in VMWare or VirtualPC, the most important one being: run it on a hard drive spindle that is different than your system disk.
Many folks recommend USB 2.0 external drives, while others swear by Firewire (either 400 or 800). One individual in the discussion said that since USB 2.0's theoretical transfer rate is 480Mbs and that most devices can theoretically use only 2/3 of the bus' bandwidth that the maximum throughput was likely 320Mbs. This may or not be true, but the root of his argument was that a 7200 RPM Hard Drive could (very likely in his opinion) saturate USB, so wouldn't Firewire 800 be a better choice?
Richard Campbell posted an excellent follow up with better math that sets, IMHO, the record fairly straight and I'm included parts of it here with permission:
The issue here is specification maximums versus actual performance data.
USB and Firewire are measured in MegaBITS per second, so 480mbps translates to 60MB/sec (presuming you believe there's only eight bits to a byte in this scenario, and that's more complicated than you might think). Also, recall that these are bus-based technologies, designed to be shared, so really that speed is not designed to be filled from a single device.
ATA/133, SATA/150 and SCSI/320 are all in MB/sec, so obviously all these internal protocols are faster than their external brethren.
Meantime, you have the issue of hard drives - the performance of which varies depending on what you're doing with it, and where you're doing it.
Take a look at Maxtor's DiamondMax 10. Top of the line 7,200 rpm drive with a maximum transfer rate 65MB/sec. And that's maximum - grabbing data from the outer rim of the drive where things are fastest. At the inner edge of the drive its down to 35MB/sec. Either way, you're not going to saturate any of the internal interfaces with this drive, and even USB2 can keep up for the most part.
Drop down to 2.5" drives like Hitachi's lovely little Travelstar 7,200 rpm drive and you're looking at transfer rates with a high of 54MB/sec and low of 27MB/sec. You're still not going to bury USB2.
And I would like to point out that these are optimal transfer rate tests here - huge files written across the disk so the drive can grab them as fast as possible. Your real-world mileage will vary: lower.
Spindle speed definitely makes a difference - its very tough to get transfer rates over 40MB/sec with a 5,400 rpm drive, and virtually any 7,200 rpm drive can offer that on the fast side, anyway. When you get to 10,000 rpm drives, you start seeing maximum transfer rates like 70MB/sec. Some 15,000 rpm drives can do as much as 90MB/sec peak! In exchange, of course, you get noise, heat and explosive potential. Not to mention outrageous prices.
USB1 definitely wasn't fast enough for modern drives, but USB2 is, at least for the foreseeable future.
If you skipped Richard's comments and hopped down here, the nutshell is that a 7200 RPM Hard Drive is, given it's maximum throughput, if it's reading the data from the outside or inside edge of the disk, the file size and access pattern, not very likely to saturate USB2. The conclusion is that either USB 2.0 or Firewire are both very reasonable solution for the power user's external HD needs when running Virtual Machines.