реклама на сайте
подробности

 
 
> QNX и запись на диск, медленная запись
Caxec
сообщение Oct 1 2012, 08:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 11-02-10
Пользователь №: 55 413



Добрый день всем!

Такая ситуация. Имеется компьютер Lippert на Celeron 650MHz и чипсетом VIA VT8606. К нему по шине PCI подключена плата захвата данных. Плата в режиме мастер пишет в буфер в памяти липперта данные. Размер буфера 600Кб. Буфер заполняется 30 раз в сек. и должен сливаться на диск. Диск IDE подключен 40 жильным кабелем, на 120 Гб. В общем, при записи буфера время выполнения функции write около 5 мс., но периодически, примерно раз в секунду, функция write висит в течении 300мс, соответственно пропускается куча буферов. Я так понял, что зависон происходит в момент слива кэша файловой системы на диск. Да, файловая система - fat32. Почему сливает так долго, можно ли как-то ускорить процесс?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Olej
сообщение Oct 1 2012, 09:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Caxec @ Oct 1 2012, 11:27) *
В общем, при записи буфера время выполнения функции write около 5 мс., но периодически, примерно раз в секунду, функция write висит в течении 300мс, соответственно пропускается куча буферов. Я так понял, что зависон происходит в момент слива кэша файловой системы на диск. Да, файловая система - fat32. Почему сливает так долго, можно ли как-то ускорить процесс?


1. Здесь не лучшее место спрашивать конкретные вопросы по QNX. Спрашивайте на qnx.org.ru, например. Здесь никто в QNX толком не понимает... crying.gif

2. Кстати, и QNX какой: 4 или 6?

3. В QNX не особенно эффективный драйвер IDE. Кроме того, он сильно зависит от режима, как они называют: DMA / без DMA. Смотрите внимательно.
Вы хотите достаточно высокую скорость: 600Кб. * 30 - 18Mb/sec. - это не так мало.
За 120*10**3/18=6000 sec. < 2 час. - вы зальёте весь свой HDD полностью. И что дальше с ним будете делать? rolleyes.gif
P.S. могу предположить, что здесь имеет место плохо продуманная архитектура задачи.

4. Для QNX fat32 совершенно чужеродная система. Используйте родные qnx4/qnx6 файловую систему.

5. Попробуйте взять под свой контроль сброс буферов на диск: сопровожайте каждый write операцией sync.

6. Вынесите всё, что касается write в отдельный процесс/поток с пониженным приоритетом ... и не будет у вас "пропускается куча буферов"(с).
Go to the top of the page
 
+Quote Post
Caxec
сообщение Oct 1 2012, 15:03
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 11-02-10
Пользователь №: 55 413



Цитата(Olej @ Oct 1 2012, 13:44) *
2. Кстати, и QNX какой: 4 или 6?

QNX 6.5SP1

Цитата(Olej @ Oct 1 2012, 13:44) *
3. В QNX не особенно эффективный драйвер IDE. Кроме того, он сильно зависит от режима, как они называют: DMA / без DMA. Смотрите внимательно.
Вы хотите достаточно высокую скорость: 600Кб. * 30 - 18Mb/sec. - это не так мало.
За 120*10**3/18=6000 sec. < 2 час. - вы зальёте весь свой HDD полностью. И что дальше с ним будете делать? rolleyes.gif
P.S. могу предположить, что здесь имеет место плохо продуманная архитектура задачи.

Как раз час и есть время работы всей системы. Винт потом вынимаем - и на обработку

Цитата(Olej @ Oct 1 2012, 13:44) *
4. Для QNX fat32 совершенно чужеродная система. Используйте родные qnx4/qnx6 файловую систему.

Попробовал qnx6 и qnx4. В qnx4 слегка побыстрее, но всё равно раз в секунду - тормоза, где то на 0,2 сек.

Цитата(Olej @ Oct 1 2012, 13:44) *
5. Попробуйте взять под свой контроль сброс буферов на диск: сопровожайте каждый write операцией sync.

После этого всё стало ещё медленнее - теперь просто каждую запись тормоза где-то 70-80 мс, а мне надо 33 мс.

Цитата(Olej @ Oct 1 2012, 13:44) *
6. Вынесите всё, что касается write в отдельный процесс/поток с пониженным приоритетом ... и не будет у вас "пропускается куча буферов"(с).

Запись и так в отдельном потоке - он получает сигнал от основного и по нему пишет из буфера, указатель на который объявлен глобальным, на диск.

Может дело в медленном интерфейсе? Просто нет под рукой кабеля uata100 для 2.5 дюймовых дисков. Пользую 40 жильный uata33.

Цитата(_4afc_ @ Oct 1 2012, 13:55) *
Вот я не у верен что это кеш. Какой QNX 4 или 6?
Может просто головка винчестера улетает в начало диска для обновления фат таблицы, хотя частовато.

Я делал два процесса с расшаренной между ними памятью. Один забирал данные из буфера PCI в мой буфер (размером несколько мегабайт, а второй отписывал или обрабатывал данные из этого буфера разделённого пополам. Всё успевало.

Данные лучше копировать из PCI не по 32, а по 64 или даже 128 бит - может быть прирост в зависимости от конкретной мамки.

Дрючить диск каждые 33мс - в корне неверно!


А какая была средняя скорость обмена в Вашем проекте? Мне в идеале надо 22,5 Мб/сек считывания из PCI и записи на диск. Устройство на шине PCI пишет данные в режиме мастер. Бёрст сделал 128 слов - пришлось переконфигурировать регистры чипсета, т.к. биос не давал настроить и ограничивал 32 словами. Завтра попробую сделать два переключающихся буфера, сейчас у меня в один и тот же и пишет и из него же сохраняет на диск.
Go to the top of the page
 
+Quote Post
Olej
сообщение Oct 1 2012, 22:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Caxec @ Oct 1 2012, 18:03) *
Мне в идеале надо 22,5 Мб/сек считывания из PCI и записи на диск.

22,5 Мб/сек - это уже достаточно близко к пределу для некоторых устройств хранения в Linux (для сравнения), см.: Производительность диска.
В QNX, за счёт микроядерности, все временные характеристики будут ещё хуже, да и драйвер IDE там, как утверждается, проработан не лучшим образом.
Так что ваши пожелания находятся вообще достаточно близко к потенциальному пределу возможностей.
Go to the top of the page
 
+Quote Post
gosha
сообщение Oct 2 2012, 13:29
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 15-06-04
Из: Менделеево
Пользователь №: 30



Какой номер режима dma/udma для диска используется?

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 10:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016