Re: [PATCH] net: improve ipv4 performances

From: Eric Dumazet
Date: Mon Apr 02 2018 - 00:50:07 EST




On 04/01/2018 11:31 AM, Anton Gary Ceph 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
>

These iperf3 numbers are simply telling something is wrong in your measures or your hardware.

By the time linux kernels with this patch reach hosts, they will likely use IPv6 anyway.

Please do not tell the compiler that IPv6 should be slowed down in favor of IPv4.

Instead, work on removing IPv4 stack from linux kernel (making it a module)