Re: Difficulties to get 1Gbps on be2net ethernet card
From: Jean-Michel Hautbois <hidden>
Date: 2012-06-06 10:04:33
2012/5/30 Jean-Michel Hautbois [off-list ref]:
2012/5/30 [off-list ref]:quoted
quoted
-----Original Message----- From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] On Behalf Of Jean-Michel Hautbois 2012/5/30 Jean-Michel Hautbois [off-list ref]: I used vmstat in order to see the differences between the two kernels. The main difference is the number of interrupts per second. I have an average of 87500 on 3.2 and 7500 on 2.6, 10 times lower ! I suspect the be2net driver to be the main cause, and I checkes the /proc/interrupts file in order to be sure. I have for eth1-tx on 2.6.26 about 2200 interrupts per second and 23000 on 3.2. BTW, it is named eth1-q0 on 3.2 (and tx and rx are the same IRQ) whereas there is eth1-rx0 and eth1-tx on 2.6.26.Yes, there is an issue with be2net interrupt mitigation in the recent code with RX and TX on the same Evt-Q (commit 10ef9ab4). The high interrupt rate happens when a TX blast is done while RX is relatively silent on a queue pair. Interrupt rate due to TX completions is not being mitigated. I have a fix and will send it out soon.. thanks, -SathyaHi Sathya ! Thanks for this information ! I had the correct diagnostic :). I am waiting for your fix.
Well, well, well, after having tested several configurations, several drivers, I have a big difference between an old 2.6.26 kernel and a newer one (I tried 3.2 and 3.4). Here is my stream : UDP packets (multicast), 4000 bytes length, MTU set to 4096. I am sending packets only, nothing on RX. I send from 1Gbps upto 2.4Gbps and I see no drops in tc with 2.6.26 kernel, but a lot of drops with a newer kernel. So, I don't know if I missed something in my kernel configuration, but I have used the 2.6.26 one as a reference, in order to set the same options (DMA related, etc). I easily reproduce this problem and setting a bigger txqueuelen solves it partially. 1Gbps requires a txqueulen of 9000, 2.4Gbps requires more than 20000 ! If you have any idea, I am interested, as this is a big issue for my use case. JM