Re: USB performance bug since kernel 2.6.13 (CRITICAL???)



Hi Wolfgang (and all),

Thanks for the input. However, I am not understanding
exactly why kernel mode is treated any differently than
user mode for this sort of thing. I am looking at the code
in ehci-q.c and ehci-hcd.c.

It seems like the unlinking of completed URBs
happens asynchronously on a timer. This is a
surprise to me since I thought this was happening
on an IRQ from the host controller. But if what I'm
surmising is correct it would explain everything
I am seeing. I'm not able to ascertain how
user mode drivers are treated differently than
kernel mode drivers in this regard. From what I
can tell, all drivers would be broken equally!
Can anyone who has more experience
with this code confirm this for me?

Besides, we count on sub-10 ms response times all the
time in user mode. Take for example, the access of a file.
If opening a file had a fixed latency of 4 ms, people
would be up in arms. So that's not entirely a valid excuse.
A USB operation that used to take 1 ms now takes 4 ms.
That's a pretty big change.

The ability to write user-mode drivers for USB devices
is very powerful for deployment. If one writes a kernel
driver, there are severe deployment hassles. As such,
my company has chosen to write user-mode drivers
on both Windows to avoid driver deployment nightmares.
This has been extremely successful so far.. Ironically,
Windows (using libusb-win32) has had no such performance
glitches. As a matter of principle, Linux should at least be
as good as Windows, right?

Hopefully we can get this sorted out.

Cheers.


----- Original Message ----
From: WolfgangMües <wolfgang@xxxxxxxxxxxxx>
To: linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx
Sent: Friday, October 13, 2006 12:11:08 PM
Subject: Re: [linux-usb-devel] USB performance bug since kernel 2.6.13 (CRITICAL???)

On Friday 13 October 2006 19:20, Open Source wrote:
Alan -- yes, I understand the ability to increase throughput
by transfering more bytes and I am definitely able to see
better overall throughput when increasing the number
of bytes per transaction. However, I needs to still have
good transaction-level timing because I cannot always
queue the transactions up. Recall that each transaction
is a WRITE followed by a READ. The results of the
READ determine the outgoing bytes for the following
transaction's WRITE.

Relying on sub-10ms response times in userspace is broken by design.

I have written a driver with similar timing requirements, and I have
done it in the kernel. This is the right way to go. Nothing else.

regards

Wolfgang
--
Das Leben kann nur rückwärts verstanden,
muß aber vorwärts gelebt werden.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Obsoleteness of X concept
    ... What if we go more further and embed second layer into new kernel ... be exchanged that easily as user mode ... Compare this to the old printer driver model of windows which also had ... kernel mode drivers. ...
    (comp.os.linux.x)
  • Re: Allocating and accessing physically contiguous memory in user mode in WinCE 6.0 Beta
    ... Is it possible to have a example of starting a user mode ... drivers which operate in the context of a user mode process that is ... created by the kernel. ... access to a set of addresses defined by a protected registry key created ...
    (microsoft.public.windowsce.platbuilder)
  • Re: GetLastError / SetLastError functionality from inside a driver
    ... world of drivers into a user mode mindset. ... will receive a drivers 101 tutorial via this newsgroup. ... kernel, I would strongly recommend you take a class or two or at a minimum ... For now if you can guide me on how do i send the error code back. ...
    (microsoft.public.development.device.drivers)
  • Re: ACPI Error under 2.6.26-rc*
    ... and attach the rsdp for all of the three cases (good, ACPI Error, ... could you please attach the dmesg output of a 2.6.25.10 kernel which has ... # IPVS transport protocol load balancing support ... # Device Drivers ...
    (Linux-Kernel)
  • init_emergency_isa_pool calling mempool_create in non-sleeping context
    ... I just saw this when booting a current linux-2.6.git kernel. ... # Power management and ACPI options ... # Bus options (PCI etc.) ... # Enable WiMAX to see the WiMAX drivers ...
    (Linux-Kernel)