One of the things I was looking forward to for quite a long time was USB 3.0 peripherals, especially flash memory sticks: I read and write USB sticks so frequently as part of trying out new Linux distributions that I really get tired of waiting on those things.
However, now that USB 3.0 devices have become pretty common (and the price has come down on them somewhat), and I own two netbooks with USB 3.0 ports, I slowly began to realize that the difference in speed that I am seeing in my everyday use is not that much. So I decided to investigate this a bit further, and do some simple testing to determine how USB 2.0 and 3.0 compares in my actual use.
To perform these tests, I have used my Acer Aspire One 725 and my HP Pavilion dm1-4310ez. Both of these netbooks have one USB 3.0 port and two USB 2.0 ports, so I could try reading and writing both 2.0 and 3.0 on the same systems.
I was running openSuSE 12.3 with the latest updates and patches applied on both systems. I used four different USB 3.0 flash memory sticks; a Philips 8GB USB 3.0 flash drive, a disk2go 8GB USB 3.0 flash drive, a Verbatim 16GB USB 3.0 flash drive, and a SanDisk Extreme 16GB USB 3.0 flash drive. The SanDisk was the only one which actually advertised its read/write speeds on the commercial packaging, the other three drives only said "USB 3.0 SuperSpeed" or something similar.
In running these tests I found that I had to be very careful to ensure that the computer was not reading/writing to/from cache rather than to/from the USB device itself. This became obvious when I was timing a read from the USB drive which took something like 50 seconds the first time I did it, and about 10 seconds the second time. Duh. What I ended up doing was ejecting the flash drive after each read or write test, thus forcing Linux to discard whatever cached data it might have for the device.
I wanted to use a large enough data file to ensure that I got reasonable and consistent timing results. I had a copy of the latest Slackware ISO image that I had recently downloaded, and it is something like 2.4GB in size, so I decided to use that. All I did was copy the file between the netbook hard drive and whatever flash drive I was testing.
The final detail of the preparations - how to determine how the computer sees the flash drive. The Linux lsusb -v command gives complete details about all USB ports and any currently plugged devices.
First find the specific device being tested - each section starts with a header describing the device, but you still have to read carefully because the name listed here (and thus the company who made the guts of the device) is often not the same as the name on the case of the device.
Buried in the details about each of device is the value "bcdUSB", which can be 2.00, 2.10 or 3.00 (or 1.00 if you happen to have some very old sticks). The 2.00 and 3.00 values are obvious, and as far as I can tell the 2.10 value is what it reports when a USB 3.0 device is plugged into a USB 2.0 port. If someone knows more details about that, feel free to add a comment.
The first step was to copy the file from my Swiss Army Flash Drive to the laptop disk. This flash drive is USB 2.0, so that will also give me a sort of a baseline reference to compare to the USB 3.0 devices. I copied it twice, ejecting the drive in between copies, and it took 1:48 the first time and 1:46 the second time.
I then ejected that drive and set it aside, and tested each of the USB 3.0 drives using the same procedure. First, plug the drive into a USB 3.0 port and confirm (with lsusb -v) that has been recognized as a USB 3.0 device. Then copy the 2.4GB file from the hard drive to the flash drive.
Then delete the file from the flash drive, and unmount, unplug, replug and remount the device. Then copy the file to it again. The delete the file, unplug the flash drive, and plug it back in but this time on one of the USB 2.0 ports. Check that it is recognized as a USB 2.10 device, then repeat the previous copy/delete/eject/plug/copy procedure to get USB 2.0 write times.
Ok, so much for the methods. Hold onto your hat, here are the results that I got when testing on the Acer Aspire One 725:
|AO725 ||USB 3.0 Read ||USB 3.0 Write ||USB 2.0 Read ||USB 2.0 Write|
|Philips ||0:55 / 0:54 ||11:28 / 11:19 ||1:20 / 1:20 ||11:30 / 11:45|
|disk2go ||0:50 / 0:50 ||4:55 / 4:49 ||1:20 / 1:20 ||5:07 / 4:53|
|Verbatim ||0:47 / 0:47 ||3:27 / 3:30 ||1:30 / 1:28 ||4:14 / 4:08|
|SanDisk ||0:30 / 0:29 ||0:46 / 0:44 ||1:17 / 1:23 ||1:22 / 1:21|
Ok, that's pretty interesting. It certainly shows that there can be a lot of variation between different USB 3.0 flash drives. Then I repeated the entire procedure, this time using my HP Pavilion dm1-4310ez netbook. The results were:
|dm1-4310 ||USB 3.0 Read ||USB 3.0 Write ||USB 2.0 Read ||USB 2.0 Write|
|Philips ||0:54 / 0:53 ||11:56 / 11:47 ||1:19 / 1:17 ||11:26 / 11:58|
|disk2go ||0:47 / 0:48 ||5:58 / 6:10 ||1:17 / 1:19 ||7:21 / 7:14|
|verbatim ||0:46 / 0:47 ||3:39 / 3:55 ||1:28 / 1:28 ||5:03 / 5:02|
|SanDisk ||0:18 / 0:16 ||0:44 / 0:44 ||1:16 / 1:17 ||1:22 / 1:19|
I have to admit that some of this surprised me. I expected that there would be a difference between the various USB 3.0 sticks from different manufacturers, but I didn't expect the difference to be this large.
As a final test, because of the way that I frequently use USB sticks (to boot Live images of various Linux distributions), I decided to time how long that took as well. I didn't bother with trying each of the four sticks listed above, since I think the comparative results are pretty clear.
I used only the fastest one (the SanDisk), and then I tried it in USB 3.0 and 2.0 ports. I was a bit surprised by the results - on my HP dm1-4310, it took about 45 seconds to boot Fedora 20 (Gnome) with the stick in the USB 3.0 port, and almost exactly the same with it in the USB 2.0 port.
I tried this twice to be sure, and it was consistent. I'm not entirely sure what this means, but I suspect that it is related to the fact that when you first boot, the firmware loads some minimal drivers to support common peripherals and the USB driver that it uses only does 2.0, not 3.0 so there is no difference in booting from the different ports.
Oh, and also for comparison to "normal" boot, this is the system which has an SSD hard drive installed, and in normal use it boots Fedora 20 in less than 15 seconds.
The moral of the story is that you really should pay attention to what you are buying when you look for a USB 3.0 stick. It is not a simple case of "you get what you pay for", because all USB 3.0 sticks are not equal in performance, and some USB 3.0 sticks are not any better than 2.0 sticks. If price is your primary selection criteria, then don't be surprised if you get a 3.0 stick that is not much better than a good USB 2.0 stick - and in fact, if price is really your only criteria, you can almost certainly get a better price/performance ratio in a USB 2.0 stick. But if you are willing to spend a bit more to get better performance, then you really need to look closer before you buy.