On Tue, Jul 23, 2013 at 10:34:06PM +0000, Stoddard, Nate (GE Healthcare) wrote:
> > -----Original Message-----
> > From: Greg KH [mailto:gre...@linuxfoundation.org]
> > Sent: Tuesday, July 23, 2013 10:27 AM
> > To: Stoddard, Nate (GE Healthcare)
> > Cc: linux-usb@vger.kernel.org
> > Subject: Re: EHCI driver breaks at 6 endpoints
> > 
> > On Tue, Jul 23, 2013 at 01:33:25PM +0000, Stoddard, Nate (GE Healthcare)
> > wrote:
> > > Hello,
> > >
> > > We are attempting to create a system that will support 8 full speed
> > > USB devices each sending a 64-byte transfer every 1ms via interrupt
> > > endpoints.  When we connect 5 full speed USB devices our USB host use
> > > 24% of the CPU, but when we connect a 6th device, the CPU goes to
> > > 100%.  Has anyone else seen this type of CPU jump or know what could
> > > be causing it?
> > >
> > > Devices   CPU     Total Throughput
> > >  1                 7%     64  KB/s
> > >  2                11%     128 KB/s
> > >  3                15%     192 KB/s
> > >  4                19%     256 KB/s
> > >  5                24%     320 KB/s
> > >  6                99%     (should be 384 KB/s, but the iMX535 misses 
> > > sending
> > IN tokens in some SOF periods)
> > >
> > > We are using a Freescale iMX535 board running at 800 MHz as the USB
> > > host.  One of the iMX535 EHCI root controllers is connected to a high
> > > speed USB hub which has two ports each connected to another high speed
> > > USB hub (giving us 8 ports for USB devices).  Each hub has multi-TT
> > > support.  The iMX535 is running Linux 2.6.35, and our test application
> > > uses libUSB asynchronous I/O (v1.0.16).   The libUSB callback function
> > > do not process the data; rather the function only resubmits the
> > > transfer.
> > 
> > As you are using an old, obsolete, and unsupported-by-the-community
> > kernel version, I am going to have to point you to the vendor that provided
> > you with this kernel (that you are paying for), and ask that you get support
> > from them, as there's really nothing we can do for you here.
> > 
> > And that hardware is not the "best".  What happens if you plug the same
> > number of devices into a "real" EHCI host controller (i.e. a PCI one on a 
> > PC)?
> > The EHCI driver should handle this just fine, odds are the issues are down 
> > in
> > the iMX535 driver, or possibly, the silicon for that chip as I don't think 
> > it was
> > designed to support that many devices (read the data sheet for specifics, 
> > but
> > I thought I saw that years ago...)
> > 
> 
> We cannot easily run 3.10.2 on our iMX535; however, we did run similar 
> testing on an Ubuntu x86 PC running at 1.2 GHz (1 core no hyperthreading).  
> We connected 7 full speed USB devices to two USB 2.0 high speed hubs to the 
> USB 2.0 ports on the PC.  Each USB device was sending an interrupt IN 
> endpoint every 1ms.  Here are the results with the latest kernel versions:
>    Linux 3.2     CPU = 37%
>    Linux 3.5     CPU = 37%   (for most runs, but some were 99%)
>    Linux 3.8     CPU = 8 %
>    Linux 3.10   CPU = 8 %
> 
> Any ideas what would have changed between 3.5 and 3.8?  

About 30,000 patches :)

> Is there an easy way to find out if there were major changes to the
> EHCI driver between 3.5 and 3.8?  I started to look at the git logs;
> is there an alternative?

'git log drivers/usb/host/' will narrow stuff down a lot, assuming that
it is only an EHCI fix.  That large of a speedup might be other things.
will

> Also, if we connect the hubs to the USB 3.0 ports on the PC, in all
> the versions listed above, the CPU is 8%.  Is this because of the XHCI
> driver is used on USB 3.0 ports?

Yes, a different driver is being used, as you say.

Good luck,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to