From: "Michael S. Tsirkin" <mst@redhat.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Stephen Hemminger <shemminger@vyatta.com>
Subject: Re: [PATCH] virtio-net: fix a race on 32bit arches
Date: Wed, 6 Jun 2012 21:43:52 +0300 [thread overview]
Message-ID: <20120606184351.GA20380@redhat.com> (raw)
In-Reply-To: <1339002782.26966.22.camel@edumazet-glaptop>
On Wed, Jun 06, 2012 at 07:13:02PM +0200, Eric Dumazet wrote:
> On Wed, 2012-06-06 at 19:17 +0300, Michael S. Tsirkin wrote:
>
> > But why do you say at most 1 packet?
> >
> > Consider get_stats doing:
> > u64_stats_update_begin(&stats->syncp);
> > stats->tx_bytes += skb->len;
> >
> > on 64 bit at this point
> > tx_packets might get incremented any number of times, no?
> >
> > stats->tx_packets++;
> > u64_stats_update_end(&stats->syncp);
> >
> > now tx_bytes and tx_packets are out of sync by more than 1.
>
> You lost me there.
>
> No idea of what you are thinking about.
Sorry about that. This is not a bug. I am saying two things:
1. We are trying to look at counters for purposes of tuning the device.
E.g. if ethtool reports packets and bytes, we'd like to calculate
average packet size by bytes/packets.
If both counters are read atomically the metric becomes more exact.
Not a must but nice to have.
2. 32 bit systems have some overhead because of the seqlock.
virtio could instead simply keep tx counters in the queue structure, and
get the tx lock when they are read.
--
MST
next prev parent reply other threads:[~2012-06-06 18:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-06 8:35 [PATCH] virtio-net: fix a race on 32bit arches Eric Dumazet
2012-06-06 8:45 ` Eric Dumazet
2012-06-06 9:37 ` Jason Wang
2012-06-06 11:13 ` Michael S. Tsirkin
2012-06-06 13:10 ` Eric Dumazet
2012-06-06 14:49 ` Michael S. Tsirkin
2012-06-06 15:14 ` Stephen Hemminger
2012-06-06 15:19 ` Eric Dumazet
2012-06-06 16:17 ` Michael S. Tsirkin
2012-06-06 17:13 ` Eric Dumazet
[not found] ` <1339002782.26966.22.camel@edumazet-glaptop>
2012-06-06 18:43 ` Michael S. Tsirkin [this message]
2012-06-06 20:06 ` Eric Dumazet
2012-06-06 20:19 ` Michael S. Tsirkin
2012-06-06 16:57 ` Michael S. Tsirkin
2012-06-06 20:00 ` Eric Dumazet
[not found] ` <20120606081432.6b602065@nehalam.linuxnetplumber.net>
2012-06-06 18:51 ` Michael S. Tsirkin
2012-06-06 19:54 ` Eric Dumazet
[not found] ` <1339012441.26966.48.camel@edumazet-glaptop>
2012-06-06 19:58 ` Michael S. Tsirkin
2012-06-06 20:08 ` Eric Dumazet
2012-06-06 20:16 ` Michael S. Tsirkin
2012-06-06 20:24 ` Eric Dumazet
2012-06-06 20:38 ` Eric Dumazet
2012-06-06 20:35 ` Ben Hutchings
2012-06-06 20:43 ` Michael S. Tsirkin
2012-06-06 20:19 ` Ben Hutchings
[not found] ` <1339013979.2836.52.camel@bwh-desktop.uk.solarflarecom.com>
2012-06-06 20:25 ` Eric Dumazet
2012-06-10 6:36 ` Rusty Russell
2012-06-10 7:03 ` Michael S. Tsirkin
2012-06-10 10:21 ` Eric Dumazet
2012-06-10 10:22 ` Michael S. Tsirkin
2012-06-10 10:25 ` Michael S. Tsirkin
2012-06-11 3:23 ` 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=20120606184351.GA20380@redhat.com \
--to=mst@redhat.com \
--cc=eric.dumazet@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.com \
--cc=virtualization@lists.linux-foundation.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).