Я пытаюсь запустить пользовательское приложение на встроенной платформе Linux (Linux 4.1). Это приложение непрерывно записывает 1 МБ данных на SD-карту (класс Sandisk UHS I). Приложение использует вызов fwrite()
для записи данных на SD-карту.
Ниже приведены мои наблюдения, когда отслеживалась пропускная способность записи на SD-карту.
- Средняя скорость составляет около 10 Мбайт в секунду.
- Мгновенная пропускная способность (измеряемая для передачи 1 МБ) падает после записи каждых 50 МБ данных. Пропускная способность падает до 200 кбайт в секунду.
- Я попытался использовать системный вызов
write()
вместоfwrite()
с установленным флагомO_SYNC
. При этом мгновенная пропускная способность увеличилась до 1 МБ/с.
В спецификации SD-карты указано, что минимальная поддерживаемая пропускная способность составляет 10 МБ/с. Почему падает мгновенная пропускная способность?
Ожидается ли такое поведение? Что ограничивает мгновенную пропускную способность?
Моему приложению требуется минимальная мгновенная пропускная способность 4 МБ/с. Что я должен делать?