Небольшой тест microSD карт для Raspberry Pi



    Обычный пользователь, когда возникает необходимость приобрести карту памяти формата 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 в Убунту была значительной.

    Комментарии 13

      0
      Бывают проблемы с совместимостью. У меня, к примеру, raspberry pi B не грузилась с полностью рабочей microsd transcend 16gb, но загрузилась с какой-то старинной qumo 16gb.
      Да и в «hcl» достаточно много про проблемные карты написано.
        0
        а еще более важно вопрос надежности, только тестировать сложно, ведь помимо количества перезаписей может глючить банально электроника.
          0
          Только сегодня заказал. Хорошо, что на SanDisk остановился. Спасибо!
            +2
            К сожалению, это не тест, а ерунда. Для линукса и ext3/4 важные параметры это скорость произвольного чтения/записи и количество allocation unit-ов (грубо говоря, количество одновременных потоков линейной записи). У большинства консьюмерских карточек с этим очень грустно, потому что они сделаны для всяких фотоаппаратов.

            Мы когда подбирали для наших контроллеров карточки в комплект, протестировали штук 20 карточек, и с тех пор тестировали каждую партию: всего 30 разных карточек. Прикладных результата два:
            1) в двух оригинальных карточках с одним названием могут оказаться два очень разных контроллера, поэтому тестировать нужно каждую партию
            2) внезапно Transcend и Samsung
              0
              было бы очень интересно посмотреть на результаты ваших тестов.
              p.s. можно ли узнать информацию о производителе чипов карточки программным способом?
                0
                Всё никак не соберусь написать. Результаты особого практического интереса не представляют, потому что даже конкретное название и вид упаковки не гарантируют, что внутри будут нужные карточки. Во-первых есть подделки, во-вторых сами производители постоянно меняют контроллеры. У нас последнее время был алгоритм такой: купить 5 одинаковых карточек в проверенном магазине, протестировать все, если всё ок — покупать партию. Последния партия была с маркировокой «TS8GUSDHC10 (premium, 93-3622, v1.6)».

                Про производителя: скорее нет, чем да. В посте есть команда, которая выводит служебную информацию о карточке. Там, в частности, есть дата производства, название карты и код производителя. Но никакой корреляции с характеристиками карточки я не заметил, эти значения просто забиваются при прошивке контроллеров карточек.
                  0
                  Узнать можно, только информативность этих данных стремится к нулю. Флешка ответит то, что вбито в её контроллер. Если хитрый китаец в подвальном цеху на задворках Шанхая забьёт туда «Samsung» — флешка скажет вам, что она Samsung, и попробуйте доказать обратное.
                +1
                Не могли бы расшифровать вот это —
                это скорость произвольного чтения/записи и количество allocation unit-ов (грубо говоря, количество одновременных потоков линейной записи).


                AU это всего лишь размер кластера, насколько понимаю. И почему надо говорить грубо? Напишите точно, как это на SD карту что либо можно писать одновременно?
                  +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 и прочего, скрипты и результаты тут.
                    0
                    Спасибо. Это то, что я давно искал.
                  0
                  Шутки-шутками, но у меня Sandisk стабильно по тестам на первое место выходят. Даже если кому-то уступают по скорости, то вырываются по соотношению цена/скорость
                    0
                    У меня уже 3 карты умерло на малинке. Подозреваю, что причина либо в непредвиденном отключении питания, либо в исчерпании циклов чтения-записи.
                    А usb-hdd напрямую к малине не подключить — не хватает питания. В итоге приходится какой-то колхоз городить =(
                      0
                      С концами умерло, или только файловая система посыпалась? А то я читал про случаи, когда малинка при сбое питания портила ФС, но после форматирования карточка оживала.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое