Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Jul 2006 09:34:57 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        freebsd-current@freebsd.org, olli@lurza.secnetix.de
Subject:   Re: vmstat's entries type
Message-ID:  <20060720.093457.1661914908.imp@bsdimp.com>
In-Reply-To: <200607191315.k6JDFpvM048354@lurza.secnetix.de>
References:  <1153312635.1261.22.camel@genius.i.cz> <200607191315.k6JDFpvM048354@lurza.secnetix.de>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <200607191315.k6JDFpvM048354@lurza.secnetix.de>
            Oliver Fromme <olli@lurza.secnetix.de> writes:
: Michal Mertl <mime@traveller.cz> wrote:
:  > We had discussions about 64 bit counters several times during the years
:  > (I made a huge patch which turned every network related counter 64bit
:  > and all accesses were made with a macro) and the conclusion was that it
:  > isn't worth it.
:  > 
:  > 64bit numbers are too expensive to do correctly on 32bit machines. When
:  > done incorrectly they can easily get incorrect and that is probably
:  > worse than a simple counter in machine's native word size (which can
:  > still get incorrect on some architectures).
:  > 
:  > I expect you know that long is usually 64bit wide on 64bit
:  > architectures. The discussion about 64bit counters on 32bit machines
:  > doesn't make much sense when AMD64 is becoming the mainstream
:  > architecture and the right type to use for integers (that can get
:  > "large") is long IMHO.
: 
: I see.  I'm mostly a userland programmer, and when there's
: a variable that might overflow 32 bits, then I always use a
: 64 bit type (e.g. uint64_t), no matter whether I'm on a 32
: bit or 64 bit architecture.  It's all about portability and
: reliability.  In fact, I rarely use "long", because I think
: it's not very useful.
: 
: However, I got your point.  Kernel programming is different
: from userland programming, and I'm aware that using 64 bit
: values can cause problems on 32 bit architectures (which I
: mentioned in my previous mail).

One approach that we could use for 64-bit counters would be to just
use 32-bits one, and poll them for overflow and bump an overflow
count.  This assumes that the 32-bit counters overflow much less often
than the polling interval, and easily triples the amount of storage
for each of them...  It is ugly :-(

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060720.093457.1661914908.imp>