From: Ben Greear <greearb@candelatech.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Miller <davem@davemloft.net>,
Patrick McHardy <kaber@trash.net>,
netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH] macvlan: lockless tx path
Date: Wed, 10 Nov 2010 13:35:29 -0800 [thread overview]
Message-ID: <4CDB1021.507@candelatech.com> (raw)
In-Reply-To: <1289421187.2469.127.camel@edumazet-laptop>
On 11/10/2010 12:33 PM, Eric Dumazet wrote:
> Le mercredi 10 novembre 2010 à 10:40 -0800, Ben Greear a écrit :
>
>> In my opinion, the kernel and/or driver should deal with this such that
>> at worst the user has to deal with 32 v/s 64 bits based on whether the
>> kernel is compiled for 32 or 64 bit CPUs. (Let the driver sample at
>> intervals needed to never wrap it's counters more than once and update
>> software stats of well-defined bit-width, and present those software
>> counters to users.
>>
>
> How so ? Are you willing to provide patches for all network drivers ?
I'm willing to attempt to fix something that I use and can test.
Either way, I think it's legitimate to document at least the desired
behaviour so that driver writers know what to aim for.
>> In practice, this seems to be the case, at least for the NICs I've used
>> (mostly Intel). But, please don't propagate the idea that any width of
>> counters is OK to present to user-space: It is completely unfair to
>> make app writers have to know the network driver and/or hardware quirks to
>> know how often it must sample stats.
>>
>
> I am sorry Ben, but /proc/net/dev doesnt publish each counter effective
> width. Its unfair, but its like that.
>
> An appplication must be able to cope for wrap arounds, running on a 32
> or 64bit kernel. Our duty is to provide 64bit counters for high speed
> interfaces where possible.
> For a 10Mb adapter, there is no need, since a 32bit counter doesnt wrap
> in less than one hour (RFC1902 suggestion)
So an application that must deal with wraps must poll at the minimal
time interval for wrapping 32-bit counters at whatever speed, or it
must pay attention to the driver to somehow know that this magic driver
can *really* do 64-bit stats properly?
Please note that just because a counter is less than the previous read,
that doesn't by itself tell us if it wrapped once or twice. And, if we
don't know at which number of bits it wraps, then we don't know how many
to add even if we are certain it wrapped only once.
In general, I want to treat eth0 the same as eth5, and not worry that one
is 10/100 realtek and the other a 10G Intel.
If netlink reports stats64, then those should only wrap at 64 bits,
and if it reports stats32, then wrap at 32-bits.
> As I said, many drivers counters are not 32bit or 64bit. I did many
> driver get_stats() checks lately...
>
> Why should we cap them to 32bit if they really are 36 or 40 bits ?
>
>
>> Well, maybe using u32 would have positive benefits on 64-bit kernels then?
>>
>
> But we want to handle 40/100Gbps devices, and keep SNMP apps happy.
>
> We really need 64bit for them, and MACVLAN might be used on top of such
> devices.
>
> Or are you suggesting using u32 instead of "unsigned long" for
> rx_errors/tx_dropped ?
>
> This would indeed save 8 bytes per cpu per macvlan.
Yes, that was what I was trying to suggest. I'm all for 64-bit numbers
in anything that can wrap anytime soon, and anywhere you think 32-bits
is enough, just use u32 so we don't have to worry about the number of
bits in 'unsigned long' on different platforms.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2010-11-10 21:35 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-10 15:41 [PATCH] macvlan: lockless tx path Eric Dumazet
2010-11-10 17:39 ` Ben Greear
2010-11-10 17:43 ` Eric Dumazet
2010-11-10 17:53 ` Ben Greear
2010-11-10 18:18 ` Eric Dumazet
2010-11-10 18:40 ` Ben Greear
2010-11-10 20:33 ` Eric Dumazet
2010-11-10 21:04 ` Ben Hutchings
2010-11-10 21:12 ` Eric Dumazet
2010-11-10 21:53 ` Ben Hutchings
2010-11-10 21:35 ` Ben Greear [this message]
2010-11-10 22:21 ` Eric Dumazet
2010-11-10 22:53 ` Ben Greear
2010-11-10 23:24 ` Eric Dumazet
2010-11-10 23:36 ` Eric Dumazet
2010-11-10 23:46 ` Ben Greear
2010-11-11 7:03 ` Eric Dumazet
2010-11-11 16:40 ` Ben Greear
2010-11-11 16:56 ` Eric Dumazet
2010-11-11 17:20 ` Ben Greear
2010-11-11 18:02 ` Eric Dumazet
2010-11-11 18:13 ` Ben Greear
2010-11-11 18:46 ` Eric Dumazet
2010-11-11 7:14 ` [PATCH net-next-2.6 v2] " Eric Dumazet
2010-11-12 8:20 ` Patrick McHardy
2010-11-16 18:59 ` 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=4CDB1021.507@candelatech.com \
--to=greearb@candelatech.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.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).