[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190605095931.5d90b69c@carbon>
Date: Wed, 5 Jun 2019 09:59:31 +0200
From: Jesper Dangaard Brouer <brouer@...hat.com>
To: Toshiaki Makita <toshiaki.makita1@...il.com>
Cc: Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <jakub.kicinski@...ronome.com>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
netdev@...r.kernel.org, xdp-newbies@...r.kernel.org,
bpf@...r.kernel.org,
Toke Høiland-Jørgensen <toke@...hat.com>,
Jason Wang <jasowang@...hat.com>, brouer@...hat.com,
Brendan Gregg <brendan.d.gregg@...il.com>
Subject: Re: [PATCH v2 bpf-next 1/2] xdp: Add tracepoint for bulk XDP_TX
On Wed, 5 Jun 2019 14:36:12 +0900
Toshiaki Makita <toshiaki.makita1@...il.com> wrote:
> This is introduced for admins to check what is happening on XDP_TX when
> bulk XDP_TX is in use, which will be first introduced in veth in next
> commit.
Is the plan that this tracepoint 'xdp:xdp_bulk_tx' should be used by
all drivers?
(more below)
> Signed-off-by: Toshiaki Makita <toshiaki.makita1@...il.com>
> ---
> include/trace/events/xdp.h | 25 +++++++++++++++++++++++++
> kernel/bpf/core.c | 1 +
> 2 files changed, 26 insertions(+)
>
> diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h
> index e95cb86..e06ea65 100644
> --- a/include/trace/events/xdp.h
> +++ b/include/trace/events/xdp.h
> @@ -50,6 +50,31 @@
> __entry->ifindex)
> );
>
> +TRACE_EVENT(xdp_bulk_tx,
> +
> + TP_PROTO(const struct net_device *dev,
> + int sent, int drops, int err),
> +
> + TP_ARGS(dev, sent, drops, err),
> +
> + TP_STRUCT__entry(
All other tracepoints in this file starts with:
__field(int, prog_id)
__field(u32, act)
or
__field(int, map_id)
__field(u32, act)
Could you please add those?
> + __field(int, ifindex)
> + __field(int, drops)
> + __field(int, sent)
> + __field(int, err)
> + ),
The reason is that this make is easier to attach to multiple
tracepoints, and extract the same value.
Example with bpftrace oneliner:
$ sudo bpftrace -e 'tracepoint:xdp:xdp_* { @action[args->act] = count(); }'
Attaching 8 probes...
^C
@action[4]: 30259246
@action[0]: 34489024
XDP_ABORTED = 0
XDP_REDIRECT= 4
> +
> + TP_fast_assign(
__entry->act = XDP_TX;
> + __entry->ifindex = dev->ifindex;
> + __entry->drops = drops;
> + __entry->sent = sent;
> + __entry->err = err;
> + ),
> +
> + TP_printk("ifindex=%d sent=%d drops=%d err=%d",
> + __entry->ifindex, __entry->sent, __entry->drops, __entry->err)
> +);
> +
Other fun bpftrace stuff:
sudo bpftrace -e 'tracepoint:xdp:xdp_*map* { @map_id[comm, args->map_id] = count(); }'
Attaching 5 probes...
^C
@map_id[swapper/2, 113]: 1428
@map_id[swapper/0, 113]: 2085
@map_id[ksoftirqd/4, 113]: 2253491
@map_id[ksoftirqd/2, 113]: 25677560
@map_id[ksoftirqd/0, 113]: 29004338
@map_id[ksoftirqd/3, 113]: 31034885
$ bpftool map list id 113
113: devmap name tx_port flags 0x0
key 4B value 4B max_entries 100 memlock 4096B
p.s. People should look out for Brendan Gregg's upcoming book on BPF
performance tools, from which I learned to use bpftrace :-)
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
Powered by blists - more mailing lists