From: Jesper Dangaard Brouer <brouer@redhat.com>
To: Alexei Starovoitov <ast@plumgrid.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Daniel Borkmann <daniel@iogearbox.net>,
netdev@vger.kernel.org, brouer@redhat.com
Subject: Re: [PATCH net-next] pktgen: fix packet generation
Date: Tue, 12 May 2015 10:19:52 +0200 [thread overview]
Message-ID: <20150512101952.29e2b4af@redhat.com> (raw)
In-Reply-To: <1431382788-6051-1-git-send-email-ast@plumgrid.com>
On Mon, 11 May 2015 15:19:48 -0700
Alexei Starovoitov <ast@plumgrid.com> wrote:
> pkt_gen->last_ok was not set properly, so after the first burst
> pktgen instead of allocating new packet, will reuse old one, advance
> eth_type_trans further, which would mean the stack will be seeing very
> short bogus packets.
>
> Fixes: 62f64aed622b ("pktgen: introduce xmit_mode '<start_xmit|netif_receive>'")
> Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
> ---
> This bug slipped through due to all code refactoring and can be seen
> after clean reboot. If taps, rps or tx mode was used at least once,
> the bug will be hidden.
>
> Note to users: if you don't see ip_rcv() in your perf profile, it means
> you were hitting this.
> As commit log of 62f64aed622b is saying, the baseline perf profile
> should look like:
> 37.69% kpktgend_0 [kernel.vmlinux] [k] __netif_receive_skb_core
> 25.81% kpktgend_0 [kernel.vmlinux] [k] kfree_skb
> 7.22% kpktgend_0 [kernel.vmlinux] [k] ip_rcv
> 5.68% kpktgend_0 [pktgen] [k] pktgen_thread_worker
>
> Jesper, that explains why you were seeing hot:
> atomic_long_inc(&skb->dev->rx_dropped);
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Yes, just confirmed that this problem is gone. E.g. the multiqueue
script now scales without hitting this "skb->dev->rx_dropped".
Device: eth4@0
21127682pps 10141Mb/sec (10141287360bps) errors: 10000000
Device: eth4@1
22170175pps 10641Mb/sec (10641684000bps) errors: 10000000
Device: eth4@2
22230977pps 10670Mb/sec (10670868960bps) errors: 10000000
Device: eth4@3
22269033pps 10689Mb/sec (10689135840bps) errors: 10000000
I was also a little puzzled that I was not seeing kmem_cache_{alloc/free}
in my previous perf reports, but I just assumed burst was very efficient.
Good this got fixed, as my plan is to use this to profile the memory
allocators fast path for SKB alloc/free.
Setting "burst = 0" (and flag NO_TIMESTAMP):
Device: eth4@0
3938513pps 1890Mb/sec (1890486240bps) errors: 10000000
Thus, performance hit from 22.1Mpps to 3.9Mpps, thus 209 nanosec more
expensive. 20% is the cost of pktgen itself, still I'm surprised that
the hit is this big, as this should hit the most optimal cache-hot case
of SKB alloc/free.
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Sr. Network Kernel Developer at Red Hat
Author of http://www.iptv-analyzer.org
LinkedIn: http://www.linkedin.com/in/brouer
next prev parent reply other threads:[~2015-05-12 8:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 22:19 [PATCH net-next] pktgen: fix packet generation Alexei Starovoitov
2015-05-12 8:19 ` Jesper Dangaard Brouer [this message]
2015-05-12 15:49 ` Alexei Starovoitov
2015-05-13 3:10 ` David Miller
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=20150512101952.29e2b4af@redhat.com \
--to=brouer@redhat.com \
--cc=ast@plumgrid.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=netdev@vger.kernel.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).