Низкая скорость чтения записи карты памяти на смартфоне что это
Увеличиваем скорость чтения sd-карты
Скорость чтения карты памяти варьируется в зависимости от ее класса. Но многих постигает разочарование, сравнивая скорость работы карты на компьютере и на устройстве с Андроидом. Один из весьма подкованных участников XDA форума brainmaster утверждает.
Скорость чтения карты памяти варьируется в зависимости от ее класса. Но многих постигает разочарование, сравнивая скорость работы карты на компьютере и на устройстве с Андроидом. Один из весьма подкованных участников XDA форума brainmaster утверждает, что будь у тебя SD карта 10-ого класса — всё равно вся соль в кеше.
Кеш для чтения карты памяти в Андроид по умолчанию установлен значением 128kb, а некоторые прошивки имеются даже 4kb!
Чтобы проверить это значение на своем устройстве вам нужно открыть файл to /sys/devices/virtual/bdi/179:0/read_ahead_kb. Это число можно изменять вручную, но таким образом оно будет действовать только до перезагрузки. Чтобы сделать значение постоянным, придется постоянно загружать скрипт при загрузке телефона через init.d. Товарищ с XDA подготовил CWM.zip архив для облегчения этой операции.
От себя замечу, что архив подходит для прошивки через ClockworkMod Recovery и доступен для загрузки с форума XDA. Для тех, у кого не установлено модифицированное рекавери, в топике на форуме имеются альтернативные рецепты для изменения размера кеша вручную через консоль.
Для моего HTC Desire HD с картой памяти на 8GB Transcend class 6 оптимальным оказалось значение кеша 3072.
Собственно, на скриншоте видны результаты тестов карты памяти с этим значением кеша в SD Tools и SD Card Speed Test соотвественно. Можно заметить, что обе программы выдают немного странные и фантастические результаты. Но у меня скорость чтения с карты памяти точно увеличилась. Это видно невооруженным взглядом, к примеру, в галерее.
Но по множеству сообщений на форуме XDA было решено, что оптимальное значение для большинства карт все же 2048.
Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? 😉
Или закинуть денег на зарплату авторам.
Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.
Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.
Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.
Поговорить?
Уже наговорили:
zeleboba:
@ASD: нет-нет, как раз ничего не впариваем, а просто сделали перевод статьи с XDA, чуть дополнив его своими комментариями и наблюдениями, чтобы обсудить с остальными. Потому что тема интересна 🙂
ASD:
Это будет работать на коротких повторяющихся операциях чтения/записи опять же пока это вмещается в кеш, и пока эти данные в кеше. Далее если были операции на запись, они должны быть выполнены реально и тормоза вернуться.
Так же с чтением.
Галерея стала шустрее только после того как было считывание в кеш, само считывание как было медленным так и осталось.
Не забывайте еще что кеш занимает память причем не выгружаемую, хотя это мелочи.
PS Хотите быструю галерею, используйте QuickPic, гораздо быстрее.
zeleboba:
@gren: @ASD: спасибо за комментарии. Теперь я лучше стал понимать принцип работы кеша в Android.
@Dreamer. : да, попробовал. Шустрее. Но все же останусь на стандартной галерее. Тем более, что вообще в галерею не часто лазить приходится 🙂
Всё, что вам нужно знать об SD-картах памяти, чтобы не облажаться при покупке
Если вы думаете, что при покупке карт памяти для своих гаджетов нужно смотреть только на поддерживаемый формат и объём, придётся вас расстроить. Учитывать следует как минимум пять важных моментов.
Для большинства людей microSD — это лишь форм-фактор, но на самом деле это не так. Вы без проблем сможете вставить любую microSD-карту в стандартный слот, но далеко не каждая из них будет работать, поскольку карты различаются по множеству признаков.
Всего существует три различных формата SD, доступных в двух форм-факторах (SD и microSD):
SD (microSD) — накопители объёмом до 2 ГБ, работают с любым оборудованием;
SDHC (microSDHC) — накопители от 2 до 32 ГБ, работают на устройствах с поддержкой SDHC и SDXC;
SDXC (microSDXC) — накопители от 32 ГБ до 2 ТБ (на данный момент максимум 512 ГБ), работают только на устройствах с поддержкой SDXC.
Как видите, обратной совместимости у них нет. Карты памяти нового формата на старом оборудовании работать не будут.
Заявленная производителем поддержка microSDXC не означает поддержку карт этого формата с любым объёмом и зависит от конкретного устройства. Например, HTC One M9 работает с microSDXC, но официально поддерживает только карты до 128 ГБ включительно.
С объёмом накопителей связан ещё один важный момент. Все карты microSDXC используют по умолчанию файловую систему exFAT. Windows поддерживает её уже более 10 лет, в OS X она появилась начиная с версии 10.6.5 (Snow Leopard), в Linux-дистрибутивах поддержка exFAT реализована, но «из коробки» работает далеко не везде.
Высокоскоростной интерфейс UHS
Карты форматов SDHC и SDXC могут поддерживать интерфейс Ultra High Speed, который при наличии аппаратной поддержки на устройстве обеспечивает более высокие скорости (UHS-I до 104 МБ/с и UHS-II до 312 МБ/с). UHS обратно совместим с более ранними интерфейсами и может работать с не поддерживающими его устройствами, но на стандартной скорости (до 25 МБ/с).
Классификация скорости записи и чтения microSD-карт так же сложна, как их форматы и совместимость. Спецификации позволяют описывать скорость карт четырьмя способами, и, поскольку производители используют их все, возникает большая путаница.
К классу скорости (Speed Class) привязана минимальная скорость записи на карту памяти в мегабайтах в секунду. Всего их четыре:
Class 2 — от 2 МБ/с;
Class 4 — от 4 МБ/с;
Class 6 — от 6 МБ/с;
Class 10 — от 10 МБ/с.
У карт, работающих на высокоскоростной шине UHS, пока всего два класса скорости:
Class 1 (U1) — от 10 МБ/с;
Class 3 (U3) — от 30 МБ/с.
Поскольку в обозначении класса скорости используется минимальное значение записи, то теоретически карта второго класса вполне может быть быстрее карты четвёртого. Хотя, если это будет так, производитель, скорее всего, предпочтёт более явно указать этот факт.
Класса скорости вполне достаточно для сравнения карт при выборе, но некоторые производители помимо него используют в описании максимальную скорость в МБ/с, причём чаще даже не скорость записи (которая всегда ниже), а скорость чтения.
Обычно это результаты синтетических тестов в идеальных условиях, которые недостижимы при обычном использовании. На практике скорость зависит от многих факторов, поэтому не стоит ориентироваться на эту характеристику.
Ещё один вариант классификации — это множитель скорости, подобный тому, который использовался для указания скорости чтения и записи оптических дисков. Всего их более десяти, от 6х до 633х.
Множитель 1х равен 150 КБ/с, то есть у простейших 6х-карт скорость равна 900 КБ/с. У самых быстрых карт множитель может быть 633х, что составляет 95 МБ/с.
Правильно выбирать карту с учётом конкретных задач. Самая больша́я и самая быстрая не всегда лучшая. При определённых сценариях использования объём и скорость могут оказаться избыточными.
При покупке карты для смартфона объём играет большую роль, чем скорость. Плюсы большого накопителя очевидны, а вот преимущества высокой скорости передачи на смартфоне практически не ощущаются, поскольку там редко записываются и считываются файлы большого объёма (если только у вас не смартфон с поддержкой 4K-видео).
Камеры, снимающие HD- и 4K-видео, — это совсем другое дело: здесь одинаково важны и скорость, и объём. Для 4K-видео производители камер рекомендуют использовать карты UHS U3, для HD — обычные Class 10 или хотя бы Class 6.
Для фото многие профессионалы предпочитают пользоваться несколькими картами меньшего объёма, чтобы минимизировать риск потери всех снимков в форс-мажорных обстоятельствах. Что до скорости, то всё зависит от формата фото. Если вы снимаете в RAW, есть смысл потратиться на microSDHC или microSDXC класса UHS U1 и U3 — в этом случае они раскроют себя в полной мере.
Как бы банально это ни звучало, но купить подделку под видом оригинальных карт сейчас проще простого. Несколько лет назад SanDisk заявляла, что треть карт памяти SanDisk на рынке является контрафактной. Вряд ли ситуация сильно изменилась с того времени.
Чтобы избежать разочарования при покупке, достаточно руководствоваться здравым смыслом. Воздерживайтесь от покупки у продавцов, не заслуживающих доверия, и остерегайтесь предложений «оригинальных» карт, цена которых значительно ниже официальной.
Злоумышленники научились подделывать упаковку настолько хорошо, что порой её бывает очень сложно отличить от оригинальной. С полной уверенностью судить о подлинности той или иной карты можно лишь после проверки с помощью специальных утилит:
H2testw — для Windows;
F3 — для Mac и Linux.
Если вы уже сталкивались с потерей важных данных из-за поломки карты памяти по той или иной причине, то, когда дело дойдёт до выбора, вы, скорее всего, предпочтёте более дорогую карту известного бренда, чем доступный «ноунейм».
Помимо большей надёжности и сохранности ваших данных, с брендовой картой вы получите высокую скорость работы и гарантию (в некоторых случаях даже пожизненную).
Теперь вы знаете об SD-картах всё, что необходимо. Как видите, есть много вопросов, на которые вам придётся ответить перед покупкой карты. Пожалуй, наилучшей идеей будет иметь различные карты для различных нужд. Так вы сможете использовать все преимущества оборудования и не подвергать свой бюджет лишним расходам.
Медленная работа SD карточек — кто виноват и что делать?
Давно думал написать статью на Хабр, но все как-то не решался. Хотя и кажется, что есть мысли, которые были бы небезинтересны сообществу, но останавливает предположение, что это «кажется» проистекает от завышенной самооценки. Тем не менее попробую. Поскольку я профессионально занимаюсь электроникой, в частности, программированием микроконтроллеров, довольно-таки длительное время (как я подозреваю, дольше, чем живет большАя а может даже и бОльшая часть читателей Хабра), то за это время накопилось изрядное количество интересных случаев. Представляю на суд сообщества рассказ об одном из них.
Итак, в одной разработке мне потребовалось сохранять значительные объемы информации с целью последующей передачи через сеть в обрабатывающий центр. Поскольку полученное устройство предполагало серийное производство, был выбран вариант с применением относительно недорогих компонентов, и, в частности, микроконтроллера как центрального элемента системы. Поскольку в тот момент (середина 2012 года) предложение микроконтроллеров с Ethernet PHY на борту не отличалось разнообразием (да и сейчас положение не намного лучше), был выбран МК фирмы TI семейства Stellaris, конкретно LM3S8962, тем более что отладочная плата для него у меня уже имелась. МК на тот момент относительно новый, активно продвигаемый фирмой TI (это в конце 2013 года она ВНЕЗАПНО перевела всю серию в разряд NRND), и обладающий вполне достаточными для решения данной задачи параметрами. Для хранения информациии был выбран вариант с SD карточкой, в первую очередь из за их доступности и дешевизны, а также потому, что на отладочной плате наличествовало контактное устройство для них, а на поставляемом с платой отладки CD имелись многочисленные примеры, в том числе и для SD карт. Интерфейс к карточке был реализован простейший — SPI, предложенные примеры сходу заработали, принятое решение позволяло обрабатывать полученные данные до написания интерфейса при помощи элементарного переноса карточки из устройства в кард-ридер ПК, так что первоначальная отладка алгоритмов взаимодействия с объектом управления проблем не вызвало, по крайней мере в этой части проекта. Как все понимают, проблемы возникли несколько позже…
Когда алторитмы были отлажены и устройство в целом заработало, начались тестовые прогоны. И тут выясняется, что SD карточка не способна записывать информацию в том темпе, в котором объект управления ее поставляет, причем разница скоростей составляет разы, а с учетом размеров единицы хранения (2.7 мегабайта) создать промежуточный буфер по приемлемой цене не удасться. Переходя к конкретным цифрам, требовалось файл размером 2.7 мегабайта записывать на SD карточку не более, чем за 1.6 секунды, а реально данные записывались 30 секунд, причем карточки были приобретены класса 10, то есть утверждали скорость записи 10 мбайт/сек. Борьба за скорость шла в несколько этапов и противниками оказывались то микроконтроллер, то стандартная библиотека (фирменная от TI между прочим), то, собственно, SD карточки.
Первый этап — исследую тайминги записи и сразу же выясняю, что запись различных участков информации идет разное время, причем время записи одинаковых блоков информации существенно (в разы) отличается. Путем экспериментов с различными размерами блоков записи устанавливаю простую закономерность — чем больше блоки информации для записи, тем меньше время записи, отнесенное к ее размеру. Псокольку модули библиотеки поддерживают FAT и записывают информацию посекторно, а переделывать их смысла не вижу, переформатирую карточку на размер сектора 32 кбайт и получаю время записи 14 секунд — 1 очко SD.
Второй этап — проверяю работы SPI интерфейса и обнаруживаю, что он работает на частоте 12.5 мгц, хотя описание позволяет установить частоту передачи до 25 мгц (половина от тактовой частоты процессора 50 мгц). Выясняется, что подпрограмма установки частоты SPI модуля из библиотеки ограничивает максимально возможную частоту значением 12.5 мгц, причем в документации на интерфейсный модуль микроконтроллера подобное ограничение отсутствует.
Изменяем код и получаем уменьшение времени записи в 2 раза до 7 секунд — 1 очко TI.
Третий этап — исследую модули обмена с SD карточкой и обнаруживаю весьма непроизводительное расходование времени в низкоуровневых процедурах, а именно: модуль SPI в микроконтроллере имеет в своем составе FIFO буфер на 8 байт, что позволяет ускорить работу с ним. Модуль вывода до передачи очередного байте проверяет флаг «буфер передачи не полон» для ожидания возможности переслать следующий байт, и вроде бы все нормально. Но вслед за передачей байта вызывается модуль приема байта (дело в том, что при передаче в интерфейсе SPI одновременно производится и прием), который должен выбрать из приемного буфера эти ненужные принятые байты. И вот эта процедура опрашивает флаг «буфер приема не пуст», то есть ожидает окончания сериализации последнего байта буфера. То есть ждет, пока не будет полностью передан текущий байт и лишь потом готовит следующий для передачи.
Четвертый этап — исследую модули более высокого уровня и выясняю что, поскольку передача данных в интерфейс предусмотрена только из памяти, мне приходится проводить двойную работу — сначала читать поток данных из объекта управления и пересылать в оперативную память микроконтроллера (а это, между прочим, 32 килобайта буфера), а потом из памяти в регистры интерфейса SPI. Пишу свой собственный модуль для передачи данных непосредственно из регистра в регистр, и получаю время записи 1.6 секунды. При этом обращение к своему модулю маскирую внутри стандартного вызова, чтобы файловую система понимала, что переданы 32 килобайта — 1 очко TI.
Пятый этап. Поставленная цель уже достигнута, но процесс оптимизации продолжается по инерции. Исследую еще раз сигналы на интерфейсе и обнаруживаю, что на самом деле передается не непрерывная последовательность тактовых импульсов, а 8 бит данных плюс пауза в 2 такта. Ну хорошо, девятый бит нужен для передачи сигнала синхронизации (не путать с тактовым сигналом), причем мне он совершенно не нужен, но десятый то зачем? Эксперименты с различными режимами SPI привели к получению передаваемого сигнала в реальные 8 бит без пропусков и, соответственно, к времени записи 1.3 секунды — 1 очко Stellaris.
Шестой этап. Вроде бы все хорошо, но совершенно неожидано возникает еще 1 проблема — при потоковой записи множества файлов первые 3 укладываются в требуемый интервал и даже с небольшим запасом, а вот четвертый файл показвает время записи намного большее — до 1.8-2.0 секунд и, соответственно, нарушает последовательность. Пробую очевидное решение, предположив что дело в переходах через страницы записи FLASH памяти, и исключаю эти места из обработки. Теперь начинают долго записываться те файлы, которые раньше записывались хорошо. Многочисленные эксперименты приводят к выводу, что поведение FLASH как то связано с ее особенностями внутренней организации. Я полагаю, что внутренний генератор высокого напряжения для записи ( его существование несомненно) не способен удержать требуемый уровень напряжения при длительных операциях и требует определенного времени на восстановление заряда. При этом общая средняя скорость выдерживается, но мне то нужна не средняя скорость, а мгновенная скорость записи каждого файла. Здесь могло бы выручить введение буфера данных для выравнивания нагрузки, но было найдено другое решение — приобретены SD карточки различных фирм и среди них нашлись те, которые давали постоянное время записи в 1.4 секунды без существенных разбросов. Конкретные названия фирм-производителей карточек называть не буду, чтобы не сочли статью рекламной — 1 очко SD.
И в завершение статьи одно маленькое замечание — решил посмотреть, как обстоят дела в реализации аналогичных процедур в новом пакете поддержки микроконтроллеров типа TIVA-C (TivaWare_C_Series-2.0.1.11577). Ну что можно сказать — традиции не нарушены. Абсолютно все те же грабли лежат все в тех же местах, причем добавились еще одни — теперь функциии вызываются не непосредственно из FLASH памяти, а из так называемой ROM библиотеки с использованием двойного индексирования, что быстродействия не прибавляет. Как говорил Михаил Жванецкий «Или мы будет жить хорошо, или мои произведения всегда будут актуальны». Пока что верно второе.
Классы скорости карт памяти — как разобраться и что брать
Содержание
Содержание
Объем карты памяти — не единственный важный показатель. При покупке также следует обращать внимание на классы скорости. Они определяют минимальную и максимальную скорости записи. Это актуально, если вы берете SD-карту для видеокамеры или видеорегистратора, когда на нее будет записываться постоянный поток данных. Мы рассмотрим существующие классы скорости и их ограничения.
Класс скорости для обычных карт
Для начала отметим, что все microSD-карты можно разделить на две группы: без поддержки и с поддержкой интерфейса UHS (Ultra High Speed). Бюджетные или достаточно старые модели карт памяти еще не располагают высокоскоростным интерфейсом, поэтому для них актуальная градация под названием Speed Class.
Обозначается в виде большой буквы C, нумерованной от 2 до 10.
Этот класс определяет минимальную скорость записи данных. Расшифровка достаточно простая — цифра соответствует скорости:
Наименование | Скорость, МБ/с |
Class 2 | 2 |
Class 4 | 4 |
Class 6 | 6 |
Class 10 | 10 |
Таким образом, лучшая microSD-карта без поддержки интерфейса UHS способна предложить запись информации на скорости от 10 МБ/с. Максимальная скорость записи зависит от другого параметра, о котором мы поговорим позже.
Класс скорости UHS
Последние модели карт памяти имеют интерфейс UHS, который предлагает большую «производительность». На корпусе карты вы можете найти обозначение буквы U, в которой будут вписаны соответствующие цифры.
По аналогии с предыдущим классом, цифра обозначает минимальную скорость записи данных на карту:
Наименование | Минимальная скорость записи, МБ/с |
U1 | 10 |
U3 | 30 |
Как видно, класс C10 соответствует U1 по минимальной скорости записи, однако карты памяти могут иметь различную максимальную скорость. Самые продвинутые карты по UHS предлагают от 30 МБ/с.
Класс скорости видео
В 2016 году была представлена спецификация SD 5.0, которая учитывала современную сферу использования SD-карт, включая 2К и 4К видео. В связи с этим появилась новая классификация под названием Video Speed Class. Под эту классификацию обычно попадают самые новые версии карт памяти. На их корпусе можно найти букву V и число, которое определяет минимальную скорость записи.
Поскольку эта одна из последних классификаций, то предлагает большие минимальные скорости:
Наименование | Минимальная скорость записи, МБ/с |
V6 | 6 |
V10 | 10 |
V30 | 30 |
V60 | 60 |
V90 | 90 |
Стандарт V10 соответствует C10 и U1— у таких карт будет идентичная минимальная скорость записи.
Класс скорости для работы с приложениями
В спецификации SD 5.1, была добавлена еще одна классификация, которая была ориентирована на использование карт памяти в смартфонах и других гаджетах. Появился дополнительно класс Application Performance Class.
Классы A1 и А2 имеют идентичную минимальную скорость записи — 10 МБ/с, но различаются количество операций ввода-вывода.
Класс | Случайное чтение, IOPS | Случайная запись, IOPS |
А1 | 1500 | 500 |
А2 | 4000 | 2000 |
Чем выше IOPS (количестве операций ввода-вывода в секунду), тем быстрее будет работать приложение на смартфоне, планшете или другом устройстве, если оно установлено на карту памяти. Поскольку это одна из последних спецификаций, то далеко не все microSD имеют обозначения по А классу.
Поколение интерфейса UHS
С минимальной скоростью все понятно, достаточно посмотреть на число у самого новейшего класса на корпусе карты. Однако пользователя больше интересуют максимальные скорости. И здесь четкой классификации не существует. Все зависит от конкретного производителя, но вы можете определить максимальную теоретическую скорость, изучив поколение интерфейса (шины) UHS. Обозначается он римскими цифрами.
Поколения интерфейса | Предельная скорость записи, МБ/с |
I | 104 |
II | 312 |
Использование шины UHS будет возможно только в том случае, если и гаджет поддерживает ее, иначе карта памяти будет работать по более старой версии шины. Существует также спецификация UHS-IIIс максимальной теоретической скоростью до 624 МБ/с, но карты памяти с этим поколением шины пока не появились.
Сводная таблица и реальные замеры
У многих пользователей все эти классы могут вызвать путаницу, поскольку некоторые из них накладываются друг на друга. Более того, совсем не понятно, как это соотносить с реальными задачами. Специально для этого мы сделаем общую таблицу со сферой применения для каждого класса карт памяти:
Минимальная скорость записи
Speed Class
UHS Class
Video Class
Применение
HD и FullHD (30 FPS)
FullHD (60 FPS) и запись онлайн трансляций
FullHDи 4K 60/120 FPS
Таким образом, для современных смартфонов и камер потребуется карта класса не ниже C10/U1/V10, чтобы без проблем писать ролики в FullHD. Для работы с 4К-видео необходима карта не ниже V30/U3.
Многие производители указывают в характеристиках карт памяти их скорость чтения и записи. Насколько правдивы эти данные? В лаборатории ДНС для многих карт были сделаны фактические замеры — информацию о самых популярных microSD мы сведем в общую таблицу.
Модель | Заявления скорость чтения, МБ/с | Заявления скорость записи, МБ/с | Фактическая скорость чтения, МБ/с | Фактическая скорость записи, МБ/с |
Samsung EVO Plus microSDXC 128 ГБ | 60 | 100 | 98,26 | 65,49 |
Kingston Canvas Select Plus microSDXC 64 ГБ | 85 | 100 | 98,14 | 22,00 |
San Disk Ultra microSDXC 128 ГБ | 100 | от 10 | 98,10 | 38,48 |
Mirex microSDXC 64 ГБ | 104 | 45 | 94,27 | 13,63 |
ADATA Prime microSDHC 32 ГБ | 90 | от 10 | 82,05 | 17,17 |
Smartbuy microSDXC 128 ГБ | 80 | 50 | 97,57 | 38,55 |
Ситуация складывается следующая. По скорости чтения заявленные характеристики практически всегда соответствуют действительности. Небольшие отличия можно списать на размер и тип тестовых файлов, поскольку заявленные производителем значения получены при идеальных условиях.
Однако заявленная скорость записи практически для всех моделей не соответствует действительности. По факту карта памяти может записывать в 2-3 раза медленнее, чем указано в технических характеристиках. Однако все модели карт проходят порог минимальной скорости записи согласно указанному классу.
Если вам действительно важна скорость записи, то не стоит доверять данным от производителя — ориентируйтесь именно на минимальный класс (C, U, V), чтобы четко представлять хотя бы нижний предел фактической скорости.