Note: I also posted a separate review of some A2 'Application Performance' class cards, see this post: A2-class microSD cards offer no better performance for the Raspberry Pi.
As a part-time tinkerer and full-time developer, I have been fascinated by single board computers (SBCs) since the first Raspberry Pi was introduced almost a decade ago. I have owned and used every generation of Raspberry Pi, in addition to most of the popular competitors. You can search my site for tons of articles on these experiences.
One thing that is almost universally true (at least as of 2019) is that the most common system boot device is a microSD card. SD cards in general have performance characteristics that pale in comparison to faster devices, like NVMe SSDs, eMMC, and XQD or CFexpress.
On top of that, the performance metrics used in microSD marketing are usually targeted only at the major market for these tiny memory chips: those who record video and stills on them, and only ever really care about massive file read/write performance.
For general purpose computing—which is what SBCs like the Raspberry Pi do—random I/O performance is much more important. And here is where most of even the most expensive microSD cards fall incredibly short.
The Benchmarks
If there's one thing I hate, it's blog posts that require you to read a novel before getting to the meat. Therefore, before going further, here are the 2019 benchmarks, run on a brand new Raspberry Pi 4 model B (1 GB RAM), using the official Raspberry Pi USB-C power supply:
As with previous years, and again to get right to the point, here are my recommendations for a microSD card for your Pi:
- Samsung Evo+ - $8 on Amazon
- SanDisk Extreme - $10 on Amazon
The Evo+ is one of the lowest-priced microSD cards (less than ten USD on Amazon right now), and it has either the best or near-best performance for every metric. And it's almost double the best performance of the 2nd place contender, the Samsung Pro+ (which costs a lot more).
Some cards cost a lot more, yet offer less than half the write performance. Note that these 'super fast' cards are often faster when writing large files or streaming data to/from the cards... but whatever optimizations they do for that performance seem to negatively impact random write performance.
You can find all the raw data, and benchmark methodology (as well as a link to the script used to run the benchmark on the Pi) on the official Raspberry Pi Dramble website: Raspberry Pi microSD Card Benchmarks. You can also run the benchmark on your own Pi using the following command:
curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
Why are microSD cards so slow at 4k I/O?
Earlier in the post, I mentioned that microSD cards are often marketed based on their maximum throughput. The 'C10' or 'U3' designations typically represent a speed class like "10 MB/sec" or "30 MB/sec" write, respectively. But this is with large video data chunks, which are fairly easy to optimize for in cheap mass-produced flash controllers.
But when you look at random 4K I/O (which is 4 kilobyte blocks of data, written to random segments of the flash drive), the performance is vastly reduced. Instead of seeing the "95 MB/sec" that's advertised on the front of the Sony microSD card, for example, I found 0.66 MB/s write speed when writing random 4K blocks.
I don't blame the manufacturers here, because probably 90-95% of those buying these cards are not using them as the main system boot volume on a Linux computer, as you and I do :)
But it would be nice to see random I/O metrics somehow reflected in flash card datasheets. It's often impossible to get that data, which is why I do these now-annual blog posts!
Raspberry Pi 4 microSD performance improvements
I was most excited to see the I/O improvements in the Raspberry Pi 4, which I felt were long overdue. For a few years, competitors like the Asus TinkerBoard and OrangePi had more dedicated bandwidth to support faster I/O on the network bus, USB ports, and the microSD card reader. The Pi, for years, has had a very limited amount of bandwidth, shared amongst all of the above.
The Pi 4 does much better with all the cards I tested. While random read/write performance is not much better (this is because of the card much more than the Pi), the maximum throughput with large files and streaming data has improved dramatically:
The Pi 4 reads and writes data to all the cards I tested faster than the 3 B+ even when the 3 B+ microSD card was overclocked!
USB 3.0 on the Raspberry Pi 4
I was hoping for, but not expecting, USB 3.0 on the Pi 4, so I was very happy to see it make the cut. USB 3.0 offers a theoretical maximum throughput of 625 MB/sec; the Pi can't quite make it that high, but can sustain over 300 MB/sec of read/write bandwidth.
Currently, the Pi 4 can't directly boot off an external USB 3.0 drive—instead, you can kind of hack around and get the boot partition on the microSD card, with the root Linux filesystem running on an external drive. Once it's possible to boot without a microSD card at all (this should be possible after a future firmware update), an external SSD will offer an incredible speed boost akin to going from a spinning HDD to an SSD.
I did run some tests with a 512 GB Samsung 860 Evo SSD I had laying around, with a USB 3.0 to SATA adapter, and here are the results:
One thing I noticed at first was my tests with the external USB drive were wildly inconsistent. And on a Pi, I have learned that usually means one thing: something's getting really hot, and throttling the speed. I pulled out my Flir camera, and sure enough—the VLI VL805-06 USB 3.0 controller chip was getting quite toasty (the crosshair is directly on top of the chip in the thermal image below):
If you want to do anything that requires more than infrequent bursty performance on the Pi, you need active cooling. The benchmarks I ran were fairly consistent when I had a fan directly above the board, but would get very slow (sometimes 2-3x slower) if I had no air passing over the device.
Conclusions
This is one of three major posts I plan on writing about the Pi 4—I am working on a deeper review of the device, with many more interesting observations, as well as a post about running my Kubernetes cluster (sneak peak at www.pidramble.com).
Comments
Thanks, Jeff, for doing this - I've been wondering which SD cards to buy! Much obliged!
A superb article.
Does the size of the SD make any difference - I am a huge fan of the 32GB SD's.
I have heard that a 32GB sd could be a downgraded 64GB sd - whether this is true or not I cannot say.
Any chance of comparisons with
1) USB Stick 32GB
2)USB Disk (SDD and HDD) Say 500GB or less.
Don't want much, do I ;-)
But such an article would help enormously the selection of mass storage devices for the RPI.
Again many thanks für this report!
I have been trying with 8, 16, 32, 128, and even one 256 GB microSD card, and in this case, size doesn't really matter. For some types of media it can make a difference but at least for a modern microSD card it's really the controller that addresses the memory that is most important.
I have a few USB flash sticks around, and in my past tests they were always about the same speed as the microSD cards. I believe the manufacturers use, essentially, the same guts as a microSD card inside the USB flash drive, so it's no surprise.
I have tried my 512 GB Samsung 860 Evo SSD and got the last benchmarks above, but haven't tried with a smaller SSD. With SSDs usually the bus / I/O chip gets saturated on the Pi before the SSD's performance can really be tested. Same SSD on my Mac with USB 3.0 was giving over 500 MB/sec.
After years of people asking for an eMMC or SATA connector on the RPis, several of the RPi engineers are still vehemently denying that there's any need or even benefit of having on-board eMMC storage, even going as far as straight out claiming that they don't notice any problems running a lightweight DESKTOP SETUP off of SD. I'm not joking; read the discussion threads on the RPi4 release post on raspberrypi.org.
Well, if they can get full USB 3.0 booting working, and someone builds a nice case with an SSD controller / USB 3.0 adapter built in, then it would be pretty compelling. Probably cheaper that way and easier for your average consumer than eMMC. But yeah... we can dream :(
They are building computers for accessibility in low income / third world settings. We are using it as commodity hardware and supporting the project, but what you are asking goes against the goal of the project, which is to make the best darn cheap PC possible. They could build it with eMMC but what's the price to get a 32gb eMMC, is it 10$? Nope.
I can understand the want and appreciate it would be faster, but please consider the Pi mission.
Since pi3, you can boot directly from usb, from pi3+ it works out of the box.
Unfortunately, this is not true for the Pi 4 currently. That feature is waiting on a firmware update. You currently have to have a microSD card running the initial /boot volume.
Regarding USB boot, I see that a one-time programmable toggle is set on the actual hardware. Is there a downside at enabling USB boot, as you cannot turn it off afterward?
Not really, maybe a few seconds (at most) extra boot time waiting for USB devices if you don't have one able to boot up the Pi connected.
Congratulations. Incredible work. I'm waiting to have my Rpi4 with more RAM than you and compare results.
Thanks for sharing your findings!
There's a new firmware coming (currently in alpha) that helps significantly with the VL805 temperature: https://www.tomshardware.co.uk/raspberry-pi-4-firmware-update-tested,ne…
Have you tried testing any of the A2 class cards? They are supposed to have better IOPS.
So far no, from what I've heard they may also need firmware-level support to do anything different than the A1 cards and the Pi may not have that. I would like to test one at some point though, just to see.
I've tested 64Gb A2 card on rpi3b+, and it was slower then 32Gb A1
Same here; more to come in a blog post tomorrow :(
I am new to the Raspberry Pi, but not to computing. Sony among other manufacturers is selling UHS-II Microsdxc cards with claims of read and write speeds in the 300mbps range. Is the Raspberry Pi 4 capable of leveraging UHS-II cards or does another hardware bottleneck somewhere get in the way?
Yeah. As far as I know the bottle neck has always been the Pi with regards to the Micro SD speed.
Pretty annoying, when the new USB3 ports now are as fast as "normal" USB3 ports on regular PC's.
Thank you :)
Evo Plus is confusing with Evo +, the later seems to be discontinued in Amazon France.
Indeed. I ordered some Evo+ cards using the link above (https://www.amazon.com/Samsung-Class-Micro-Adapter-MB-MC32DA/dp/B00WR4I…) and I was sent Evo Plus cards. I returned them and explained that they are different products. Shame on Samsung for such poor product name choices.
Yeah, unfortunately it's hit-or-miss if you actually get '+' cards anymore. I wish Samsung just made them one and the same, no clue why 'plus' and '+' are different products.
I agree it's confusing, but wasn't the '+'(MB-MC32DA/AM) superseded by the 'Plus'(MB-MC32GA/AM)? They did change the model number and the name(sort of) when they changed the design of the product. I'm sure the '+' was discontinued a while ago, as I can find no online store of note that has them anymore, except through third party sellers. I was going to order from the Amazon link, but was concerned that I'd get fakes, or be sent a 'Plus' card.
I ended up trying an ebay seller with 100% feedback, who's listing said MB-MC32DA/AM, had only pics of the '+' model, and stated that it was genuine Samsung. I received a card, which I believe is fake, with a Chinese model number. The font of '32' on the card looks wrong, and I am contacting Samsung to confirm.
I guess I'm just going to buy the SanDisk Extreme directly from Amazon. They seem to have a minimum order of 2 for the card currently. I imagine it's because they'd rather people order from third party sellers instead.
Another data point: I ordered two of the Evo + from Amazon and received Evo Plus instead. Annoying that the image on the Amazon page still shows the + card.
Samsung's own website (UK) seems to add to the confusion... again, the pictures show the "Evo+", but the page title and description all state "Evo Plus". Which would seem to imply they are the same thing?!
https://www.samsung.com/uk/memory-storage/evo-plus-microsd-card-with-sd…
In canada we have evo, evo plus, & pro besides there normal class cards besides the new 95mb 32gb cards
Thanks for this info. I was looking for the right SD card for my new Pi4 (official Pi docs are very vague on this).
Observation: since the sequential performance is an order of magnitude better than random access performance, it seems there may be a possibility of developing a SD-card optimized file system that first captures write operations by means of sequential write to a journal file and then in the background translates the journal back to the 'normal' file system structure. Probably not worth the development effort, but curious if anyone has done any research into this.
can you tell us which storage sizes you tested? according to the specs on both samsung's and sandisk's web sites, higher capacities (128GB) have better performance than the lower capacity (32GB) models.
your picture shows a 128GB evo plus, but your link and price references the 32GB model. which one did you use for your tests?
All the details are in this wiki page: https://www.pidramble.com/wiki/benchmarks/microsd-cards
Note that I have heard the same thing from numerous sources, so I purchased a few cards in various sizes (e.g. SanDisk Extreme at 8, 16, 32, and 64 GB, and Samsung Evo Plus at 32 and 128 GB, as well as Samsung Ultra at 16 and 64 GB). I ran them through all the same tests, and they were within 2% of each other, it didn't seem like the larger cards were any better.
With spinning hard disks, it makes sense that greater density at the same RPM (assuming it's not just additional platters) results in lower latency and faster reads/writes. But with flash memory, besides large-scale writes which need more headroom, or long-term write patterns, the size should not matter as much, or at all, really.
Wonderful, thanks so much!
You're the best, Jeff. Thanks for doing this for technoweenies like me. I decided to take your advice and go with the Samsung Evo Plus. Now to play with my new toy.
eeeeeeeee! :D
according to this wirecutter article you might want to try a sandisk nintendo switch sd card or kingston canvas card
https://thewirecutter.com/reviews/best-microsd-card
I know that every device has it's own favorite but you never know if its good if you don't try ;)
I put my money where my moth was ...... that kingston canvas select 64gb(SDCS/64GB) is NOT very good at random write only 259KBytes/s
tested on a raspberry pi B from 2011.12 with fresh raspbian kernel 4.19.75+
very disappointing
Whole test 3 times in a row
Raspberry Pi Dramble microSD benchmarks
microSD clock: 50.000 MHz
hdparm
22.24 MB/sec
22.24 MB/sec
22.24 MB/sec
dd
11.8 MB/s
11.1 MB/s
10.6 MB/s
write rewrite read reread read write
1588 1717 4517 4523 4022 254
1582 1716 4816 4828 4361 259
1626 1585 4451 4468 4007 255
next up a wrongly order samsung evo select 64gb .... I wanted to get a evo+
samsung evo select 64gb(MB-ME64G MB-ME64GA/AM) values
hdparm
21.89 MB/sec
21.93 MB/sec
22.36 MB/sec
dd
17.3 MB/s
15.1 MB/s
13.7 MB/s
random random
write rewrite read reread read write
2073 2698 4634 4649 4560 2423
2036 2695 4628 4597 4520 2415
2054 2359 4589 4592 4486 1506
Thanks. Great article!
I am looking for the Samsung EVO + and I find that there are 64Gb there are U1 and U3. Which one have you tried?
Great article. I must try it with our Raspberry Pi 4 model B heatsink - CooliPi 4B. I've taken some thermal images of a RPI4 from the bottom with a heatsink on, but haven't tried to load a USB bridge then. See
https://www.coolipi.com/Overclocking.html
I should do it and publish the results...because the heatsink cools all the main three chips - BCM, ETH PHY and also USB3 bridge.
what about durability / wear levelling aspects of these cards ?
I noticed that the CPU seems to be quite cold in the Flir thermal photo.
Did you have anything on top of the CPU? Paint, tape, etc ... ?
Reflective materials (like the CPU heat spreader) may look colder in the thermal photos than they really are.
I didn't have anything on it, therefore it was being highly reflective (thus dark on the IR image).
There are two Sandisk Ultra cards one has 10 and the other A1 written on the front. I think you tested the 10 which seems poor. The A1 is a lot better.
Sandisk Ultra 128GB A1
hdparm- 43.29 MB/s ddwrite- 24.4 MB/s
4k read- 9.32 MB/s 4k write- 2.96 MB/s
Bought Sandisk Ultra 32GB A1 after reading your comment, thanks!
hdparm 43.62 MB/s
ddwrite 21.1 MB/s
4K read 10.72 MB/s
4K write 2.73 MB/s
So the A1 is even better than the Extreme ?
Did you have the latest vl805 firmware when these tests were run? Be interesting to see the tests compared to the new firmware if you didn't
No, these were on the original launch firmware. Note that they were all run with a fan on the Pi, so the temperature was well-controlled. I haven't seen any indication card performance was affected in a measurable way by the firmware outside of potential thermal throttling issues.
Thanks for sharing this information! Useful!
Using mentioned script on Adata 64GB A2 micro sd
Raspberry 4B running full raspbian desktop
Running hdparm test...
Timing buffered disk reads: 134 MB in 3.02 seconds = 44.38 MB/sec
Running dd test...
419430400 bytes (419 MB, 400 MiB) copied, 31.1629 s, 13.5 MB/s
Running iozone test...
random read=11339
random write=3752
(in kBps)
What about longevity of the various cards? I have some that worked at first but eventually failed in service. How do I avoid such cards in future? Excellent article, thahks btw!!
This is GREAT, Jeff! Really appreciate the testing, follow-up on various models, and try-at-home script. I must need to get some sleep, because my tests on the cheap $4 Micro Center-branded card that I picked up with my Pi had performance approximating the name-brand Evo+:
hdparm 43.51 MB/s
dd 28.4
4k random read 7.484
4k random write 4.776
Thanks again!
I found the exact same thing in my testing, back with the Pi 3B and now with Pi 4. However, better performance only on the 16GB version, as the 8GB and 32GB Microcenter ones I tested were both bad performers. Also, tradeoff for price is consistency... 1 out of every 3-4 of the 16GB ones perform badly.
Thanks for discovering and sharing this crucial information Jeff !
Now it's into the 2020 year. I have been playing around with the Pi4B 4GB model. What a major improvement over the pi3B+. I have had the CPU overclocked to 2GHz and GPU overclocked to 700MHz. Worked really great until I did a firmware update, should have never did that, ruined what I had. So the guys at raspberry are messing things up before we even get started! Where are the updates guys? Again, I am writing this on January 13, 2020! You would think there would be something besides a messed up firmware update that ruins things. Now I'll have to buy another pi or figure out how to go back to the previous firmware, I HAVE NO IDEA!
Hello Jeff,
which USB 3.0 to SATA adapter was used? I haven't come up with one above 200 MB/s yet.
Greetings Chris
This article was clearly written by someone who thinks like I do. Thank you for getting to the point. I appreciated the benchmark info early on, so much so, that I was compelled to finish the article(something I don't usually do). Keep up the thoroughly fascinating work!
I got a TeamGroup Elite 64GB from NewEgg which provides comparable performance to the Evo+ (possibly even a bit better).
hdparm: 44.15 MB/sec
dd write: 22.7 MB/s
4k read: 10.02 MB/s
4k write: 3.74 MB/s
I took a chance on a random brand and I lucked out. I know TeamGroup sold budget SSD, but I didn't even know they did sdcards.
Clean install (Raspberry Pi Imager v1.2 & Raspbian Buster with desktop 2020-02-13)
Raspberry Pi 3 Model B Linear read Linear write 4 kB Random read 4 kB Random write
Samsung EVO + MB-MC16DA/EU 16 GB 22,35 11,00 5353 1059
Samsung EVO Plus MB-MC32GA/EU 32 GB 22,65 17,60 7240 1678
SanDisk Ultra SDSQUAR-016G-GN6MA 16 GB 11,45 9,40 3735 555
SanDisk Extreme PRO SDSQXCG-032G-GN6MA 32 GB 22,71 21,60 7830 4211
Raspberry Pi 4 Model B Linear read Linear write 4 kB Random read 4 kB Random write
Samsung EVO + MB-MC16DA/EU 16 GB 43,43 11,70 7128 1309
Samsung EVO Plus MB-MC32GA/EU 32 GB 43,74 22,90 11297 1819
SanDisk Ultra SDSQUAR-016G-GN6MA 16 GB 41,79 22,30 5269 568
SanDisk Extreme PRO SDSQXCG-032G-GN6MA 32 GB 43,91 39,10 10479 4836
Really surprised how terrible random write performance of the SanDisk Ultra is
Greetings from Holland, Arthur
I suspect the SAMSUNG EVO Plus is no longer being manufactured. I tried to buy so 16GB ones a few months ago and was sent 32GB 'as a bonus' for the same price. Now I can't find anyone to sell the EVO Plus 16 GB and the Samsung site shows them as unavailable.
I don't really want anything bigger than 8 or 16GB as it takes a long time to back the image of the card up and slows down my backup system if I have several images > 16GB to save.
Does the size of the SD card have any impact on performance either initially or after it has been used for a while and all the cells have been written to once ?
It's not every day I get two links from Tom's Hardware back to the blog in one article!
Have you by chance run any more USB/SSD tests to see of the heating issue is any better since they released updated firmware specifically to reduce power draw and heating (for the CPU)? I'm wondering if that had a positive result for the USB controller as well.
Yes; the USB chip on the Pi 4 is also a bit less warm when under load since that firmware update last year. And it's even better if you are using UASP storage, as I was testing with and without on an SSD, and it saved about 8% on the power consumption, meaning less waste heat too!
Thanks for the additional tests and detail.
Some additional Iozone benchmarks on a Raspberry Pi 2 Model B (orignal not the later 1.2 model).
These were done on brand new cards bought from Amazon Uk using a mostly clean (I had to install make and gcc) install of https://github.com/debian-pi/raspbian-ua-netinst
Not sure what the long term durability will be like, but those Silcon Power cards are amazing performance/value, especially as the Evo+ isn't available in the UK. The SanDisk Extreme Pro A1 is pretty mighty for a price and you mught get some reassurance from using a well known/established brand.
Samsung Evo Plus (not +) 32GB
write: 2396
rewrite: 2785
read: 7393
reread: 7324
random read: 7265
random write: 1972
SanDisk Extreme Pro (A1) 32GB:
write: 2516
rewrite: 2818
read: 7921
reread: 7951
random read: 7131
random write: 4188
Silicon Power 3D NAND 32GB
write: 2827
rewrite: 3008
read: 8181
reread: 8177
random read: 6368
random write: 3018
Recently seen the tuya-convert hack failed to get it to work with my onboard wifi on pc. So not wanting to waste money randomly trying to find the holygrail of usb wifi adapters decided to go for a rpi 0 W. Looking around the sandisk is overpriced(& from what I have read sandisk has had a bad counterfeit problem for sd cards) so since ive had good luck with Samsung(after I stopped using usb card readers) in my 3ds I figured why not. After this it'll become the mqtt server
What FLIR camera do you use? (I commented on this old post because it was the only one that came up when I searched for "flir")
I actually use the Seek Thermal camera for the iPhone.
The Samsung Evo+ seems impossible to find (presumably replaced by Evo Plus). What card do you recommend now that Evo+ is unavailable?
I've recently been switching to SanDisk Extreme instead.
Great Article! Thank you!
I am planing to buy a Pi Zero 2 W and I am looking for the "best" SD card. Does anybody have results for Zero 2?
Is there a change with the latest Raspberry Pi OS 64 bit? Does the pi supper A2 cards now better?
Informative and well-written.