Raspberry Pi microSD card performance comparison - 2019

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.

Raspberry Pi Noobs SD card adapter with a number of Samsung and other microSD cards

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:

Raspberry Pi 4 model B microSD card benchmarks - 2019 edition

As with previous years, and again to get right to the point, here are my recommendations for a microSD card for your Pi:

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:

Raspberry Pi 4 model B microSD card benchmarks vs Pi 3 model B+

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 Rasbperry 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:

Raspberry Pi 4 model B microSD vs USB 3.0 external SSD comparison

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):

Thermal Flir IR image of Raspberry Pi 4 with hot VLI USB 3.0 controller chip

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,new...

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/B00WR4IJBE) 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.

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?