DWC3 + ECM: performance regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux