Обычный пользователь, когда возникает необходимость приобрести карту памяти формата microSD, особо не задумывается. Пользователь идет в магазин электроники и говорит «дайте мне карту памяти microSD». Какую? Да все равно, карту памяти и все тут.

Но на самом деле характеристики карт памяти одного и того же формата могут быть весьма различны — думаю, на Geektimes это объяснять не нужно. Но это если карты разных классов. А что, если взять равные по классу карты? Давайте посмотрим на результаты бенчмарка различных карт памяти (список небольшой, всего 5 штук). Понятно, что сравнивать карты различных классов было бы некорректно, поэтому взят Class 10.



Сам тест проводился пользователем сайта о «малинках» вот здесь.

Как и какие тесты проводились?


Для того, чтобы обеспечить каждой карте равные условия, был взят десктопный ПК под управлением Windows 7, ноутбук с Ubuntu и Raspberry Pi 2. На десктопе использовалась утилита CrystalDiskMark. На ноутбуке — штатный инструмент «Disks». На Pi 2 — командная строка и тест, описанный здесь.

Последовательность:
  • 1. Форматирование под Windows с использованием SDFormatter;
  • 2. Проверка при помощи H2testw;
  • 3. Бенчмарк CrystalDiskMark на декстопе;
  • 4. Бенчмарк на Ubuntu;
  • 5. Запись Raspbian c использованием Win32DiskImager;
  • 6. Загрузка Pi и работа с командной строкой.


Проверка оригинальности модели тоже выполнялась, поскольку на рынке сейчас очень много карт памяти от ноунейм производителей с удручающими характеристиками, но с нанесенной маркировкой известных компаний.

Для того, чтобы убедиться в том, что карта именного того производителя, который заявлен, использовалась утилита H2testw 1.4.

Вот, что получилось:


Результаты работы с CrystalDiskMark:


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

Результаты сведены в единую табличку:



Ubuntu Disk





Raspbian



Финальный тест проводился с командной строкой ОС Rasbian и рядом команд.

Для чтения CID карты использовалась такая команда:

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


Проверка записи:

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

Проверка чтения:

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


Удаление временного файла, созданного при выполнении предыдущих команд:

rm ~/test.tmp



Заключение



Исходя из результатов всех трех тестов, мы наблюдаем следующую картину (места от 1 по 5):

1. SanDisk Ultra 16GB
2. Toshiba 16GB
3. Official NOOBs (SanDisk 8GB)
4. Samsung EVO 16GB и Kingston 16GB

Производительность карты памяти практически не зависит от цены карты. Зачем платить больше?
С Kingston случились проблемы при тестировании под Убунту, поэтому результаты в этом тесте получить не удалось;
Карта SanDisk Ultra заняла первое место только потому, что разница скорости чтения с Toshiba в Убунту была значительной.

Комментарии (12)


  1. aik
    12.12.2015 12:42

    Бывают проблемы с совместимостью. У меня, к примеру, raspberry pi B не грузилась с полностью рабочей microsd transcend 16gb, но загрузилась с какой-то старинной qumo 16gb.
    Да и в «hcl» достаточно много про проблемные карты написано.


  1. rPman
    12.12.2015 15:20

    а еще более важно вопрос надежности, только тестировать сложно, ведь помимо количества перезаписей может глючить банально электроника.


  1. s4z
    12.12.2015 17:07

    Только сегодня заказал. Хорошо, что на SanDisk остановился. Спасибо!


  1. evgeny_boger
    12.12.2015 20:14
    +2

    К сожалению, это не тест, а ерунда. Для линукса и ext3/4 важные параметры это скорость произвольного чтения/записи и количество allocation unit-ов (грубо говоря, количество одновременных потоков линейной записи). У большинства консьюмерских карточек с этим очень грустно, потому что они сделаны для всяких фотоаппаратов.

    Мы когда подбирали для наших контроллеров карточки в комплект, протестировали штук 20 карточек, и с тех пор тестировали каждую партию: всего 30 разных карточек. Прикладных результата два:
    1) в двух оригинальных карточках с одним названием могут оказаться два очень разных контроллера, поэтому тестировать нужно каждую партию
    2) внезапно Transcend и Samsung


    1. rPman
      12.12.2015 22:06

      было бы очень интересно посмотреть на результаты ваших тестов.
      p.s. можно ли узнать информацию о производителе чипов карточки программным способом?


      1. evgeny_boger
        12.12.2015 22:13

        Всё никак не соберусь написать. Результаты особого практического интереса не представляют, потому что даже конкретное название и вид упаковки не гарантируют, что внутри будут нужные карточки. Во-первых есть подделки, во-вторых сами производители постоянно меняют контроллеры. У нас последнее время был алгоритм такой: купить 5 одинаковых карточек в проверенном магазине, протестировать все, если всё ок — покупать партию. Последния партия была с маркировокой «TS8GUSDHC10 (premium, 93-3622, v1.6)».

        Про производителя: скорее нет, чем да. В посте есть команда, которая выводит служебную информацию о карточке. Там, в частности, есть дата производства, название карты и код производителя. Но никакой корреляции с характеристиками карточки я не заметил, эти значения просто забиваются при прошивке контроллеров карточек.


      1. Raegdan
        13.12.2015 12:08

        Узнать можно, только информативность этих данных стремится к нулю. Флешка ответит то, что вбито в её контроллер. Если хитрый китаец в подвальном цеху на задворках Шанхая забьёт туда «Samsung» — флешка скажет вам, что она Samsung, и попробуйте доказать обратное.


  1. Indemsys
    13.12.2015 11:13
    +1

    Не могли бы расшифровать вот это —

    это скорость произвольного чтения/записи и количество allocation unit-ов (грубо говоря, количество одновременных потоков линейной записи).


    AU это всего лишь размер кластера, насколько понимаю. И почему надо говорить грубо? Напишите точно, как это на SD карту что либо можно писать одновременно?


    1. evgeny_boger
      13.12.2015 14:52
      +2

      Прошу прощения за резкость, просто в тесте действительно измеряют не те параметры, которые важны.

      AU — это не размер кластера, это примерно соответствует erase block.
      Я говорил не о количестве AU как таковом, а о максимальном количестве одновременно открытых AU. Карточки делают wear leveling внутри вот этого AU, и получается, что операции чтения/записи работают быстрее внутри того блока, который сейчас открыт контроллером. Одновременность тут в том смысле, что вы можете попеременно писать условно в пределах пяти блоков (fat, журнал, ещё что-нибудь) и контроллер будет держать все 5 блоков «открытыми» если вы попытаетесь начать писать ещё и в шестое место, а у контроллера max open AU = 5, то скорость резко просядет. Соответственно, если вы нарвались на карточку, у которой max open AU < 5, то журналируемая ФС будет тормозить. Судя по нашим тестам, у нормальных карточек это число точно больше семи, и возможно в них вообще этого эффекта нет.

      Вообще тема это очень сложная, и я в ней разбираюсь очень поверхностно. Подробная информация есть тут:
      wiki.linaro.org/WorkingGroups/KernelArchived/Projects/FlashCardSurvey
      и в докладе Arnd Bergmann(слайды).

      Есть отличная утилита flashbench, которая всё это меряет.
      Наши тесты — это враппер вокруг flashbench, dd и прочего, скрипты и результаты тут.


      1. Indemsys
        14.12.2015 10:34

        Спасибо. Это то, что я давно искал.


  1. Maslukhin
    15.12.2015 12:10

    Шутки-шутками, но у меня Sandisk стабильно по тестам на первое место выходят. Даже если кому-то уступают по скорости, то вырываются по соотношению цена/скорость


  1. swelld
    16.12.2015 00:21

    У меня уже 3 карты умерло на малинке. Подозреваю, что причина либо в непредвиденном отключении питания, либо в исчерпании циклов чтения-записи.
    А usb-hdd напрямую к малине не подключить — не хватает питания. В итоге приходится какой-то колхоз городить =(