LINUX.ORG.RU

Тормоза при записи на SD карту

 , , ,


0

1

Здравствуйте. Такая проблема. Есть устройство на 2-х ядерном SOC, на нем крутится Дебиан и одна пользовательская софтина. Софтина тяжелая, одновременно обрабатываются два HD видео потока, несколько TCP соединений, управление внешними датчиками и тд. Загружается все с SD карты, файловая система в ОЗУ (1 ГБ). В принципе, ресурсов хватает. Проблема возникает когда пытаюсь писать оба видео потока (сжатые в JPEG) на SD карту. После записи анализирую таймштампы жипегов и оказывается, что время от времени пропускаются кадры (до 10-12). Т.е. в моменты, когда кэш сбрасывается на SD карту остальные потоки ждут и соответственно кадры теряются (это мое предположение). Пытался играть с объемом кэша, но заметного улучшения не обнаружил. Что можете посоветовать ? Спасибо Редактировать сообщение

одна пользовательская софтина

Ответ где-то в «ней», товарищ Штирлиц. :)

Deleted
()

Скорость карточки какая? Пробовал быстрые и современные карты, как там их, SDXC что ли?

EXL ★★★★★
()
Ответ на: комментарий от Deleted

Это понятно ) Там надцать параллельных потоков шуршат, а ядра только два и частота 1 ГГц )

FlipFlop
() автор топика

Пррведи эксперимент. Возьми винду и флешку. Копируй файл 100 мегабайт. Время копирования 20 секунд. Теперь второй файл 100 мегабайт. Время копирования 20 секунд. В сумме 40 секунд.

А теперь 2 файла по 100 мегабайт копируй одновременно. 40 секунд? Нет - несколько ммнут.

Флешка хорошо записывает в один поток, и плохо в несколько. Поэтому и не рекомендуется использовать журналируемые ФС - они многопоточны по-определению. FAT, ext2 и ext4 с отключенным журналированием - самое то.

P.S. Почему проверять не в линуксе? Потому что линукс соврёт, что всё было скопировано за одну секунду. А потом будет отмонтировать раздел вечность. А при копировании файла размером в гигабайт, скорость будет чередоваться между 100500 Мб/сек. и 0 б/с.

anonymous
()
Ответ на: комментарий от anonymous

Флешка хорошо записывает в один поток, и плохо в несколько.

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

anonymous
()
Ответ на: комментарий от FlipFlop

Даже если один поток писать, все равно теряются кадры

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

anonymous
()
Ответ на: комментарий от max_lapshin

писать не жирнющие жпеги, а в 10 раз более легкий h264

только для процессора он как раз тяжёлый

anonymous
()
Ответ на: комментарий от Radjah

Class 10 - это 10 МБ/сек минимум, но на деле больше не бывает.

на UHS-I реальных 80-90 МБ/сек бывает - зависит от производителя.

anonymous
()
Ответ на: комментарий от FlipFlop

Soc, Linux, 1гиг рамы

одновременно обрабатываются два HD видео потока

ага, дело за малым - всего то написать модуль H264 на ПЛИС

то есть потоки HD 720p в jpeg и поди ещё 25 к/сек ??

и вы хотите их писать в реальном времени на SD без потерь кадров

похоже вы что-то не знаете про свой SoC или совсем-совсем не так пишите.

anonymous
()
Ответ на: комментарий от FlipFlop

dd говорит, что то около 20 МB/sec.

Плохая флешка, я на U3 45 на запись часто вижу.

Deleted
()
Ответ на: комментарий от Radjah

Один хрен это контроллер тоже уметь должен, а не только карта.

с его слов 20 Мб/сек запись. С одной стороны если он правильно измерял то однозначно UHS-I работает, с другой стороны он возможно не учитывал буферизацию и измерено непонятно что. Есть подозрение что всё же второе, с UHS-I сложность в том что надо динамически переключать напряжение линий SD контроллера с 3.3 В на 1.8 В - не все это поддерживают.

anonymous
()
Ответ на: комментарий от anonymous

похоже вы что-то не знаете про свой SoC или совсем-совсем не так пишите.

Не, про Soc я кое-что знаю ) А вот Линукс не очень, по объективным причинам... в основном писал bare-metal приложения... Сейчас пытаюсь настроить кэш через ./proc/sys/vm, результат наблюдаю через Top, вернее не наблюдаю никакого результата... Пробовал менять dirty_expire_centisecs dirty_background_ratio dirty_ratio

в топе вообще ничего не меняется

а вот это min_free_kbytes=200000 реально работает, только наоборот, кэш растет до 200 КБ потом падает до 130 и так далее

по поводу pdflush тоже не ясно, такого процесса вообще не вижу, зато есть некий mmcqd.. это оно ?

FlipFlop
() автор топика

расскажите уже школьнику про IOPS

anonymous
()
Ответ на: комментарий от FlipFlop

Все уже написано за тебя, в виде готовых блоков asic.

anonymous
()

Запись на флэшки - тормозное говно, если это не дорогая флэшка-ssd. Чего ты ожидал?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.