2009-03-11 3 views
0

Windows 2000 이상에서 Windows Driver Model (WDM)을 사용하는 USB 1.1 장치 용 장치 드라이버를 개발했습니다.USB 장치 드라이버에서 Tx 성능을 향상시키는 방법은 무엇입니까?

내 문제는 64byte 대량 전송을 사용할 때 꽤 나쁜 Tx 성능입니다. 사용 된 USB 호스트 컨트롤러에 따라 최대 패킷 처리량은 초당 1000 패킷 (UHCI) 또는 2000 패킷 (OHCI)입니다. 필자는 리눅스 커널 2.6에서 초당 약 5000 패킷의 비슷한 드라이버를 개발했습니다.

Linux 드라이버는 최대 10 개의 비동기 대량 전송을 사용하지만 Windows 드라이버는 1 개의 동기식 대량 전송을 사용합니다. 그래서 이것을 비교해 보면 성능이 매우 나쁜 반면 명확하게 비동기 대량 전송을 시도했지만 성공하지 못했습니다 (성능 향상 없음).

Windows에서 성능을 향상시키는 방법에 대한 팁과 트릭이 있습니까?

답변

1

이제는 약 6.6k 메시지/s로 보내는 속도가 빨라졌습니다. 솔루션은 매우 간단했습니다. Linux 드라이버에서와 동일한 메커니즘을 구현했습니다.

이제 최대 20 개의 URB를 한 번에 예약 할 것입니다. 무엇을 말하면 좋을까요?

0

어떤 처리량을 얻고 있습니까? USB 1.1은 약 1.5 Mbit/s로 제한됩니다.

당신이 살아야 만 할 수있는 한계가있을 수 있습니다. 자원을 위해 시스템을 굶기 만하면 안됩니다. 드라이버가 자체 성능을 크게 저하시키지 않고 시스템 리소스를 소모하는 빈약 한 드라이버 구현을 많이 보았습니다.

제 생각에는 잘못된 API 호출을 사용하고 있습니다. Win32 DDK의 USB 샘플을 보셨습니까?

+0

USB 1.1 이론적으로 12MBit/s로 제한되지 않습니까? 리눅스에서는 동일한 장치로 최대 5 배의 패킷을 전송합니다. 패킷 크기는 64byte (최대)가 아니지만 Linux에서는 동일합니다. 예제를 살펴 보겠습니다. 감사. – Seika

관련 문제