Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Чтение производилось блоками по 4096КБ(ReadFile), общий объем пересылаемих данных 131КБ, 1.3МБ, 13МБ
Начали исследовать.
После серии экспериментов сделали следующие выводы по работе драйвера нижнего уровня.
В NT2000+SP4 на фрейм выделяеться 4 пакета(проверено осциллографом) в результате 4*64*1000=256КБ теоретический максимум даже при одном устройстве на шине USB.
Под XP прокачка 780..820КБ (131КБ) осциллограф показал промежутки между пачками в 1,5 миллисекунд.
В Windows Me размер блока для чтения ограничен 4096КБ.
При установке в размера 8192КБ чтение не производилось.
После 10 секунд ожидания функуция чтения вываливалась с ошибкой и результатом 0 пересланных байт.
Физики этого не знали и предложили увеличить размер блока.
Постепенным увеличением довели размер блока чтения до 64КБ.
Промежутки между пачками увеличились до 1,75миллисекунды скорость возросла до 1130КБ(при чтении 13МБ)
Попытка чтения блоками по 131КБ привела к той же ошибке, что и Windows Me при увеличении размера блока с выше 4096КБ.
Я вас не утомил? :-)