Re: [PATCH] net: improve ipv4 performances

From: Md. Islam
Date: Sun Apr 01 2018 - 20:52:01 EST


Yes, I'm also seeing good performance improvement after adding
likely() and prefetch().

On Sun, Apr 1, 2018 at 2:50 PM, Stephen Hemminger
<stephen@xxxxxxxxxxxxxxxxxx> wrote:
> On Sun, 1 Apr 2018 20:31:21 +0200
> Anton Gary Ceph <agaceph@xxxxxxxxx> wrote:
>
>> As the Linux networking stack is growing, more and more protocols are
>> added, increasing the complexity of stack itself.
>> Modern processors, contrary to common belief, are very bad in branch
>> prediction, so it's our task to give hints to the compiler when possible.
>>
>> After a few profiling and analysis, turned out that the ethertype field
>> of the packets has the following distribution:
>>
>> 92.1% ETH_P_IP
>> 3.2% ETH_P_ARP
>> 2.7% ETH_P_8021Q
>> 1.4% ETH_P_PPP_SES
>> 0.6% don't know/no opinion
>>
>> From a projection on statistics collected by Google about IPv6 adoption[1],
>> IPv6 should peak at 25% usage at the beginning of 2030. Hence, we should
>> give proper hints to the compiler about the low IPv6 usage.
>>
>> Here is an iperf3 run before and after the patch:
>>
>> Before:
>> [ ID] Interval Transfer Bandwidth Retr
>> [ 4] 0.00-100.00 sec 100 GBytes 8.60 Gbits/sec 0 sender
>> [ 4] 0.00-100.00 sec 100 GBytes 8.60 Gbits/sec receiver
>>
>> After
>> [ ID] Interval Transfer Bandwidth Retr
>> [ 4] 0.00-100.00 sec 109 GBytes 9.35 Gbits/sec 0 sender
>> [ 4] 0.00-100.00 sec 109 GBytes 9.35 Gbits/sec receiver
>>
>> [1] https://www.google.com/intl/en/ipv6/statistics.html
>>
>> Signed-off-by: Anton Gary Ceph <agaceph@xxxxxxxxx>
>
> I am surprised it makes that much of an impact.
>
> It would be easier to manage future bisection if the big patch
> was split into several pieces. Bridge, bonding, netfilter, etc.
> There doesn't appear to be any direct cross dependencies.
>
>



--
Tamim
PhD Candidate,
Kent State University
http://web.cs.kent.edu/~mislam4/