From: Daniel Borkmann <daniel@iogearbox.net>
To: Alexei Starovoitov <ast@plumgrid.com>,
Pablo Neira Ayuso <pablo@netfilter.org>,
Eric Dumazet <eric.dumazet@gmail.com>
Cc: netdev@vger.kernel.org, davem@davemloft.net, jhs@mojatatu.com
Subject: Re: [PATCH 2/2 net-next] net: move qdisc ingress filtering code where it belongs
Date: Tue, 12 May 2015 23:43:23 +0200 [thread overview]
Message-ID: <555273FB.6040800@iogearbox.net> (raw)
In-Reply-To: <55526F20.9020704@plumgrid.com>
On 05/12/2015 11:22 PM, Alexei Starovoitov wrote:
> On 5/12/15 6:27 AM, Daniel Borkmann wrote:
>>
>>> What's the i-cache size in your testbed?
>>
>> For the Xeon E3-1240, I get (via lscpu):
>>
>> L1d cache: 32K
>> L1i cache: 32K
>> L2 cache: 256K
>> L3 cache: 8192K
>
> my E5-1630 v3 @ 3.70GHz:
> L1d cache: 32K
> L1i cache: 32K
> L2 cache: 256K
> L3 cache: 10240K
>
> I think it's not cpu that is causing discrepancies
> between our numbers, but the difference in compilers or flags.
>
> Looking at Pablo's perf profile:
> 36.12% kpktgend_0 [kernel.kallsyms] [k] __netif_receive_skb_core
> 18.46% kpktgend_0 [kernel.kallsyms] [k] atomic_dec_and_test
> 15.87% kpktgend_0 [kernel.kallsyms] [k] deliver_ptype_list_skb
> 5.04% kpktgend_0 [pktgen] [k] pktgen_thread_worker
> 4.81% kpktgend_0 [kernel.kallsyms] [k] netif_receive_skb_internal
> 4.11% kpktgend_0 [kernel.kallsyms] [k] kfree_skb
> 3.89% kpktgend_0 [kernel.kallsyms] [k] ip_rcv
>
> It means that deliver_ptype_list_skb() is not inlined, which is odd
> and atomic_dec_and_test() from kfree_skb() is also not inlined either.
> Both functions are marked 'static inline'. So I suspect the kernel was
> compiled with some broken gcc or CONFIG_CC_OPTIMIZE_FOR_SIZE is set.
> If gcc is old/broken, it's really bad, since it can be mis-optimizing
> bunch of other things.
There was a recent lkml thread from Hagen wrt bad inlining heuristics
of gcc:
https://lkml.org/lkml/2015/4/20/637
https://lkml.org/lkml/2015/4/23/598
"Here is the situation: the inlining problem occur with the 4.9.x
branch - I tried to reproduce it with 4.8.x and saw *no* problems."
[ I was using: gcc (GCC) 4.8.3 20140624 (Red Hat 4.8.3-1) ]
> If optimize_for_size is set, then it's not great for performance
> either, since compiler will be trying way too hard to squeeze
> code size and losing performance left and right.
> btw, there is patch pending on lkml to make
> atomic_dec_and_test() __always_inline.
>
> -Os is also causing static_key to ignore 'unlikely', so all cold
> branches are generated as fall through which causing I-cache misses.
> I've looked at net/core/dev.s with -Os and it's not pretty.
> bstats_update, deliver_skb, deliver_ptype_list_skb are all not inlined.
>
> There was a thread on lkml recently to request better behaving -Os from
> gcc guys, but I think it didn't go anywhere.
next prev parent reply other threads:[~2015-05-12 21:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-10 16:59 [PATCH 0/2 net-next] critical ingress path performance improvements Pablo Neira Ayuso
2015-05-10 16:59 ` [PATCH 1/2 net-next] net: kill useless net_*_ingress_queue() definitions when NET_CLS_ACT is unset Pablo Neira Ayuso
2015-05-10 16:58 ` Sergei Shtylyov
2015-05-10 16:59 ` [PATCH 2/2 net-next] net: move qdisc ingress filtering code where it belongs Pablo Neira Ayuso
2015-05-10 17:25 ` Eric Dumazet
2015-05-10 17:45 ` Alexei Starovoitov
2015-05-10 17:59 ` Pablo Neira Ayuso
2015-05-10 18:05 ` Alexei Starovoitov
2015-05-10 18:24 ` Pablo Neira Ayuso
2015-05-10 18:47 ` Alexei Starovoitov
2015-05-10 19:00 ` Pablo Neira Ayuso
2015-05-10 19:06 ` Alexei Starovoitov
2015-05-10 19:20 ` Pablo Neira Ayuso
2015-05-10 19:37 ` Alexei Starovoitov
2015-05-10 19:50 ` Pablo Neira Ayuso
2015-05-10 21:31 ` Daniel Borkmann
2015-05-10 21:44 ` Daniel Borkmann
2015-05-10 23:43 ` Pablo Neira Ayuso
2015-05-11 5:57 ` Alexei Starovoitov
2015-05-11 12:49 ` Jamal Hadi Salim
2015-05-11 12:58 ` Daniel Borkmann
2015-05-11 17:15 ` Alexei Starovoitov
2015-05-11 13:32 ` Pablo Neira Ayuso
2015-05-11 14:35 ` Eric Dumazet
2015-05-11 23:02 ` Alexei Starovoitov
2015-05-11 23:30 ` Eric Dumazet
2015-05-12 3:21 ` Alexei Starovoitov
2015-05-12 12:55 ` Pablo Neira Ayuso
2015-05-12 13:27 ` Daniel Borkmann
2015-05-12 21:22 ` Alexei Starovoitov
2015-05-12 21:43 ` Daniel Borkmann [this message]
2015-05-10 20:40 ` Daniel Borkmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=555273FB.6040800@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=ast@plumgrid.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=jhs@mojatatu.com \
--cc=netdev@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).