Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jul 2002 19:31:17 -0400 (EDT)
From:      Kelly Yancey <kbyanc@posi.net>
To:        Bosko Milekic <bmilekic@unixdaemons.com>
Cc:        Luigi Rizzo <rizzo@icir.org>, freebsd-net@FreeBSD.ORG
Subject:   Re: mbuf external buffer reference counters
Message-ID:  <Pine.BSF.4.05.10207111913160.46046-100000@kronos.networkrichmond.com>
In-Reply-To: <20020711171255.A19014@unixdaemons.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 11 Jul 2002, Bosko Milekic wrote:

> 
> On Thu, Jul 11, 2002 at 01:56:08PM -0700, Luigi Rizzo wrote:
> > example: userland does an 8KB write, in the old case this requires
> > 4 clusters, with the new one you end up using 4 clusters and stuff
> > the remaining 16 bytes in a regular mbuf, then depending on the
> > relative producer-consumer speed the next write will try to fill
> > the mbuf and attach a new cluster, and so on... and when TCP hits
> > these data-in-mbuf blocks will have to copy rather than reference
> > the data blocks...
> > 
> > Maybe it is irrelevant for performance, maybe it is not,
> > i am not sure.
> 
>   I see what you're saying.  I think that what this means is simply that
>   the `optimal' chunk of data to send is just a different size, so
>   instead of it being 8192 bytes, it'll be something like 8180 bytes or
>   something (to account for the counters).  So, in other words, it
>   really depends on the frequency of exact 8192 sized sends in userland
>   applications.
> 

  ...or exactly 2k or 4k or 6k or 10k...

>   This is a good observation if we're going to be doing benchmarking,
>   but I'm not sure whether the repercussions are that important (unless,
>   as I said, there's a lot of applications that send exactly 8192
>   byte chunks?).  Basically, what we're doing is shifting the optimal
>   send size when using exactly 4 clusters, in this case, to (8192 - 16)
>   bytes.  We can still send with exactly 4 clusters, it's just that the
>   optimal send size is a little different, that's all (this produces a
>   small shift in block send benchmark curves, usually).
> 

  Are you kidding?  Benchmarks, presumably like every other piece of
software produced by someone trying to get the most performance out of
the system, are more likely to have power-of-two write buffers.  Are you
willing to risk that they didn't also just happen to pick a multiple of
2^11?

  Yes, it seems elegant to put the counters in the space that is normally
unused for receive mbuf clusters, but you can't just blow off Luigi's
point regarding the send side.

  Kelly

--
Kelly Yancey -- kbyanc@{posi.net,FreeBSD.org}


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.10207111913160.46046-100000>