Raspberry Pi microSD card performance comparison - 2018

April 6, 2018

Back in 2015, I wrote a popular post comparing the performance of a number of microSD cards when used with the Raspberry Pi. In the intervening three years, the marketplace hasn't changed a ton, but there have been two new revisions to the Raspberry Pi (the model 3 B and just-released model 3 B+). In that article, I stated:

One of the highest-impact upgrades you can perform to increase Raspberry Pi performance is to buy the fastest possible microSD card—especially for applications where you need to do a lot of random reads and writes.

As part of my work on a comprehensive review of the Raspberry Pi model 3 B+, I decided to re-run all the benchmarks for all the Samsung and SanDisk cards (the rest, from Sony, Toshiba, Lexar, and no-name brands were so slow for Pi usage as to not warrant any testing at all!). Without further ado, here are the latest results, tested on a Raspberry Pi model 3 B+:

Just as with the model 2 B and model 3 B, the Samsung Evo+ outshines the rest of the field in 4K random read and random write—two of the most important metrics for common Raspberry Pi use cases. Since the Pi's microSD I/O is often the major bottleneck (especially now that the onboard LAN and WiFi have upped their bandwidth by at least 2x over the previous generation), it's important to get every bit of speed out of the card that runs the OS as is possible.

The SanDisk Extreme and Samsung Pro+ are also worthy options, but both cost slightly more than the Evo+, and offer slightly less performance overall.

In a simpler format, here are my picks for the best microSD cards on the market for use with the Raspberry Pi:

Overclocking the Pi's microSD card reader

You can also overclock the microSD card reader in the Raspberry Pi to eke out a tiny bit more performance from the cards in this benchmark (all except the Samsung Pro (non-plus) were stable at a 100 MHz overclock in my testing), but it won't make much of a difference in real-world usage.

There is a measurable performance increase, but when you get to real-world usage, it doesn't make a huge difference (when I did Drupal testing, there was less than 1% difference when overclocked vs not overclocked).

Benchmark methodology

For the benchmarks, I ran a standardized I/O benchmark script on a freshly-flashed Pi using the latest version of Raspbian Lite, with no modifications or customizations. The script can be run on a Pi running Raspbian using the following command:

Comments

Great test, that show how bad is atm the situation with RaspyPi.
Is unbelievable that in 2018 any RaspyPi board have a real Sata port or any other solution to use a SSD.
Unfortunatly that limits alot the use of the RaspyPi for many uses and push advanced user/pro turn to other boards.

Indeed; however, the Pi's software support and community are leagues beyond other SBCs, and this is currently the major advantage (besides maybe also brand awareness).

I've tested the ODROID-C2, Orange Pi, and am finishing up testing on the ASUS Tinker Board, and all of these boards are leagues beyond the Pi in terms of I/O performance (both networking and local storage). The problem is most of these boards are either priced the same as or more than the Pi 3 B+, and have a much worse initial onboarding experience (grabbing a disk image, flashing the card or onboard memory, first boot, then figuring out where to go next) than what you get with the Pi and it's handy, well-written tutorials.

Premature wearing out of SD Cards is probably caused by a phenomenon called wear usage, sd cards are like tires and when the same blocks get used time and time again they crap out and will end up by choking the device they are being used in (e,g, a Raspberry Pi), some manufacturers (like Scandisk) will void their warranties if the cards are not used in the intended manner. though some of the effects of wear usage is mitigated through a system called wear levelling which is, for example built into the Sandisk Extreme (but not the Sandisk Ultra at present) it still has a shortened life cycle, to use a micro SD card with heavy read/write cycle usage one must look towards the endurance lines of the manufacturers products,

You can run the commands in the script independently (and those who are security conscious should never curl/sudo bash!). The only thing requiring sudo is the hdparm package installation. Not sure why or how any keys could be affected by this script, though.

It would be nice if a benchmark on longevity is done as well. Considering, SD card corruption/locked in a read only mode is a frequent scenario with Pi.

> "the rest, from Sony, Toshiba, Lexar, and no-name brands were so slow for Pi usage as to not warrant any testing at all!"

That might be true for performance but, In my experience Toshiba Exceria M302 (built for action cameras) scores higher in longevity than Samsung EVO. I've abused the Toshiba SD card to get it corrupted & I've yet to see one. Also, by checking out few comments in your 2015 article; people have posted benchmarks for the excluded cards which doesn't sound bad for daily use. I guess, different batches of same manufacturer needs to be tested as well.

Also, I just realized I do have a newer Evo Plus 64GB card (U3), so I'm going to run the benchmarks on it again and update the graph in this post. Thanks for bringing that up! I've also ordered a newer Sony U3 card for testing as well.

I am brand new to Raspberry Pi, bought myself a 3 B+, and wanted to find some board specific benchmarking tests before I bought. Instead I had to rely on general benchmarking tests. I ended up purchasing a 64GB Samsung Evo Select U3 card for $20 at Amazon. I almost bought a slower Evo Select U1 card for the same price by mistake.

It might be helpful for you to add additional information regarding specific cards used to include speed class. When I read this article I wasn't sure which "Evo" card (without the "+" or "Pro") was used as Samsung doesn't make just plain "Evo" cards right now.

Thanks for the helpful article.

Using my Pi as a Unifi Controller, working great. I'm amazed at the community and how much computer you get for such a low price.

For my own curiosity I ran the benchmark script on Raspian with my Samsung Evo Select U3. It was not a pure fresh install of Lite....it was full desktop, with my controller running in the background and with Chromium open but not being used.

Those numbers match up to my own pretty well; I just realized I have a Samsung Evo Plus U3 64GB card on my desk that I didn't test! I'll be adding it to the graph and results above, but here are my results:

hdparm: 21.71 MB/s

dd: 19.5 MB/s

4k read: 7.87 MB/s

4k write: 2.33 MB/s

My results were slightly faster; note that there can be card-to-card variance, usually it's not quite this much though. Could be different batches of cards. One thing that was way faster was the flashing of the card on my Mac. It wrote at 65 MB/sec compared to about 45 MB/sec for the Evo+ 32 GB card.

But my recommendation of the Evo+ as the best for price/performance still stands!

Take-aways:
+ The results of the EVO+ and EVO Pro+ tests were similar to what Jeff got, validating the procedure.
++ Surprisingly, the cheap Micro Center 16GB card bested the EVO+ in 4k write, with nearly the same 4k read. I have 2 of these and tested both with similar results. One was bought about 2016 and the other in Nov 2018. These are $3.99 each (Dec 2018), so definitely worth buying if you live near a Micro Center store.
- Sadly, the 32GB version of the Micro Center card doesn't show the same performance.
-- The Kingston cards that came with my Pi kits are poor choices for usage.

I have limited experience and my observations are anecdotal.
I had no problem with SD cards running on PI and PI 2 until I started using Node Red. I then went through three SD cards in rapid succession.
I have since set them up so that the SD cards are only used at boot and the system runs from an SSD. I have not lost an SD card since then. The two systems have been running 24/7 for about a year without any SD problems.
One of the systems had a power supply problem that led to disk corruption (mounted read only). It was recoverable.

Have you noticed any real world differences in performance from the higher end cards? I have a Kingston 64 gb class 10 card and my Raspberry Pi 3 B+ is pretty laggy even when typing code into the terminal.

Fabulous write up and work here, thanks for that. I have been recently deploying regularly updated/reconfigured pis in various server configurations and came upon this doing some research. I checked your pidramble wiki page as well and noticed you have the same experience I do, in that the 3 b+ is running storage slightly slower than the 3b. I figure there is already info out there as to why this is, but I am several weeks into massive research and related work and am lazy to do any more. Any thoughts/ideas on why the slow down in the statistically newer device?

Wire Cutter https://thewirecutter.com/reviews/best-microsd-card/ has useful test results, discussion of their meaning, and an extended discussion of how sd cards of same or similar names/models change rather quickly with time. And observations, advice on counterfeit cars & how to best-effort get genuine ones.

They report using a windows program "CrystalMark", with a download link, for their tests.

The CrystalMark developer says his software uses Microsoft's DiskSpeed to do the tests. DiskSpeed is open source, and source and windows binary are freely downloadable, as is documentation, via https://github.com/microsoft/diskspd .

"Using a Kingston USB 3.0 High-Speed Media Reader in a desktop PC’s USB 3.0 port, we ran CrystalDiskMark, a benchmarking program designed to test sequential and random speeds on solid-state storage."

"Some 128 GB SanDisk cards we tested (Extreme, Extreme Plus, Extreme Pro, plus the probably-a-rebranded Extreme Nintendo Switch card) hit sequential read speeds of over 175 MB/s and writes of around 100 MB/s when tested in a SanDisk MobileMate USB 3.0 Reader rather than the Kingston reader we used for our regular testing."

with different devices:

"Every card we tested had consistent performance between runs, but not between devices. Sequential speeds and random write speeds were higher with CrystalDiskMark on the desktop than with A1 on the Galaxy S9, while the A1 benchmark recorded consistently higher random reads.1"

and commented on the combination of card readers & laptops:

"1. The desktop we tested on, a 2011-era PC with an Asmedia USB 3.0 chipset, was the third PC we tried; both a 2018 HP Omen laptop and a 2014 Lenovo Yoga 2 Pro bottlenecked our USB 3.0 card reader at around 88 MB/s in sequential reads. Likewise, our A1 results on a Samsung Galaxy S9 had much lower sequential reads, but much higher random writes, than on a Galaxy S7 Edge two years before."

Their results:

"Updated March 6, 2019

Our new pick is the SanDisk microSDXC for Nintendo Switch (128 GB), the runner-up is the Samsung Evo Select (128 GB), and the budget pick is the SanDisk microSDXC card for Nintendo Switch (64 GB)."

As the 64GB cards give rather better random i/o results, my take is that the Nintendo Switch 64GB card is the fastest, and still a size & performance sweet spot. They report and I confirm that there are different versions of this card. The newest on Amazon, by what Amazon's page leads to as of Wed 17 July 2019 ... and somewhat confirmed by review dates (December 2018):

I'd be curious how this card does within, and with a card reader on, the very new Pi 4b and Pi Zero-w.

I'd also be curious about use cases that maximize sustained, sustained throughput using the card. For example, with a camera, would processing time-lapse shots to assemble and compress them on board, in order to make best use of a slow connection back to base ... think "Pioneer mission and planet Earth", or perhaps "trail camera back to camp" (via a radio hat?). Or "creature-cam on a sea-turtle hatchling", which would rule out both a big cam enclosure , And, steady streaming over the connection. (As you'd have to cache and burn, for dives and breathes. Alternatively, recover over a kayak connection, after accumulating a ton of video before the glue dissolves and it floats to the surface.

Also, in some thread floated the idea that larger-sized cards should last longer -- endurance -- in the sense of enduring write operations, the idea being that the larger cards have more memory space to distribute the write ops over. Is this true? ( Do the controllers in the cards not do that?)