I recently decided that I needed more space to backup/archive data. So, I went out and bought a terabyte external drive ($240 at Costco). This drive is a WD MyBook Studio, which happens to come with USB, FireWire, and eSATA connections. I started to wonder how different those connections really are. The theoretical bandwidth of each is 60MB/s, 50MB/s, and 384MB/s, respectively.
First of all, I could have sworn my motherboard had a eSATA connector, but it doesn’t. So, that’s out.
I decided to do some benchmarking with Bonnie++. This seems to be the standard Linux disk benchmarker. I used the default configuration for all the tests, since I figure they knew what they were doing when they decided what the defaults were.
After seeing an FAQ about benchmarking RAID, I decided to also try tiobench. It tests multithreaded IO performance. I decided to look at 2 threads doing sequential reads and writes.
Then, I started to wonder how these stacked up against my internal drives. SATA is back, but internal, and with a different disk on the end. I have two internal drives, both 400 GB, 7200 RPM, 16MB cache. They are used along with the Linux software RAID stuff to create a RAID 1 (for even moderately important stuff) and a RAID 0 (a big bit bucket).
I also tried a straight-up non-RAID partition on an internal disk (and I had to temporarily degrade my RAID to do it—I hope you appreciate this). The last tests I did were on my laptop and its 60 GB, 5400 RPM disk.
Here’s what I came up with. In all cases, larger numbers are better.
Disk | Bonnie Block Read (MB/s) | Bonnie Block Write (MB/s) | Bonnie Seek (/s) | tiobench Read (MB/s) | tiobench Write (MB/s) |
---|---|---|---|---|---|
SATA non-RAID | 70 | 54 | 250 | 44 | 46 |
SATA RAID 1 | 53 | 45 | 366 | 54 | 37 |
SATA RAID 0 | 62 | 89 | 207 | 43 | 56 |
External USB | 32 | 29 | 172 | 29 | 28 |
External Firewire | 37 | 33 | 188 | 32 | 32 |
Laptop internal | 20 | 23 | 94 | 18 | 18 |
[Intel D975XBX motherboard, Intel Core 2 Duo 6600, 2GB RAM, Ubuntu Hardy, relatively idle system, ReiserFS 3.6 partitions. Laptop is a Pentium M 1.86 GHz, 512 MB RAM, Ubuntu Hardy, idle, EXT3 filesystem.]
So… what did we learn from that?
- I’m too lazy (and non-visual) to bother making useful graphs in situations like these.
- USB 2.0 and Firewire are close enough in speed that it’s not worth mentioning.
- Damn, I wish I had eSATA on my motherboard to see how that fared.
- If possible, keep your disks inside the computer where they belong. The external performance is pretty impressive, but much slower than internals.
- … unless your other option is a slow laptop drive, then the externals start to look pretty snappy. I didn’t try the external connected to the laptop, though. There might be a processor/bus bottleneck.
- The RAID arrays aren’t nearly as fast as I thought they’d be. This could be a result of the Linux software RAID slowing things down. I have never used hardware RAID controllers (either the ones on many motherboards or dedicated cards).
- Seriously… who’s stealing all my RAID performance? I want it back!
Edit [05/23]: I feel I should add: All benchmarks are crap. They are positively correlated with the thing you want and call “performance”, but are definitely not directly related.