Trusty kernel network performance regression
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Jay Vosburgh |
Bug Description
SRU Justification:
Impact:
Reduced TCP/IP receive performance for network devices that do not split packet headers into skb linear area (e.g., mlx4). The trusty kernel has incorporated
commit eff44f9cc9a02aa
Author: Jerry Chu <email address hidden>
Date: Wed Dec 11 20:53:45 2013 -0800
net-gro: Prepare GRO stack for the upcoming tunneling support
which modifies the GRO frag0 optimization, but unfortunately for some cases results in calls to __skb_pull_tail for every packet being received via the GRO path. This causes a reduction in TCP receive performance (or, more accurately, an increase in CPU load for TCP receive processing, which will cause throughput reduction for CPU limited workloads).
Fix:
This has already been fixed in mainline in
commit a50e233c50dbc88
Author: Eric Dumazet <email address hidden>
Date: Sat Mar 29 21:28:21 2014 -0700
net-gro: restore frag0 optimization
The fix has been backported to and verified on the trusty kernel using mlx4 devices and iperf; an increase from 7.5 to 8.5 Gb/sec was observed when adding the patch, and the relevant portion of perf captures show changes in the call paths from:
7.17% iperf [kernel.kallsyms] [k] __pskb_pull_tail
[...]
[...]
to:
4.87% iperf [kernel.kallsyms] [k] skb_gro_receive
Testcase:
The fix was tested using mlx4 10Gb/sec network devices between two arm64 systems using "iperf -s" on one end and "iperf -c" on the other. The unmodified kernel reported approximately 7.5 Gb/sec throughput, the fixed kernel approximately 8.5 Gb/sec.
Changed in linux (Ubuntu Trusty): | |
status: | New → In Progress |
assignee: | nobody → Jay Vosburgh (jvosburgh) |
Changed in linux (Ubuntu): | |
status: | Incomplete → Fix Released |
tags: | added: bot-stop-nagging |
Changed in linux (Ubuntu Trusty): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu): | |
importance: | Undecided → Medium |
importance: | Medium → High |
Changed in linux (Ubuntu Trusty): | |
importance: | Medium → High |
Changed in linux (Ubuntu Trusty): | |
status: | In Progress → Fix Committed |
This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:
apport-collect 1344323
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.