libusb performance on 8.1

Hans Petter Selasky hselasky at c2i.net
Fri Jan 28 07:58:03 UTC 2011


On Friday 28 January 2011 02:44:43 Daniel O'Connor wrote:
> On 23/01/2011, at 24:03, Hans Petter Selasky wrote:
> > You need to change the way you buffer the data. FreeBSD does not queue
> > more than 2 URB's at any time, and the turnaround time varies from 1ms
> > to 125us due to hardware IRQ restrictions. Linux queues up all it can
> > get, which leads to other kind of problems. The current internal buffer
> > limit is 16Kbyte 8000 times per second which gives a MAX of 128
> > MByte/second.
> 
> How difficult would it be to increase this?

Hi,

For this kind of applications ISOCHRONOUS transfers should be used. Then you 
can have a double buffer guard in the range 1-56ms, regardless of the buffer 
size the hardware uses.

You could also try an XHCI controller, because the BULK buffering is done 
differently there.

> I obviously don't need any more
> throughput, however my application is very sensitive to latency, as I am
> reading out of a fairly small FIFO and if it fills up my entire run has to
> be aborted.



--HPS


More information about the freebsd-usb mailing list