Производительность записи SD-карты

То, что вы пытаетесь сделать, не имеет смысла, TensorFlow не поддерживает графические процессоры Intel, только графические процессоры NVIDIA CUDA, ваш графический процессор Intel нельзя использовать в TensorFlow, поэтому он всегда будет видеть только один графический процессор.

Для использования нескольких графических процессоров вам необходимо как минимум 2 графических процессора NVIDIA CUDA.

5
задан 5 revs, 2 users 100% 26 January 2009 в 15:13
поделиться

6 ответов

Действительно ли это необходимо для fsync() после каждого файла? У Вас может быть лучшая удача, позволяя ОС решить, когда хорошее время должно выписать все ставившие в очередь изображения к SD-карте (амортизирующий стоимость запуска управления файловой системой SD-карты по многим изображениям, вместо того, чтобы подвергнуться ей для каждого изображения).

Можно ли предоставить еще некоторую подробную информацию о платформе? Замедлитесь времена ввода-вывода могут иметь отношение к другим процессам в системе, медленном контроллере ввода-вывода, и т.д.

Вы могли бы также рассмотреть использование файловой системы больше подходящее, как флэш-память работает. FAT32 более распространен, чем extN, но файловая система, конкретно созданная для SD, может быть в порядке также. JFFS является хорошим примером этого. Вы, вероятно, получите лучшую производительность с файловой системой, разработанной для флэш-памяти (в противоположность вращению магнитных носителей), и Вы получаете лучшее выравнивание износа (и таким образом время жизни/надежность устройства) свойства также.

3
ответ дан 13 December 2019 в 22:19
поделиться

AFAIK некоторые диски флэш-памяти имеют действительно плохую производительность записи (особенно дешевые бренды). Таким образом, если Вы измеряете скорость записи своего приложения (включая время, требуемое для fsync), что Вы получаете? Это могло бы легко быть в порядке очень немногих мегабайт в секунду - просто, потому что аппаратные средства не добиваются большего успеха.

Кроме того, по-видимому, запись может быть намного медленнее, если Вы пишете много маленьких блоков вместо одного большого блока (диск флэш-памяти мог бы только получить приблизительно 10 записей, в секунду сделанных в тяжелых случаях). Это - вероятно, что-то, что может быть смягчено буфером ядра, таким образом использование fsync часто могло бы замедлять запись...

Btw. Вы измеряли производительность записи на FAT32? Я предположил бы, что это о том же, но в противном случае возможно, существует некоторая оптимизация, все еще доступная?

2
ответ дан 13 December 2019 в 22:19
поделиться

Мог бы также рассмотреть SD-карту, это NOR или NAND? Эта страница показывает порядок величины между SD-картами (2M/s по сравнению с 20M/s).
http://www.robgalbraith.com/bins/camera_multi_page.asp?cid=6007-9597
Я думаю, что ZFS оптимизирован для флэш-памяти.

-1
ответ дан 13 December 2019 в 22:19
поделиться

Может быть это поможет - Сравнивающий Файловых систем:

... Я был вполне удивлен, как медленный ext3 был в целом, столько же дистрибутивов использует эту файловую систему сколько их файловая система по умолчанию...

И "пакетная обработка ext3 fsync":

... Этот патч измеряет время, которое требуется для передачи транзакции диску и снов на основе скорости базового диска.

1
ответ дан 13 December 2019 в 22:19
поделиться

Я не очень хорошо осведомлен в этой области, но признаки, которые Вы описываете, очень много походят на заполнение буфера. Можно заполнять буфер в устройстве записи файла или в устройстве ввода-вывода, связывающемся с самой SD-картой. Затем необходимо ожидать, пока это на самом деле не пишет данные в карту (таким образом освобождающий буфер), прежде чем можно будет записать больше. SD-карты не являются особенно быстрыми устройствами записи. Если можно найти способ проверить, пишутся ли данные на самом деле в карту во время этих пауз, которые проверили бы мою теорию. Некоторые картридеры имеют светодиод, который мигает, когда к данным получают доступ - который, вероятно, был бы хорошим индикатором.

Просто догадка... берет его с небольшим количеством соли :)

1
ответ дан 13 December 2019 в 22:19
поделиться

Попробуйте открыть файл с помощью o_Direct и выполните кэширование на уровне приложений.

Мы выполнили аналогичную проблему, когда мы реализовали функцию PVR (персональную запись видео) в Box STB. Трюк o_direct o_direct трюк удовлетворен нашим потребностям Finaly. (*)

без o_direct . Данные write () сначала будут кэшироваться в буфере ядра, а затем промыты в носитель при вызове fsync или когда буфер кэша ядра заполнен. (**) Отказ

С o_direct . Oy ядро ​​будет делать DMA непосредственно к физической памяти, указанной в буфере пользователей, прошедший в качестве параметра на Написать SESCalls. Таким образом, не будет пропускной способности CPU и MEM и MEM, потраченную в копии между памятью пользователей и кэшем ядра, и не будет времени процессора, проведенного в ядре в управлении кэшем (например, поиск кэша, замки для Page etc ..). (скопировано из здесь )

Не уверены, что он также может решить вашу проблему, но вы можете попробовать.

* Несмотря на критизу Линуса o_direct , он решил наши проблемы.

** Предположим, вы не открываете файл с O_DSYNC или O_Sync

4
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: