netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <brouer@redhat.com>
To: David Miller <davem@davemloft.net>
Cc: toke@redhat.com, kuba@kernel.org, lorenzo@kernel.org,
	netdev@vger.kernel.org, ilias.apalodimas@linaro.org,
	lorenzo.bianconi@redhat.com, andrew@lunn.ch, dsahern@kernel.org,
	bpf@vger.kernel.org, brouer@redhat.com
Subject: Re: [RFC net-next] net: mvneta: align xdp stats naming scheme to mlx5 driver
Date: Wed, 19 Feb 2020 09:26:11 +0100	[thread overview]
Message-ID: <20200219092611.1060dbb0@carbon> (raw)
In-Reply-To: <20200218.154713.1411536344737312845.davem@davemloft.net>

On Tue, 18 Feb 2020 15:47:13 -0800 (PST)
David Miller <davem@davemloft.net> wrote:

> From: Toke Høiland-Jørgensen <toke@redhat.com>
> Date: Tue, 18 Feb 2020 23:23:22 +0100
> 
> > Jakub Kicinski <kuba@kernel.org> writes:
> >   
> >> On Tue, 18 Feb 2020 01:14:29 +0100 Lorenzo Bianconi wrote:  
> >>> Introduce "rx" prefix in the name scheme for xdp counters
> >>> on rx path.
> >>> Differentiate between XDP_TX and ndo_xdp_xmit counters
> >>> 
> >>> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>  
> >>
> >> Sorry for coming in late.
> >>
> >> I thought the ability to attach a BPF program to a fexit of another BPF
> >> program will put an end to these unnecessary statistics. IOW I maintain
> >> my position that there should be no ethtool stats for XDP.
> >>
> >> As discussed before real life BPF progs will maintain their own stats
> >> at the granularity of their choosing, so we're just wasting datapath
> >> cycles.

Well, in practice we see that real-life[1] BPF progs don't maintain
stats (as I agree they _should_), and an end-user of this showed up on
XDP-newbies list, and I helped out, going in the complete wrong
direction, when it was simply the XDP prog dropping these packets, due
to builtin rate limiter.  It would have been so much easier to identify
via a simple counter, that I could have asked for from the sysadm.

[1] https://gitlab.com/Dreae/compressor/

> >>
> >> The previous argument that the BPF prog stats are out of admin control
> >> is no longer true with the fexit option (IIUC how that works).  
> > 
> > So you're proposing an admin that wants to keep track of XDP has to
> > (permantently?) attach an fexit program to every running XDP program and
> > use that to keep statistics? But presumably he'd first need to discover
> > that XDP is enabled; which the ethtool stats is a good hint for :)  
> 
> Really, mistakes happen and a poorly implemented or inserted fexit
> module should not be a reason to not have access to accurate and
> working statistics for fundamental events.

Yes, exactly.  These statistics counters are only "basic" XDP events,
that e.g. don't count the bytes.  They are only the first level of
identifying what the system is doing.  When digging deeper we need
tracepoint and fexit.

> I am therefore totally against requiring fexit for this functionality.
> If you want more sophisticated events or custome ones, sure, but not
> for this baseline stuff.

I fully agree.

> I do, however, think we need a way to turn off these counter bumps if
> the user wishes to do so for maximum performance.

I sort of agree, but having a mechanism to turn on/off these "basic"
counters might cost more than just always having them always on.  Even
the static_key infra will create sub-optimal code, which can throw-off
the advantage.

Maybe it is worth pointing out, that Lorenzo's code is doing something
smart, which lowers the overhead.  The stats struct (mvneta_stats) that
is passed to mvneta_run_xdp is not global, it only counts events in
this NAPI cycle, and is first transferred to the global counters when
drivers NAPI functions end, calling mvneta_update_stats().  (We can
optimized this a bit more on this HW as it is not necessary to have u64
long counters for these temp/non-global stats).

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer


      parent reply	other threads:[~2020-02-19  8:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-18  0:14 [RFC net-next] net: mvneta: align xdp stats naming scheme to mlx5 driver Lorenzo Bianconi
2020-02-18  3:12 ` David Ahern
2020-02-18 17:02 ` Jesper Dangaard Brouer
2020-02-18 17:17   ` Lorenzo Bianconi
2020-02-18 17:48     ` Jesper Dangaard Brouer
2020-02-18 18:03       ` Lorenzo Bianconi
2020-02-18 21:29 ` Jakub Kicinski
2020-02-18 22:23   ` Toke Høiland-Jørgensen
2020-02-18 23:19     ` Daniel Borkmann
2020-02-18 23:24       ` David Ahern
2020-02-18 23:49         ` David Miller
2020-02-18 23:48       ` David Miller
2020-02-18 23:47     ` David Miller
2020-02-19  3:31       ` Jakub Kicinski
2020-02-19  8:26       ` Jesper Dangaard Brouer [this message]

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=20200219092611.1060dbb0@carbon \
    --to=brouer@redhat.com \
    --cc=andrew@lunn.ch \
    --cc=bpf@vger.kernel.org \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=kuba@kernel.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=lorenzo@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=toke@redhat.com \
    /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).