From: Brent Cook <bcook@bpointsys.com>
To: Bill Fink <billfink@mindspring.com>
Cc: Jeff Garzik <jeff@garzik.org>,
phil@ipom.com, davem@davemloft.net, netdev@vger.kernel.org
Subject: Re: reminder, 2.6.18 window...
Date: Thu, 25 May 2006 08:05:37 -0500 [thread overview]
Message-ID: <200605250805.38241.bcook@bpointsys.com> (raw)
In-Reply-To: <20060525032357.4990425f.billfink@mindspring.com>
On Thursday 25 May 2006 02:23, Bill Fink wrote:
> On Wed, 24 May 2006, Jeff Garzik wrote:
> > Brent Cook wrote:
> > > Note that this is just clearing the hardware statistics on the
> > > interface, and would not require any kind of atomic_increment addition
> > > for interfaces that support that. It would be kind-of awkward to
> > > implement this on drivers that increment stats in hardware though (lo,
> > > vlan, br, etc.) This also brings up the question of resetting the stats
> > > for 'netstat -s'
> >
> > If you don't atomically clear the statistics, then you are leaving open
> > a window where the stats could easily be corrupted, if the network
> > interface is under load.
> >
> > This 'clearing' operation has implications on the rest of the statistics
> > usage.
> >
> > More complexity, and breaking of apps, when we could just use the
> > existing, working system? I'll take the "do nothing, break nothing,
> > everything still works" route any day.
>
> I'll admit to not knowing all the intricacies of the kernel coding
> involved, but I don't offhand see how zeroing the stats would be
> significantly more complex than updating the stats during normal usage.
> But I'll have to leave that argument to the experts.
>
What it boils down to is that currently, a single CPU or thread ever touches
the stats concurrently, so it doesn't have to lock them or do anything
special to ensure that the continue incrementing. If you want to make sure
that the statistics actually reset when you want them to, you have to account
for this case:
CPU0 reads current value from memory (increment)
CPU1 writes 0 to current value in memory (reset)
CPU0 writes incremented value to memory (increment complete)
Check out do_add_counters() in net/ipv4/netfilter/ip_tables.c
to see what's required to do this reliably in the kernel.
The current patch is fine if your hardware implements the required atomicity
itself. Otherwise, you need a locking infrastructure to extend it to all
network devices if you want zeroing to always work. What I'm seeing here in
response to this is that it doesn't matter if zeroing just _mostly_ works,
which is what you would get if you didn't lock. Eh, I'm OK with that too, but
I think people are worried about the bugs that would get filed by admins when
just zeroing the stats on cheap NIC x only works 90% of the time, less under
load. Or not at all (not implemented in driver.) Then you're back to the
userspace solution or actually implement stat locking / atomic ops.
- Brent
next prev parent reply other threads:[~2006-05-25 13:07 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-24 1:22 reminder, 2.6.18 window David Miller
2006-05-24 8:01 ` Phil Dibowitz
2006-05-24 18:21 ` jamal
2006-05-24 18:23 ` Jeff Garzik
2006-05-24 18:34 ` Rick Jones
2006-05-24 18:56 ` Phil Dibowitz
2006-05-24 19:05 ` Jeff Garzik
2006-05-24 19:14 ` Phil Dibowitz
2006-05-24 20:01 ` Brent Cook
2006-05-24 20:08 ` Jeff Garzik
2006-05-25 7:23 ` Bill Fink
2006-05-25 13:05 ` Brent Cook [this message]
2006-05-25 16:12 ` Bill Fink
2006-05-25 17:59 ` Phil Dibowitz
2006-05-25 18:41 ` Brent Cook
2006-05-25 19:22 ` Phil Dibowitz
2006-05-25 20:29 ` David Miller
2006-05-25 21:04 ` Phil Dibowitz
2006-05-25 21:07 ` David Miller
2006-05-26 9:52 ` Andi Kleen
2006-05-25 13:34 ` Dave Dillow
2006-05-26 9:46 ` Andi Kleen
2006-05-24 20:10 ` jamal
2006-05-24 20:25 ` Rick Jones
2006-05-25 15:27 ` jamal
2006-05-25 16:43 ` Rick Jones
2006-05-26 22:06 ` Rick Jones
2006-05-24 20:44 ` Brian Haley
2006-05-24 21:01 ` Rick Jones
2006-05-26 6:48 ` Phil Dibowitz
2006-05-24 20:48 ` Phil Dibowitz
2006-05-24 21:04 ` Rick Jones
2006-05-24 21:10 ` Ben Greear
2006-05-25 5:01 ` Phil Dibowitz
2006-05-25 7:18 ` Ben Greear
2006-05-25 7:55 ` Bill Fink
2006-05-25 12:17 ` Francois Romieu
2006-05-25 9:53 ` Pekka Savola
2006-05-24 20:53 ` Andy
2006-05-26 9:43 ` Andi Kleen
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=200605250805.38241.bcook@bpointsys.com \
--to=bcook@bpointsys.com \
--cc=billfink@mindspring.com \
--cc=davem@davemloft.net \
--cc=jeff@garzik.org \
--cc=netdev@vger.kernel.org \
--cc=phil@ipom.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).