From: Daniel Borkmann <daniel@iogearbox.net>
To: Alexei Starovoitov <ast@plumgrid.com>,
"David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>, Thomas Graf <tgraf@suug.ch>,
Jamal Hadi Salim <jhs@mojatatu.com>,
John Fastabend <john.r.fastabend@intel.com>,
netdev@vger.kernel.org
Subject: Re: [PATCH RFC net-next] netif_receive_skb performance
Date: Wed, 29 Apr 2015 11:37:41 +0200 [thread overview]
Message-ID: <5540A665.7030406@iogearbox.net> (raw)
In-Reply-To: <1430273488-8403-1-git-send-email-ast@plumgrid.com>
On 04/29/2015 04:11 AM, Alexei Starovoitov wrote:
...
> It's typical usage:
> $ sudo ./pktgen.sh eth0
> ...
> Result: OK: 232376(c232372+d3) usec, 10000000 (60byte,0frags)
> 43033682pps 20656Mb/sec (20656167360bps) errors: 10000000
...
> My main goal was to benchmark ingress qdisc.
> So here are the numbers:
> raw netif_receive_skb->ip_rcv->kfree_skb - 43 Mpps
> adding ingress qdisc to eth0 drops performance to - 26 Mpps
> adding 'u32 match u32 0 0' drops if further to - 22.4 Mpps
> All as expected.
>
> Now let's remove ingress spin_lock (the goal of John's patches) - 24.5 Mpps
> Note this is single core receive. The boost from removal will be much higher
> on a real nic with multiple cores servicing rx irqs.
>
> With my experimental replacement of ingress_queue/sch_ingress with
> ingress_filter_list and 'u32 match u32 0 0' classifier - 26.2 Mpps
>
> Experimental ingress_filter_list and JITed bpf 'return 0' program - 27.2 Mpps
>
> So there is definitely room for further improvements in ingress
> qdisc beyond dropping spin_lock.
Is the below the case where the conntracker has always a miss and thus
each time needs to create new entries, iow pktgen DoS with random IPs?
> Few other numbers for comparison with dmac == eth0 mac:
> no qdisc, with conntrack and empty iptables - 2.2 Mpps
> 7.65% kpktgend_0 [nf_conntrack] [k] nf_conntrack_in
> 7.62% kpktgend_0 [kernel.vmlinux] [k] fib_table_lookup
> 5.44% kpktgend_0 [kernel.vmlinux] [k] __call_rcu.constprop.63
> 3.71% kpktgend_0 [kernel.vmlinux] [k] nf_iterate
> 3.59% kpktgend_0 [ip_tables] [k] ipt_do_table
>
> no qdisc, unload conntrack, keep empty iptables - 5.4 Mpps
> 18.17% kpktgend_0 [kernel.vmlinux] [k] fib_table_lookup
> 8.31% kpktgend_0 [kernel.vmlinux] [k] ip_rcv
> 7.97% kpktgend_0 [kernel.vmlinux] [k] __netif_receive_skb_core
> 7.53% kpktgend_0 [ip_tables] [k] ipt_do_table
>
> no qdisc, unload conntrack, unload iptables - 6.5 Mpps
> 21.97% kpktgend_0 [kernel.vmlinux] [k] fib_table_lookup
> 9.64% kpktgend_0 [kernel.vmlinux] [k] __netif_receive_skb_core
> 8.44% kpktgend_0 [kernel.vmlinux] [k] ip_rcv
> 7.19% kpktgend_0 [kernel.vmlinux] [k] __skb_clone
> 6.89% kpktgend_0 [kernel.vmlinux] [k] fib_validate_source
>
> After I'm done with ingress qdisc improvements, I'm planning
> to look at netif_receive_skb itself, since it looks a bit too hot.
...
next prev parent reply other threads:[~2015-04-29 9:37 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-29 2:11 [PATCH RFC net-next] netif_receive_skb performance Alexei Starovoitov
2015-04-29 2:11 ` [PATCH RFC net-next] pktgen: introduce 'rx' mode Alexei Starovoitov
2015-04-29 4:14 ` Eric Dumazet
2015-04-29 21:55 ` Alexei Starovoitov
2015-04-29 22:19 ` Eric Dumazet
2015-04-29 22:38 ` Alexei Starovoitov
2015-04-29 22:56 ` Eric Dumazet
2015-04-29 23:28 ` Alexei Starovoitov
2015-04-29 23:39 ` Eric Dumazet
2015-04-29 23:59 ` Alexei Starovoitov
2015-04-29 5:23 ` [PATCH RFC net-next] netif_receive_skb performance Eric Dumazet
2015-04-29 22:15 ` Alexei Starovoitov
2015-04-29 9:37 ` Daniel Borkmann [this message]
2015-04-29 22:20 ` Alexei Starovoitov
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=5540A665.7030406@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=ast@plumgrid.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jhs@mojatatu.com \
--cc=john.r.fastabend@intel.com \
--cc=netdev@vger.kernel.org \
--cc=tgraf@suug.ch \
/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).