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:
- Samsung Evo+ - $15 on Amazon
- SanDisk Extreme - $19 on Amazon
- Samsung Pro+ - $27 on Amazon
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:
curl https://raw.githubusercontent.com/geerlingguy/raspberry-pi-dramble/master/setup/benchmarks/microsd-benchmarks.sh | sudo bash
You can view all the benchmarks and detailed methodology in my continuously-updated microSD card benchmarks page on the Raspberry Pi Dramble wiki.
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.
One of the main issues I have is not performance but failure of the cards in relatively short time periods with minor use. Any data there?
I have noticed my raspberry pi also seems to destroy memory cards, in that after a while they are corrupted and I can't reformat them.
Odd, I've used several over the years and have had one SD card in a pi 1 die (after 3 years of use + use in a digital camera prior). What distro are you using?
We have around 60 devices deployed around the US and have found all except the SanDisk Ultra micros fail after 6 months to 1 year.
I would check the power supply that you're using. My RPi2's kept corrupting SD cards when I was using a standard usb charger. When I finally sprung for a proper power supply, the problem went away.
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,
Remember you can USB boot or network boot the Pi 3/3+ too, if you want faster r/w speed and a more reliable data storage.
I never use SUDO and DO NOT recommend running this script as root if the SUDO test is removed. It wiped out key files.
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.
Awesome stuff. Thanks!
Hi Jeff,
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.
I would also be really interested in this. For most of my uses reliability is much more important than speed.
Have you tested any of the Samsung EVO+ U3 cards? The EVO+ 32GB only comes as a U1 speed card, it looks like you have to get 64GB or larger to get the U3.
Helpful writeup, thank you. Would be great to see a similar comparison with USB 3.x thumb drives. We've had good success in terms of speed and reliability with Samsung USB 3.0 Flash Drive Fit.
It would be interesting to see the newer Samsung EVO Plus cards, not to be confused with the older EVO+ cards.
Also the start of the newer 'A' rating cards that are appearing, targeting this 4k market.
Maybe a nice editable database usable with a standard SD image setup for testing it so it's easy to compare.
I might have to move things into a Google spreadsheet! Good idea.
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.
[Edit: See my preliminary results below; I'll add them to the graph in the post in a bit.]
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.
hdparm = 22.51 MB/sec
dd = 11.3 MB/s
Not sure how to interpret the iozone tests, so I'll just post the raw results and hopefully someone can interpret:
random random bkwd record stride
kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
102400 4 2583 3763 6609 6579 6479 1705
Did a clean install of lite, re-ran benchmarks.
hdparm = 22.51 MB/sec
dd = 15.7 MB/sec
iozone:
write: 3499
rewrite: 3820
read: 7112
reread: 7110
random read: 7089
random write: 1953
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:
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!
So it's turns that older Evo+ are faster for PI? What do you think about Evo Plus 32GB (U1) will it be as fast as Evo+? I'm going to buy one
Yes, according to my tests the Plus is slower than the +. It’s probably because Samsung focuses (like most flash card manufacturers) on sequential performance and not on random IO.
Add my name to the long list of folks wanting a higher end RasPi, maybe in the $100 range. Other SBCs might have better performance, but the RasPi is the best supported computer I've seen.
I would really like to see another benchmark added, one that reflects what a user will see in everyday use.
Hello,
Could you post the model numer and capacity of the Evo+ you used?
Is it the MB-MC32DA/AM 32Gb?
Thanks
For my tests, I'm using the MB-MC32DA/AM 32GB model.
Are you going to update the wiki.
Anyway I'll add (fresh April Raspbian GUI, plus a few apt updates) there has been a stock speed change to ram iirc.
Anyway
At none GUI boot.
SANDISK Ultra *A1* 64GB
(sdsquar-064G-GZFMA)
50Hz
1st / 2nd test
22.51/22.61
10.0/10.1
7878/7907
3155/3047
---
dtparm=sd_overclock=100
100Hz
test1/test2/test3
33.79/33.60/33.56
10.4/15.2/13.7
8979/9004/9276
3026/3160/3150
Any chance getting these on the charts?
Many are buying the SanDisk A1's now.
I can also grab them for 32GB size too.
Do it please for 32GB too
What about wear leveling?
Hi, I think you link to Amazon for the Evo+ could be a fake, going by the comments on Amazon.
Hello,
Any idea where to find a real Evo+?
Any new tests/benchmarks with the Evo plus?
What to buy instead of the Evo+
Thanks
Here are my results
Raspbian 9.4 lite (fresh install); iozone 3.482; actual sd clock: 100MHz
Kingston microSDHC/SDXC UHS-I U3 90R/80W 64GB (SDCA3/64GB)
hdparm: 35.82 MB/sec
dd: 22.5 MB/s
4k read: 8570 kBytes/sec
4k write: 644 kBytes/sec
Samsung EVO Plus 64GB [SDXC UHS-I U3 100R/60W] (MB-MC64G/CN)
hdparm: 35.27 MB/sec
dd: 19.5 MB/s
4k read: 9916 kBytes/sec
4k write: 2740 kBytes/sec
Samsung EVO Plus 32GB [SDHC UHS-I U1 90R/20W] (MB-MC32GA/EU)
hdparm: 36.25 MB/sec
dd: 19.4 MB/s
4k read: 8517 kBytes/sec
4k write: 2427 kBytes/sec
SanDisk Extreme PRO 32GB [SDHC UHS-I U3 100R/90W V30 A1] (SDSQXCG-032G-GN6MA)
hdparm: 37.00 MB/s
dd: 22.4 MB/s
4k read: 10107 kBytes/sec
4k write: 4540 kBytes/sec
It's seems SanDisk with A1 label is a new leader.
NB. enable_uart=1 will limit sd clock to 83Mhz
Have ever tried ATP cards? They are for industrial applications. Very durable and quite fast.
This page is fantastic. My addition:
Raspberry Pi 3 B+, microSD clock = 50MHz - not overclocked (best of 3 runs for each card)
Samsung EVO+ 32GB UHS-1 U1 (MB-MC32D)
hdparm: 22.60 MB/s
dd: 15.8 MB/s
4k rand read: 8.64 MB/s
4k rand write: 3.22 MB/s
Samsung EVO Pro+ UHS-1 U3 (MB-MD32D)
hdparm: 22.57 MB/s
dd: 19.6 MB/s
4k rand read: 8.51 MB/s
4k rand write: 2.19 MB/s
Kingston 32GGB UHS-I U1 (SDC10G2)
hdparm: 22.3 MB/s
dd: 14.9 MB/s
4k rand read: 3.32 MB/s
4k rand write: 0.54 MB/s
Micro Center 32GB Class 10 (Y32GI37 L5H5090653)
hdparm: 11.36 MB/s
dd: 11.1 MB/s
4k rand read: 3.76 MB/s
4k rand write: 0.93 MB/s
Micro Center 16GB Class 10 (Y16GI24 D8H5060748)
hdparm: 22.81 MB/s
dd: 13.9 MB/s
4k rand read: 7.90 MB/s
4k rand write: 4.50 MB/s
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.
Interesting! I’ll have to pick up some MC cards next time in there. I wonder if they use different suppliers for the different card sizes.
Do individual Pis have speed variation? I tested the same cards on a different Pi 3B+ and speeds consistently 4-5% lower.
Any change one of these 2 cards are the one you have?
https://www.microcenter.com/endeca/CompareV2.aspx?returnUrl=L3NlYXJjaC9…
Y16GI24 or D8H5060748 do not show any results on the micro center website
Tried the microcenter microsd cards mentioned and .... mine are not fast
this is on a pi 1 b
numbers on my microsd card
micro center
class 10 logo microsd HC logo
16GB
ON THE BACK
1914
DVLN003438412
hdparm
21.79 MB/sec
21.79 MB/sec
19.57 MB/sec
dd
5.0 MB/s
5.2 MB/s
3.4 MB/s
random random
write rewrite read reread read write
951 1202 4296 4281 3528 127
1095 1198 4269 4274 3529 128
178 1195 4300 4309 3575 127
yeah not so great ....
maybe try the sdcard but .... I think I am done since the 3B+ Stephen used, can only use the microsd card
Tried this for fun on my RPI 3b+ with Kingston 120 gb ssd :)
hdparm: - (no mmcblk0 found)
dd: 32.5 MB/s
4k read: 9614 kBytes/sec
4k write: 9042 kBytes/sec
What model/SKU is it exactly?
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?
Great work!
Any chance to have this benchmark updated for the Raspberry Pi 4?
@Alex B - Ha! I am working on it right now, it takes a bit of time, unfortunately. I hope to publish a 2019 update post in the next week or so.
I'm also working on the Rasbpian 10 Buster / Pi 4 upgrade for my Pi Cluster—more info will be on www.pidramble.com soon!
Awesome! I have specifically waited to place my RPi 4 order until your benchmark is out, so I'll make sure to check pidramble periodically.
It is nowhere underlined in the text but there are: Evo+ and Evo Plus (apparently 2 different cards / different performance).
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 .
"DiskSpd is a storage performance tool from the Windows, Windows Server and Cloud Server Infrastructure engineering teams at Microsoft. Please visit https://github.com/Microsoft/diskspd/wiki for updated documentation. The latest update to DiskSpd can be downloaded from https://aka.ms/diskspd."
They used a couple of USB card readers:
"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):
https://www.amazon.com/SanDisk-MicroSDXC-Nintendo-Switch-SDSQXAT-064G-G…
SanDisk 64GB MicroSDXC UHS-I Card for Nintendo Switch - SDSQXAT-064G-GNCZN
List Price: $19.99
Price: $14.99 Free Shipping for Prime Members & FREE Returns
You Save: $5.00 (25%)
(as of 17 July2019)
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?)
I am not so sure about that wirecutter article anymore.
I bought a 64gb kingston canvas select and it is garbage ..... just writing the image to it the speed jumps from 6mb/s to 24mb/s and then the random write in raspbian is very low at 0.2mb/s nothing like what they showed in the article.
Of course done with a sample size of one .... so your results may vary
For the people who bought Kingston Canvas Select, the 85MB/s writing speed is only guaranteed for 256 GB/512GB cards. Sadly, the models with lower storage have miserable writing speed. I ordered for my phone a 256GB one and am curious how good is it compared to my older 128GB Samsung Pro+. Also, it is a bit too much of storage for the Raspberry Pi with FAT32 file system. Don't buy this card for your Pi unless you have really specific use-cases.....
What size are these cards? I have a genuine 256GB U3 card (70 MB/s reads on PC), but I'm getting ~10 MB/s hdparm buffered reads on the Pi3B+ (the same OS image on another card gives me ~20MB/s). Is it just this card or a general issue with larger cards?