Re: usb with fast interrupts

From: M. Warner Losh <imp_at_bsdimp.com>
Date: Fri, 12 Nov 2004 15:09:05 -0700 (MST)
In message: <41952FBD.40602_at_freebsd.org>
            Scott Long <scottl_at_freebsd.org> writes:
: M. Warner Losh wrote:
: > Our usb system supports soft interrupts, but we currently don't make
: > productive use of them.  The following makes interrupts fast
: > interrupts and uses taskqueues to queue data to a SWI.
: > 
: > Lemme know if it works for you.
: > 
: > Warner
: > 
: 
: Taskqueues aren't good for timing-sensitive operations.  Even though USB
: may not be terribly sensitive, I bet you'll actually see performance
: drops with things like umass with this.  Could you instead just put the
: real handler into a kthread and wake it up, or use a swi?

I'll have to measure, but I've not seen my umass get any slower with
this patch...  I can't use a SWI, because there's no way to turn off
an SWI once you've created it (and I think you'd said you were opposed
to creating a SWI cleanup function).  I'm not sure how a kthread would
be any faster, however, since both a taskqueue and a thread have to go
through a scheduling point.

A quick test here seems to point out a bug in da:
sudo dd if=/dev/da0 of=/dev/null
^C5275+0 records in
5275+0 records out
2700800 bytes transferred in 26.385502 secs (102359 bytes/sec)
3:06pm hammer:[68]> dmesg | egrep da
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Sony MSC-U04 3.00> Removable Direct Access SCSI-0 device 
da0: 3MB (7904 512 byte sectors: 64H 32S/T 3C)

Hmmm, how can I read more than 3MB from da0?  I'll have to check to
see how fast it is w/o this change.

Warner
Received on Fri Nov 12 2004 - 21:10:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:22 UTC