Hi Felipe,
I noticed a performance regression with commit
fd9afd3cbe404998d732be6cc798f749597c5114 "usb: gadget: u_ether: remove
interrupt throttling".
I read the discussion leading to this commit and I agree that the
interrupt throttling may not have been done perfectly and could lead to
stalls.
However with my setup the performances drop is significant: from 550-600
MBits/s to 350-400 MBits/s when the patch is applied
Here is a brief description of this setup:
- tested mostly with a 4.4 version because the driver is not so stable
with 4.9 (I'll send the details in a separate email).
- TI DRA7x platform with a DWC3 USB controller.
- g_ether loaded with parameter qmult=20
- Super-speed mode only
- Performance test done with iperf. cmdline is "iperf -c 10.0.0.1 -t10
-i1" (single threaded and unidirectionnal)
I fixed this in my setup by introducing a new flag 'no_urge' that serves
kind of the same purpose as 'no_interrupt' but instead of meaning "no
need for completion" it's more like "completion required in a finite
amount of time but not immediately". This flag is always set when
pushing a TX usb request.
In the DWC3, the IOC interrupt is disabled for all packets with this
flag set and the LST interrupt is enabled.
It seems to works fine. I checked that all packets were given back to
the stack in short amount of time and the CPU is not put to knees by the
number of interrupts. The performance is steady at around 600MBit/s.
I wanted to have your opinion on this approach before I try to port it
to 4.9.
Jean-Jacques
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html