SDCard Testing

From OLPC
Jump to navigation Jump to search

This page discusses additional tests for SD Cards. The 'base' tests are described in NAND_Testing.

Flashbench random I/O test procedure

Preparations

  1. On an XO with the latest stable OS release installed
  2. Download and compile flashbench from git://git.linaro.org/people/arnd/flashbench.git (or fetch a precompiled x86 version from http://dev.laptop.org/~martin/flashbench/flashbench )
  3. Download the flashbench wrapper script from http://dev.laptop.org/~martin/flashbench/run_test.sh , place it in the same directory as the flashbench executable

Procedure

  1. When booting the test bench machine, ensure no SD cards are present in the external slot
  2. Insert uSD card with adapter in the external slot
  3. Open a Sugar Terminal or GNOME Terminal
  4. run flashbench_sdtest.sh /dev/mmcblk1
  5. Copy output

Note: unfortunately as of May 2011 flashbench has a bug that prevents writing output to a file.

Cards tested

"A" SanDisk C2 4GB uSD
 NAME=SU04G
 OEMID=0x5344
 MANFID=0x000003
 HWREV=0x8
 FWREV=0x0
"A1" SanDisk C2 4GB uSD (mislabelled batch?)
 NAME=SU04G
 OEMID=0x5344
 MANFID=0x000003
 HWREV=0x8
 FWREV=0x0
"B" Toshiba (?) C4 4GB uSD
 NAME=SD
 OEMID=0x4144
 MANFID=0x00001d
 HWREV=0x1
 FWREV=0x0
"C" SanDisk C2 8GB uSD==
 NAME=SA08G
 OEMID=0x5344
 MANFID=0x000002
 HWREV=0x0
 FWREV=0x6

Results

Segment size vs throughput.

The first and last examples are based on numbers provided by Arnd Bergmann \

Size Sample High perf card A (C2-4GB) A1 (C2-4GB) B (C4-4GB) C (C2-8GB) Unusable card
4MiB 8.86M/s 3.14M/s 3.51M/s 5.84M/s 4.19M/s 15M/s
2MiB 6.3M/s 4.09M/s 2.9M/s 3.6M/s 2.59M/s 9.47M/s
1MiB 5.02M/s 2.84M/s 2.84M/s 2.21M/s 1.35M/s 4.47M/s
512KiB 5.16M/s 1.33M/s 2.45M/s 1.3M/s 649K/s 1.61M/s
256KiB 4.69M/s 868K/s 2.3M/s 701K/s 353K/s 849K/s
128KiB 3.78M/s 556K/s 2.02M/s 363K/s 180K/s 441K/s
64KiB 4.62M/s 297K/s 1.71M/s 186K/s 90.6K/s 226K/s
32KiB 2.71M/s 155K/s 1.29M/s 92K/s 45.7K/s 115K/s
16KiB 2.38M/s 76K/s 1.48M/s 47K/s 23.1K/s 57K/s
8KiB 1.24M/s 38K/s 923K/s 23K/s 11.7K/s 23K/s
4KiB 907K/s 19K/s 919K/s 11.8K/s 5.95K/s 8K/s

Technical discussion

Flashbench is useful to experimentally establish the operating parameters of the FTL embedded in an SD card. See https://wiki.linaro.org/WorkingGroups/Kernel/Projects/FlashCardSurvey for the author's own SD card survey.

In our case, we want to evaluate the suitability of an SD card for usage as the root filesystem of our Linux-powered laptops. The key factor is write/read performance in 4KB blocks as used by ext3/4, btrfs and other modern linux filesystems.

So the 4KiB row results are the strongest indicators of whether a particular SD card will be responsive under Linux.