Цитата(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 полностью. И что дальше с ним будете делать?
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 словами. Завтра попробую сделать два переключающихся буфера, сейчас у меня в один и тот же и пишет и из него же сохраняет на диск.