DPDK patches and discussions
 help / color / mirror / Atom feed
From: Dan Gora <dg@adax.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: dev@dpdk.org, Igor Ryzhov <iryzhov@nfware.com>,
	 Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: [dpdk-dev] [PATCH v2 5/5] examples/kni: improve zeroing statistics
Date: Thu, 27 Sep 2018 12:53:24 -0300	[thread overview]
Message-ID: <CAGyogRaUwVG8VkCmH9TXwCfTuF0MPLNehJDdra_V6-_US1ZGew@mail.gmail.com> (raw)
In-Reply-To: <1bc03874-f981-f5f2-e071-76c4fc1da96e@intel.com>

On Thu, Sep 27, 2018 at 8:40 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> >> Not sure about introducing an extra check to datapath for possible error on
> >> stats zero. I am for dropping this patch, what do you think?
> >
> > This is literally adding one instruction to the datapath.  Not even an
> > atomic instruction.  There is no effect on the performance caused by
> > this change.
> >
> > Is that not better than the user (like me who experienced this)
> > wondering why they cannot zero the counters even when there is no
> > traffic?
>
> Can we have something like, stop the forwarding, clear the stats and start
> forwarding back?

This is what is broken.  The stats do not zero because you have the
two worker threads who are constantly performing:

 kni_stats[port_id].rx_packets += num;

and

 kni_stats[port_id].tx_packets += nb_tx;

You know how read/inc/write races work, right?

These are not atomic increments, so the other thread zeroing these
counters is _always_ going to race with these worker threads
overwriting the counters with the old values.

With no traffic it's worse because the worker threads perform these
increments even more often!

> Yes effect is small but it is for each packet, it doesn't make sense to me to
> add extra check for each packet for the rare case of stats reset.

Its not rare at all!  You cannot zero the statistics around 80% of the
time on my machine when there is no traffic.  It's trivial to
reproduce this.  Just run a little traffic, stop the traffic, zero the
stats and check the stats.

If you cannot zero the statistics reliably under any circumstance then
the statistics themselves are worthless and should be removed.  It's
better to have no stats than completely unreliable ones.

  reply	other threads:[~2018-09-27 15:54 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-11 23:29 [dpdk-dev] [PATCH 0/2] kni: add API to set link status on kernel interface Dan Gora
2018-09-11 23:29 ` [dpdk-dev] [PATCH 1/2] " Dan Gora
2018-09-18 16:54   ` Ferruh Yigit
2018-09-18 17:41     ` Dan Gora
2018-09-11 23:29 ` [dpdk-dev] [PATCH 2/2] kni: set default carrier state to 'off' Dan Gora
2018-09-18 16:15   ` Ferruh Yigit
2018-09-18 16:48     ` Ferruh Yigit
2018-09-18 18:34       ` Dan Gora
2018-09-19 19:55 ` [dpdk-dev] [PATCH v2 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 1/5] " Dan Gora
2018-09-26 13:59     ` Ferruh Yigit
2018-09-26 14:55       ` Dan Gora
2018-09-26 16:42         ` Ferruh Yigit
2018-09-26 18:56           ` Dan Gora
2018-09-27 11:35             ` Ferruh Yigit
2018-09-27 15:40               ` Dan Gora
2018-09-27 21:49                 ` Ferruh Yigit
2018-09-27 23:05                   ` Dan Gora
2018-09-27 23:44                     ` Ferruh Yigit
2018-09-27 23:51                       ` Dan Gora
2018-09-28  8:02                         ` Igor Ryzhov
2018-09-28  8:03                         ` Ferruh Yigit
2018-10-03 19:07                           ` Dan Gora
2018-10-10 14:09                             ` Ferruh Yigit
2018-10-10 14:57                               ` Dan Gora
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 2/5] kni: set default carrier state to 'off' Dan Gora
2018-09-26 13:59     ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-09-26 14:00     ` Ferruh Yigit
2018-09-26 19:16       ` Dan Gora
2018-09-27 11:54         ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-09-26 14:00     ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-09-26 14:01     ` Ferruh Yigit
2018-09-26 14:48       ` Dan Gora
2018-09-27 11:40         ` Ferruh Yigit
2018-09-27 15:53           ` Dan Gora [this message]
2018-09-27 22:04             ` Ferruh Yigit
2018-09-27 22:40               ` Dan Gora
2018-09-27  0:32 ` [dpdk-dev] [PATCH v3 0/6] kni: add API to set link status on kernel interface Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 1/6] " Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 2/6] kni: add link status test Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 3/6] kni: set default carrier state to 'off' Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 4/6] examples/kni: monitor and update link status continually Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 5/6] examples/kni: add log msgs to show and clear stats Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 6/6] examples/kni: improve zeroing statistics Dan Gora
2018-10-10 14:16   ` [dpdk-dev] [PATCH v3 0/6] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-10 15:01     ` Dan Gora
2018-10-10 23:00       ` Ferruh Yigit
2018-10-10 23:36         ` Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 " Dan Gora
2018-10-17 15:29   ` Ferruh Yigit
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 1/6] " Dan Gora
2018-10-18 13:44   ` Ferruh Yigit
2018-10-18 19:00     ` Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 2/6] kni: add link status test Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 3/6] kni: set default carrier state of interface Dan Gora
2018-10-17 15:20   ` Ferruh Yigit
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 4/6] examples/kni: monitor and update link status continually Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 5/6] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 6/6] examples/kni: improve zeroing statistics Dan Gora
2018-10-19  0:23 ` [dpdk-dev] [PATCH v5 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 1/5] " Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 2/5] kni: set default carrier state of interface Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-22 12:51     ` Ferruh Yigit
2018-10-22 20:04       ` Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-22 13:03   ` [dpdk-dev] [PATCH v5 0/5] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-22 13:08     ` Thomas Monjalon
2018-10-22 13:14       ` Ferruh Yigit
2018-10-22 13:18         ` Thomas Monjalon
2018-10-24 20:27 ` [dpdk-dev] [PATCH v6 " Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 1/5] " Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 2/5] kni: set default carrier state of interface Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-24 20:46     ` Stephen Hemminger
2018-10-24 20:56       ` Dan Gora
2018-10-24 21:17         ` Stephen Hemminger
2018-10-24 21:45           ` Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-24 22:26 ` [dpdk-dev] [PATCH v7 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 1/5] " Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 2/5] kni: set default carrier state of interface Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-25 12:30   ` [dpdk-dev] [PATCH v7 0/5] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-26 17:43     ` Thomas Monjalon

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=CAGyogRaUwVG8VkCmH9TXwCfTuF0MPLNehJDdra_V6-_US1ZGew@mail.gmail.com \
    --to=dg@adax.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=iryzhov@nfware.com \
    --cc=stephen@networkplumber.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).