Sunday, March 15, 2015

Not all MicroSD cards are equal

I have a bunch of credit card size single board computers tp play around like the Raspberry Pi, Beaglebone black, Odroid-C1 and Banana PRO. One item that I have to procure with every SBC is the Flash storage for the OS and applications i.e. the Micro SDHC card. It becomes critical to bootup time and run-time operation as Linux depends heavily on the disk access.

Bit I just discovered that not all cards are made equal. Two reputed brands available in India are Sandisk (Sandisk Ultra Class 10 UHS-1) & Kingston (8 GB class 10 UHS-1). I compared the performance of the SD cards on the Beaglebone Black and the PC (with Bitfenix USB 3.0 internal card reader, Core i7-2600K, 8 GB RAM) and here are are my observations:


  1. Sandisk  card gave a sustained performance of about 19.2 MB/s for sequential reads on the beaglebone Black and 22 MB/s on a PC
  2. Kingston card gave a sustained performance of about 12.5 MB/s read for sequential reads on a beaglebone Black
  3. A Samsung 840 EVO SSD can give a sequential read performance of 66 MB/s
  4. A Western Digital RE black enterprise drive can give a sequential read performance of about 95 MB/s


The Test was done using a simple command:

sudo hdparm -t [flash-device-Name] 

So my first conclusion is that not all SD cards are equal. Though the kingston and Sandisk cards are both rated class 10 and UHS-1, the sandisk one is about 50% faster than the Kingston. I found that many buyers on amazon have also complained on relatively slow real life performance of kingston cards in their smartphones. So I would recommend that SBC buyers faced with a choice nbetween these two cards opt for the Sandisk make.

Secondly the expect a performance drop of about 15% when moving an SD card for PC to any SBC. This is not so significant.

And Thirdly if you are moving an I/O intensive (bound) application from Linux PC to Linux SBC, then expect a 3-5 times drop in I/O performance (considering you are using the better sandisk cards). Of course the beaglebone black and Raspberry Pi can generate data at no more than theoretical 12.5 MB/s on the Ethernet port but it could generate more faster internally. But the Odroid-C1 and Banana-PRO have GbE interfaces that theoretically can receive 125 MB/s and for them a slow card will only restrict their capability

Also, its worth noting that when I connected an old 2.5" Hitachi drive (model 5K320-160) to a Banana PRO SBC, using the board's SATA interface,  the hdparm test gave a result of 52 MB/s. Possibly a USB 2.0 connected drive may give around 30 MB/s while an SSD connected to SATA may give 90-100 MB/s. So my final conclusion about storage mediums speeds on SBC are:

SATA SSD > SATA HDD > USB SSD/HDD > Flash Storage

Many boards do not feature SATA and therefore Flash and USB SSD/HDD are the only available options. Most will not even boot USB drive easily.