On Sun, Feb 25, 2007 at 08:53:03AM -0800, David Brownell wrote:
> 
> 
> > So, why do I want a non-blocking aio_read and aio_write file operation?
> 
> Without it, how would you achieve I/O overlap, and thus maximize the
> I/O throughput accessible when streaming data to/from userspace?  The
> description you gave of glibc aio support sure sounded to me like it
> was incapable of achieving much in the way of I/O overlap.
> 
> Treat your target data rate as 24 MB/sec high bandwidth ISO or interrupt
> data streams.  USB hardware can sustain those transfer rates without any
> real hiccups ... but *ONLY* if the driver stack never lets the transfer
> queue empty.  (Now think about costs on a low-MIPS processor... where
> context switch costs are disproportionately high; ARMv5 at 200 MIPS.)
> 

I heartily agree with this sentiment.  The only way we've been able to
sustain 32MB/s read and write bulk transfers across the USB from user
space is by using the usbfs USBDEVFS_SUBMITURB ioctl.  We typically
run with 8 to 16 outstanding requests, each around 4kB.

FWIW, the peripheral we're using is the Universal Software Radio
Peripheral (USRP).  It's basically an FX2, FPGA, ADC's and DAC's.

The code we use for this is in the GNU Radio code base,
http://gnuradio.org/trac/wiki

The relevant part is usrp/host/lib/fusb*.{h,cc}

Eric

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to