Results Explorer

Choose a card:

Performance Stats

0
Cards tested
Average Sequential Read SpeedThe average speed at which the card was able to read data in a sequential fashion. Cards were tested by attempting to read as much data as possible, in a linear fashion starting at the beginning of the card, over a 30-second period. Cards were tested using a USB 3.0-enabled card reader.
Average Sequential Write SpeedThe average speed at which the card was able to write data in a sequential fashion. Cards were tested by attempting to write as much data as possible, in a linear fashion starting at the beginning of the card, over a 30-second period. Cards were tested using a USB 3.0-enabled card reader.
Average Random Read SpeedThe average speed at which the card was able to read data from the card in a random fashion. Cards were tested by attempting to perform as many 4KB read operations as possible, from randomly selected 4KB-aligned locations across the entire card, over a 30-second period. Cards were tested using a USB 3.0-enabled card reader. It should be noted that (a) this method of random testing does not follow the SD specification's prescribed method for Application Performance Class testing, and (b) the card readers I use do not support command queueing, which is required for Application Performance Class 2 (if the card supports it). Therefore, if a result indicates that card does not meet the results of a given Application Performance Class, it should not be taken as an indication that the card does not qualify for that Application Performance Class.
Average Random Write SpeedThe average speed at which the card was able to write data to the card in a random fashion. Cards were tested by attempting to perform as many 4KB write operations as possible, from randomly selected 4KB-aligned locations across the entire card, over a 30-second period. Cards were tested using a USB 3.0-enabled card reader. It should be noted that (a) this method of random testing does not follow the SD specification's prescribed method for Application Performance Class testing, and (b) the card readers I use do not support command queueing, which is required for Application Performance Class 2 (if the card supports it). Therefore, if a result indicates that a card does not meet the requirements of a given Application Performance Class, it should not be taken as an indication that the card does not qualify for that Application Performance Class.
= Below 50th percentile = 50th to 75th percentile = Above 75th percentile

Endurance Stats

0
Cards currently in testing
0
Cards completed testing
Average Rounds CompletedThe average number of read/write cycles that the selected model of card has completed so far. A read/write cycle consists of two passes: in the first pass, the entire user area of the card is overwritten with random data; in the second pass, the data is read back and compared to what was originally written.
Average Time in Testing

Time to First FailureThe number of read/write cycles a card was able to complete before either (a) the first error that prevented the data from being read back, or (b) the first instance of a data mismatch (excluding instances where device mangling was confirmed). This does not include any cards that have not yet experienced their first error, but does include any cards that failed completely before experiencing their first error. While well-made cards (especially industrial-grade cards) tend to experience their first error later, I think that at least some of these errors may be due to issues with the card readers or the USB stack — therefore, I think that the "Time to 0.1% Failure" metric is a better indicator of a card's reliability.

0
Cards experienced first failure
Average Time to First Failure

Time to 0.1% FailureThe number of read/write cycles a card was able to complete before 0.1% of the sectors on the card were flagged as "bad". Sectors are flagged as "bad" if (a) an error occurs that prevents the data from being read back, or (b) if the data read back does not match the data originally written (and is not a device mangling error). This does not include any cards that have not yet reached the 0.1% failure threshold, but does include any cards that failed completely before reaching this threshold. This threshold was arbitrarily chosen, but is intended to reflect the point where a user would be likely notice that something was wrong with the card.

0
Cards reached 0.1% failure
Average Time to 0.1% Failure

Time to 1% FailureThe number of read/write cycles a card was able to complete before 1% of the sectors on the card were flagged as "bad". Sectors are flagged as "bad" if (a) an error occurs that prevents the data from being read back, or (b) if the data read back does not match the data originally written (and is not a device mangling error). This does not include any cards that have not yet reached the 1% failure threshold, but does include any cards that failed completely before reaching this threshold.

0
Cards reached 1% failure
Average Time to 1% Failure

Time to 10% FailureThe number of read/write cycles a card was able to complete before 10% of the sectors on the card were flagged as "bad". Sectors are flagged as "bad" if (a) an error occurs that prevents the data from being read back, or (b) if the data read back does not match the data originally written (and is not a device mangling error). This does not include any cards that have not yet reached the 10% failure threshold, but does include any cards that failed completely before reaching this threshold.

0
Cards reached 10% failure
Average Time to 10% Failure

Time to 25% FailureThe number of read/write cycles a card was able to complete before 25% of the sectors on the card were flagged as "bad". Sectors are flagged as "bad" if (a) an error occurs that prevents the data from being read back, or (b) if the data read back does not match the data originally written (and is not a device mangling error). This does not include any cards that have not yet reached the 25% failure threshold, but does include any cards that failed completely before reaching this threshold.

0
Cards reached 25% failure
Average time to 25% failure

Time to 50% failureThe number of read/write cycles a card was able to complete before 50% of the sectors on the card were flagged as "bad". Sectors are flagged as "bad" if (a) an error occurs that prevents the data from being read back, or (b) if the data read back does not match the data originally written (and is not a device mangling error). This does not include any cards that have not yet reached the 50% failure threshold, but does include any cards that failed completely before reaching this threshold.

0
Cards reached 50% failure
Average Time to 50% Failure
= Below 50th percentile = 50th to 75th percentile = Above 75th percentile
Whoops! Something went wrong while loading the data. Please try again later or try a different card.

6 Replies to “Results Explorer”

  1. Hello Matt
    First of all: thank you so much for your excellent work!
    So one question to above SD Card, Kingston industrial grade, 8GB: I see the Average Rounds Completed 92188. So when I look into the datasheet, I can see 30k P/E cycles, so your tests show over three times more. How can you explain that?

    Another question concerns for your mfst tool on github: I tested it and it feels great! One thing that does not work for me is the datalogging to a mysql DB. I try with following:
    mfst /dev/mmcblk1 -n –dbhost 10.12.1.22 –dbuser user –dbpass pass –dbname sdcard_mfst_test1 –cardname blue
    => no data is written to the DB. First I just defined a DB on my Server without tables, then I also tried it with your dump of a table mfst.sql. The logging is not working. After the above command it just hangs on my cli. If DB data arent correct your program starts at least with some output, and fails then because of the bad DB connection. Any idea?

    Br. Reto

    1. Hey Reto!

      A couple of things to check:

      1. Did the configure script find your MariaDB library? You can check by looking at the config.h file in the build directory — if you see “#define HAVE_MARIADB” (and it’s not commented out), then it found it. If not, it didn’t.
      2. Is the program spitting out any log messages from any of the sql_thread_* functions?
    2. Hey Reto!

      I just realized that I completely skipped over one of your questions.

      So one question to above SD Card, Kingston industrial grade, 8GB: I see the Average Rounds Completed 92188. So when I look into the datasheet, I can see 30k P/E cycles, so your tests show over three times more. How can you explain that?

      I think manufacturers make a risk assessment when deciding how many P/E cycles to rate a card for. What do I mean by that? Cards are going to last a variable number of P/E cycles. Let’s say you’re manufacturing a new card, and you have no idea how many P/E cycles to rate the card for. So you manufacture 100,000 of them, and you put them all through endurance testing. If you plot a histogram of the results, it’s going to look something like this:

      E.g., about 80% of your cards will last well beyond 100,000 P/E cycles — but the remaining 20% won’t. A few will be dead on arrival or won’t even last 1,000 P/E cycles. (That’s unavoidable — it’s just a fact of life.) Now you’ve got a decision to make: if you rate these cards for 100k P/E cycles, you’re going to get a lot of complaints from customers when their cards don’t make it to 100,000 P/E cycles. You’re going to have a lot of returns to deal with and your reputation is going to take a hit. If you rate them too low, however — say, for only 5k P/E cycles — your product will be seen as an inferior product and it likely won’t sell very well. So the manufacturer tries to strike a balance between the two: if they rate the card for 30k P/E cycles, it keeps the expected number of returns to a manageable level while still making the product look good.

      Long story short: I think Kingston knew that most of their cards would last well beyond 30,000 P/E cycles, but they set the bar at 30,000 to keep the number of defects to a manageable level.

  2. Hey Matt! It looks like the sandisk industrial you tested was an MLC version. You said it was rated for 384TBW, but I think that’s for their 128gb version. Your 8gb card should have 1/16th the 128gb micro SD cards rated endurance, right? Doesn’t that mean it should just be rated for like…24tbw? Also, they have their Sandisk industrial SLC version. I saw Kingston’s industrial version is pSLC, it’d be interesting to see those two pitted against each other! I just looked up an article praising the reliability of pSLC, but it’d be interesting to see the difference against real SLC.

    1. Hey Isaac!

      I guess that’s a fair point — the data sheet does say “Up to 384 TBW”. I wish they’d get more specific than that and list out the expected endurance for each size. But anywho…

      The Kingston Industrial’s are doing really well! Occasionally they will have address decoding errors that affect 4 sectors at a time (that’s where two sectors mysteriously swap places with two other sectors) — but it hasn’t been very prevalent, and they’ve been chugging along nicely. Two out of the three have done about 107,000 read/write cycles (which equates to about 860 TBW); the third one is lagging behind a little bit, but it’s still doing well: it’s at about 78,500 read/write cycles (or about 631 TBW).

Leave a Reply to Reto Cancel reply

Your email address will not be published. Required fields are marked *