TCP throughput limited after upgrading kernel

Hello fellow users.

I use my laptop for network testing and after upgrading from 4.4.132-53 to 4.4.138-59 the tcp throughput dropped like a stone. As I can boot on either kernel, the tests are easily repeated, always with the same result.

I am running iperf3 between the laptop and some server at 33ms “RTT distance”. With 4.4.132, a single tcp stream (server to laptop) peaks at 719 Mbps, as opposed to 4.4.138 were the download barely reaches 38 Mbps. After capturing some packets, I found the tcp window reaching a max of 185 KB (4.4.138) or 3145 KB (4.4.132). What I can not understand is why. Tried to compare sysctl -a outputs, checked /proc/sys/net/… and every value is identical between kernel versions.

Any pointers to the problem or where to seach for an explanation and/or a fix? Thank you.

I’m assuming a NIC driver related issue? Or do you suspect an issue further up the stack?

/usr/sbin/hwinfo --netcard

You could search for existing bug reports, and submit one if necessary.

https://bugzilla.opensuse.org/index.cgi

Another suggestion that I have is to skip right past to the current stable kernel and test. (Maybe the issue has since been fixed.)

https://download.opensuse.org/repositories/Kernel:/stable/standard/

Let us know how that goes.

Thank you for your answer. I dont think it is driver related:

  1. a limitation on tcp window size should not be imposed by the driver (?)
  2. another hardware (desktop) displays the same behaviour

With the kernel parameters being the same, the limitation may be somehow in the code? I will keep searching.

pac

  1. I couldn’t find nvidia driver packages for 4.17.6. Some clumsiness on my part?

  2. Changelog for kernel 4.4.136 (midway between 132 and 138) has a reference to “tcp_rmem”, fixing and patching. Coincidence? I don’t have the know-how to understand the changes.

  3. TCP testing over a 10GE link with 74ms RTT measured a peak bandwidth of 37 MBytes/s (with 4.4.132) and 2.4 MBytes/s using 4.4.138. Most visible difference is (again) the tcp window size (3 MB vs 200 KB).

Most people should not be able to tell the difference as not everyone does single tcp stream downloads on GbE circuits over the ocean… :frowning:

Rgds
pac

No, there won’t be. You’d need to install it like this
https://en.opensuse.org/SDB:NVIDIA_the_hard_way

  1. Changelog for kernel 4.4.136 (midway between 132 and 138) has a reference to “tcp_rmem”, fixing and patching. Coincidence? I don’t have the know-how to understand the changes.
  1. TCP testing over a 10GE link with 74ms RTT measured a peak bandwidth of 37 MBytes/s (with 4.4.132) and 2.4 MBytes/s using 4.4.138. Most visible difference is (again) the tcp window size (3 MB vs 200 KB).

I can only suggest that you submit a bug report with your findings if you think there has been a regression with this.

Most people should not be able to tell the difference as not everyone does single tcp stream downloads on GbE circuits over the ocean… :frowning:

Rgds
pac

No, I guess not. Although, anyone doing network throughput testing might encounter it.