Raspberry Pi microSD Card Shoot-out

1

Over the years I’ve used plenty of SD cards from various manufacturers at various prices. I never seem to have a spare card when I need one so I decided to buy a small selection and benchmark their performance. I was curious as to the differences and thought other people would be interested in the results.

The Cards

All the cards were new, microSD and, apart from the official NOOBs card, 16GB in capacity. I went for 16GB so they would be useful in the future in any other media devices while being a sensible price.

Brand – Model Capacity Class Price* Buy
Raspberry Pi microSD card Official Raspberry Pi NOOBs 8GB Class 10 £4.00 BUY
Kingston microSD card Kingston 16GB Class 10 £4.50 BUY
Samsung EVO microSD card Samsung EVO 16GB Class 10 £7.00 BUY
SanDisk microSD card SanDisk Ultra 16GB Class 10 £6.00 BUY
Toshiba microSD card Toshiba 16GB Class 10 £3.90 BUY

* The price is the amount I paid excluding post and packing. This obviously varies depending on supplier and what else you are ordering at the time. The Official Pi card was £5 delivered to my house while the others came from Amazon where the postage scheme is a bit more complicated!

The Tests

In order to give each card a fair chance I tested them on both my Windows 7 desktop PC, my Ubuntu laptop and a Raspberry Pi 2. On Windows I used CrystalDiskMark which is a free disk benchmark utility. On Ubuntu I used the standard “Disks” utility which has a benchmark facility. On the Pi I used the command line technique detailed on the RPi Wiki. The test sequence looked something like this :

  1. Format on Windows using SDFormatter
  2. Run H2testw to check capacity is genuine
  3. Run CrystalDiskMark on desktop PC
  4. Run benchmark on Ubuntu laptop
  5. Write latest Raspbian image using Win32DiskImager
  6. Boot on a Pi and run command line benchmarks

I used the same card readers and when I needed to use a microSD-SD converter I always used the one that came with the NOOBs card.

Fake Checking

There are lots of fake SD cards out there. I only purchase SD cards from sellers I trust but I tested all five cards using H2testw 1.4 to double check. Without checking using this tool you won’t be able to spot a fake card until it is too late. They all passed *phew*. As the checking involved writing over the entire card and then reading it all back I captured the read and write speeds reported after each test :

Brand – Model Capacity Write Speed (MB/s) Read Speed (MB/s) Rank
Raspberry Pi microSD card Official Raspberry Pi NOOBs 8GB 9.17  17.4  4th
Kingston microSD card Kingston 16GB 12.2 17.4 2nd
Samsung EVO microSD card Samsung EVO 16GB 8.91 17.6 5th
SanDisk microSD card SanDisk Ultra 16GB 9.55 17.9 3rd
Toshiba microSD card Toshiba 16GB 12.4 17.3 1st

CrystalDiskMark Results

Official Raspberry Pi NOOBs 8GB, Class 10

CrystalDiskMark NOOBs SD Card

Kingston 16 GB Class 10

CrystalDiskMark Kingston SD Card

Samsung EVO 16GB, Class 10

CrystalDiskMark Samsung EVO SD Card

SanDisk Ultra 16 GB, Class 10

CrystalDiskMark Sandisk Ultra SD Card

Toshiba 16GB, Class 10

CrystalDiskMark Toshiba SD Card

The table below shows the results :

Brand – Model Average Speed (MB/s) Rank
Raspberry Pi microSD card Official Raspberry Pi NOOBs 40.257 2nd
Kingston microSD card Kingston 33.119 5th
Samsung EVO microSD card Samsung EVO 39.042 4th
SanDisk microSD card SanDisk Ultra 44.000 1st
Toshiba microSD card Toshiba 38.221 3rd

Ubuntu Disk Benchmarking

The Ubuntu “Disks” utility includes a feature to “Benchmark Partition”. I ran this test using 100 samples/1MB sample size. The table below shows the results :

Brand – Model Read Speed (MB/s) Write Speed (MB/s) Average (MB/s) Rank
Raspberry Pi microSD card Official Raspberry Pi NOOBs  17.4  3.5 10.45  2
Kingston microSD card Kingston 5
Samsung EVO microSD card Samsung EVO 17.3  3.3 10.30 3
SanDisk microSD card SanDisk Ultra 17.6 15.9 16.75 1
Toshiba microSD card Toshiba 17.5  2.9 10.20 4

Raspbian Command Line Results

The final test was booting the card in a Raspberry Pi 2, extracting the device’s CID and then running some basic benchmarking. The commands for doing this are documented in the RPiWiki.

To read the card’s CID I used :

cd /sys/class/mmc_host/mmc?/mmc?:*
echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"

To measure the write speed :

sync; dd if=/dev/zero of=~/test.tmp bs=500K count=1024

To measure the read speed :

sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
sync; time dd if=~/test.tmp of=/dev/null bs=500K count=1024

Finally I deleted the temporary file created by the above commands.

rm ~/test.tmp

The table below shows the results :

Brand – Model Device CID Write Speed (MB/s) Read Speed (MB/s) Rank
Raspberry Pi microSD card Official Raspberry Pi NOOBs man:0x000003 oem:0x5344 name:SL08G hwrev:0x8 fwrev:0x0 9.4 19.0 5th
Kingston microSD card Kingston man:0x000027 oem:0x5048 name:SD16G hwrev:0x3 fwrev:0x0 12.0 17.7 3rd
Samsung EVO microSD card Samsung EVO man:0x00001b oem:0x534d name:00000 hwrev:0x1 fwrev:0x0 10.6 18.9 4th
SanDisk microSD card SanDisk Ultra man:0x000003 oem:0x5344 name:SL16G hwrev:0x8 fwrev:0x0 12.6 19.0 2nd
Toshiba microSD card Toshiba man:0x000002 oem:0x544d name:SA16G hwrev:0x2 fwrev:0x2 16.0 17.6 1st

The Conclusion

Averaging the ranks in all tests gives up the final ranking :

Card Rank
SanDisk Ultra 16GB 1st
Toshiba 16GB 2nd
Official NOOBs (SanDisk 8GB) 3rd
Samsung EVO 16GB 4th
Kingston 16GB 4th

What my tests showed was that there is very little difference between the cards. I would be happy to use any of them in my Pi projects. Some of the differences are so slight I’m not sure I would ever notice in reality.

  • The cost of the card made no real difference to its performance. Why pay £7 for the Samsung EVO when the Toshiba is almost half the price?
  • The Kingston did badly in my “Ubuntu” test because the benchmarking utility threw an error with this card and I was unable to get any results.
  • The SanDisk Ultra only stole 1st place from the Toshiba due to the big difference in Write speed on the Ubuntu test.
  • How you judge the cards may determine on how relevant you think my tests are to real-world performance on the Pi. However even if you discard one of the tests (ie the Crystalmark under Windows) the top three are the same.

If I need more cards I would be happy picking one of the top three depending on availability and postage charges. The Samsung EVO and Kingston aren’t bad cards but I’ve just got no reason to favour them over the others.

Share.

1 Comment

Leave A Reply