For years, I've been maintaining benchmarks for microSD cards on the Raspberry Pi, but I only spent a little time testing external USB storage, due to historic limitations with the Pi's USB 2.0 bus.
But the Pi 4 cleared away the limitations with a full-speed USB 3.0 bus offering much better performance, so I've done a lot of testing with USB boot, and with all the USB SSDs I had at my disposal. You can see some of those results in this blog post and video on booting a Pi 4 via USB.
After posting my tests concerning UASP support in USB SATA adapters, I got an email from Rob Logan mentioning the performance of some other types of drives he had with him. And he even offered to ship a few drives to me for comparisons!
There's also a video that accompanies this blog post, for the more visually-inclined:
So I took Rob up on the offer, and he sent me an XPG NVMe drive in a TDBT enclosure and an Arcanite AK58 USB 3.1 flash drive, touted by some as 'one of the fastest USB flash drives available'. I added a couple other drives to the test, pictured below:
Clockwise, from the Inateck case in the top middle:
- Inatech SATA enclosure w/ UASP and Kingston 120 GB SSD
- TDBT M.2 NVMe Enclosure and XPG SX6000 Lite 128GB
- Corsair Flash Voyager GTX 128GB flash drive
- Arcanite 128GB USB 3.1 flash drive
- SanDisk Ultra Flair 16GB USB 3.0 flash drive
- SanDisk Ultra Fit 128GB USB 3.0 flash drive
- (Inside the Raspberry Pi) Samsung Evo Plus 32GB microSD card
I ran benchmarks on every one of these drives, testing their sequential read and write performance with
dd (to test large file operations), as well as their random 4K read and write performance with
iozone (to test more general usage patterns when booting or running apps on a Pi).
So how did all these drives perform? I ran all the tests booting the Pi from the device that was being tested, and I also ran the same benchmarks on my fastest microSD card, a Samsung Evo Plus.
Sequential I/O performance
The sequential results show a huge gap between the SSDs and fast new USB flash drives and the cheaper older-generation flash drives and the microSD card.
From what I've found, it seems like most USB flash drives perform the same as a microSD card in a USB adapter:
The Arcanite does well here, but it does lag a little bit behind the SSDs and even the Corsair GTX.
Random I/O Performance
Random IO performance paints a more complex picture. The performance of the older flash drives remains abysmal, with even the microSD card trouncing them in random 4K write performance.
But the Arcanite also falls off quite a bit in comparison to the SSDs and the Corsair. And the XPG NMVe drive is at least twice as fast as every other option when it comes to random write performance.
So overall, it looks like a decent quality NVMe drive and USB enclosure is going to give the best overall performance. And the Corsair GTX is by far the fastest USB flash drive I've ever tested.
But there's one other test I wanted to do before closing the book on performance, and that's a 10 GB file copy over the network.
This test doesn't sustain the maximum sequential throughput for the drive, but it does take a long time and tests how well the different devices handle heat from constant write activity.
Large file copy over network
NOTE: This graph is a little misleading. I believe that the scale should be 'Mbps', but I need to go back to my data and verify what exactly was measured, and re-generate the graph below. The relative scale is correct, however:
This shows some interesting results. The Arcanite and the SanDisk Ultra Fit perform much worse for long-duration file copies than all the rest.
The Arcanite was only a tiny bit slower than the SSDs and the Corsair in the quick sequential tests, and the Ultra Fit was actually slightly faster than the Ultra Flair.
Why do they perform so much worse in this benchmark?
Well, I pulled out my Seek thermal camera and took a reading on the Ultra Fit:
I put some thermal tape on the tiny bit of metal that was exposed when it's plugged in, and the temperature measured over 60°C (140°F)!
The Arcanite's plastic body didn't measure quite so hot, but that's just the problem—plastic is a good thermal insulator, and that's why you often see it used in coolers. Metal, on the other hand, is good at dispersing heat, but you have to have enough area for the metal to disperse the heat, or the drive is going to get really hot.
The Arcanite's plastic body traps the heat inside, which leads to overheating, while the Ultra Fit's tiny profile doesn't leave enough room to dissipate heat.
Compare that to the much beefier Corsair GTX, which is larger (lots more surface area) and made of solid metal. Even under heavy write load, the Corsair kept its cool at 36°C (<100°F):
When you look at the benchmarks on the packaging, or even benchmarks posted to Amazon reviews from CrystalDiskMark, remember most of them don't reflect the true performance of these drives tested under real-world conditions.
SSDs and NVMe drives typically have a lot more surface area for heat dispersion, so they tend to perform more consistently since they can avoid overheating issues.
Most USB flash drives are designed more for compactness and convenience, and performance with general computing tasks or over long periods of time is usually more of an afterthought.
Usually, that is, unless we're talking about the Corsair—it's the first USB flash drive I've tested that compares favorably to USB SSDs!
But what about price?
What drive gives the most value? After all, the Corsair is $55, while the cheapest option, the SanDisk USB Fit, is about $7. When you go to buy a USB drive for your Pi, you want the best overall value, and you might want to sacrifice a little performance for a lot in savings!
So comparing all these drives (using the price for the 128 GB version), I came up with these two graphs:
This graph compares how many dollars you have to spend per MB/sec on a large file copy. The Arcanite gives the best bang for your buck (assuming you're not constantly writing to it all day), with double the value of the SSDs or the Corsair GTX. The Kingston SSD comes in second... while the microSD and older SanDisk flash drives are a pretty poor choice when it comes to value for sequential access.
In this graph, showing value for random IO activity, the microSD card fares much better, but the older SanDisk flash drives are still a terrible value.
But the XPG NVMe (with an enclosure) becomes the best value, with the Kingston SSD and Corsair GTX in close pursuit. The Arcanite is a bit of a laggard, but it's still respectable with performance similar to the microSD drive.
What do these values mean? Should you get the XPG drive or the Corsair for the best raw performance? Or should you stick with the Arcanite, which gives the best bang for the buck for sequential performance (in some conditions)?
Well, that's impossible for me to answer. If you're going to store large files on the drive, and use it as a media server or NAS, then an Arcanite might be the best option. If you want to run applications or use the Pi as a desktop, the NVMe and an enclosure is probably the best option.
Or, if you want the most portable Pi possible, using the least amount of space and energy, you might be willing to sacrifice a little more performance and stick with a reliable microSD card.
Or if you need even more performance, you might want to look at a different single board computer that offers built-in SATA or NVMe support.
In the end, it's really up to how you want to use your Raspberry Pi, I just hope this helps make your decision a little easier.
I put all the raw performance data and benchmarks used in this issue on the Raspberry Pi Dramble issue tracker.
Also, Rob sent me many more results for other drives he tested, and was generous enough to allow me to share some of those results. They are summarized in the table below:
|Drive||hdparm - sequential||4k rand read||4k rand write|
|Inland Premium 256GB NVMe 3.0 x4 SSD||308.46||19.41||31.80|
|SanDisk 128GB Extreme Pro USB 3.1 Flash Drive||221.08||10.96||11.51|
|eMMC 5.1 module in USB 3.1 adapter||113.11||8.28||4.84|
|Netac Z8 250GB SM2258XT||299.05||20.48||31.47|
|Inland Pro 120GB PS3111-S11||313.05||18.59||24.66|
|eVtran 128GB ASM1153E||334.49||19.14||29.40|
And he sent over a few pictures of some of the drives he tested, one of which I'll share here, for your reference: