MicroSD Cards: Picking the right one, experiences and benchmarks

I’m trying to find out what kind of MicroSD cards have the right qualities for especially Raspberry Pi deployments.

  • Price: If a card is cheap, one can easily buy a replacement
  • Speed: The faster random read times, the better
  • Durability: SD cards do fail, but how fast? Are they sensitive to the environment?

An interesting benchmark comparison can be found here: http://www.pidramble.com/wiki/benchmarks/microsd-cards

The parameters mentioned in the benchmark are:

  • hdparm buffered: A buffer is part of the drive controller, and the operating system controls this. It may not be relevant for large read jobs, but it can be a speed factor for instance for the operating system and database access.
  • dd write: A raw write of lots of data, this is possibly the correct benchmark to understand when seeding a card with new data, i.e. when you mass-copy gigabytes of Kolibri content
  • dd rand read: This is probably the most important part, since Kolibri will serve random content from gigabytes of data, and the buffer system will not be very useful, since a classroom full of students will request way beyond what the buffer can optimize for.
  • dd rand write: This is interesting if storing the Kolibri user database on the SD card.

Alternatives: When deploying to a device like the Raspberry Pi, we may also choose not to store data from Kolibri etc. on a MicroSD. It is also possible to connect faster and more durable HDD/SSD devices via USB.

Updating this topic w/ input from @jredrejo

  • hdparm buffered: The Linux kernel deposits the data retrieved from the hard drive into a buffer. When reading using the buffer a real situation is reproduced but it does not give the accurate speed of the disk. To determine the speed of the unadorned drive, you can force Hdparm to read the data directly from the disk, so you can see the pure transmission rate of the disk. The buffer is part of the hardware of the SD disk.