Как улучшить производительность Tx в драйвере USB-устройства?

Я разработал драйвер устройства USB 1.1 для Windows 2000 и более поздних версий с Windows Driver Model (WDM).

Моя проблема заключается в довольно плохой производительности Tx при использовании 64-байтовых массовых передач. В зависимости от используемого хост-контроллера USB максимальная пропускная способность пакетов составляет либо 1000 пакетов (UHCI), либо 2000 пакетов (OHCI) в секунду. Я разработал аналогичный драйвер для Linux Kernel 2.6 со скоростью около 5000 пакетов в секунду.

Драйвер Linux использует до 10 массовых асинхронных передач, в то время как драйвер Windows использует 1 синхронную массовую передачу. Таким образом, сравнение показывает, что производительность настолько плоха, но я уже пробовал использовать асинхронные массовые передачи без успеха (без прироста производительности).

У кого-нибудь есть советы и рекомендации, как повысить производительность в Windows?


person Seika    schedule 11.03.2009    source источник


Ответы (2)


Теперь мне удалось ускорить отправку примерно до 6,6 тыс. Сообщений / с. Решение было довольно простым, я только что реализовал тот же механизм, что и в драйвере Linux.

Итак, теперь я планирую до 20 URB одновременно, и, что я должен сказать, это сработало.

person Seika    schedule 17.04.2009

Какая у вас пропускная способность? USB 1.1 ограничен примерно 1,5 Мбит / с

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

Я предполагаю, что вы используете неправильные вызовы API, вы смотрели образцы USB в Win32 DDK?

person John Leidegren    schedule 11.03.2009
comment
Разве USB 1.1 теоретически не ограничен 12 Мбит / с? Под Linux мы достигаем с одним и тем же устройством до 5 раз больше пакетов / с. Размер пакета не 64 байта (максимум), но это то же самое для Linux. Я посмотрю на примеры. Спасибо. - person Seika; 11.03.2009