2009-03-11 13 views
0

Windows Driver Model(WDM)を搭載したWindows 2000以降のUSB 1.1デバイス用のデバイスドライバを開発しました。USBデバイスドライバのTx性能を改善するにはどうすればよいですか?

私の問題は、64byteのバルク転送を使用した場合のTxパフォーマンスがかなり悪いことです。使用されるUSBホストコントローラに応じて、最大パケットスループットは1000パケット(UHCI)または2000パケット(OHCI)/秒です。私はLinuxカーネル2.6上で同様のドライバを開発しました。

Linuxドライバは、最大10の非同期バルク転送を使用し、Windowsドライバは1つの同期バルク転送を使用します。だからこれを比較するとパフォーマンスが悪いことが分かりますが、私はすでに非同期バルク転送でも成功していません(パフォーマンスは向上しません)。

誰でもWindowsのパフォーマンスを向上させるヒントをいくつか持っていますか?

答えて

1

私はこれを管理して、約6.6kメッセージ/秒にスピードアップしました。解決策はかなりシンプルでした。私はLinuxドライバと同じ仕組みを実装しました。

今は最大20個のURBを一度にスケジューリングしています。何を言ったらいいでしょうか?

0

どのようなスループットを得ていますか? USB 1.1は約1.5 Mbit/sに制限されています

あなたが暮らしていなければならないことは限られているかもしれませんが、決してリソースのためにシステムを枯渇させないでください。私は、ドライバがシステムリソースを大量に使いこなしていて、自分のパフォーマンスを向上させることができないほど多くの貧しいドライバの実装を見てきました。

私はWin32 DDKのUSBサンプルを見て間違ったAPI呼び出しを使用していると思いますか?

+0

理論的にはUSB 1.1では12MBit/sに制限されていませんか? Linuxでは同じデバイスで最大5倍のパケット数を達成します。パケットサイズは64バイト(最大)ではなく、Linuxでも同じです。 例を見ていきます。ありがとう。 – Seika

関連する問題