Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Feb 2009 09:44:32 -1000 (HST)
From:      Jeff Roberson <jroberson@jroberson.net>
To:        Julian Elischer <julian@elischer.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: mbuf revision, testers/comments wanted.
Message-ID:  <20090202094307.O983@desktop>
In-Reply-To: <4986A6F7.7080402@elischer.org>
References:  <20090131125100.N983@desktop> <4986A6F7.7080402@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 1 Feb 2009, Julian Elischer wrote:

> Jeff Roberson wrote:
>> http://people.freebsd.org/~jeff/mbuf_ref2.diff
>> 
>> Hello,
>> 
>> I have been experimenting with different revisions to the mbuf api to 
>> improve performance and simplify code.  This patch is the first of several 
>> proposed steps towards those goals.  The aim of this patch is two fold;
>> 
>> 1)  Revising the reference counting system so that we can eliminate 
>> reference uma zones and the significant uma_find_refcnt() costs in some 
>> workloads.  This is done by making all mbufs reference counted and using 
>> the owning mbuf's ref for the ext_ref.  In this model we never reference 
>> data, we only reference other mbufs owning the data.
>> 
>> 2)  Improve allocation and free performance by reducing the special cases 
>> in the format and using inlines when appropriate.  In particular, the 
>> simplification of the m_ext structure yields less code and confusion for 
>> dealing with external storage on free.  The ctor/dtor mbuf routines are no 
>> longer used.  A zone pointer and length was added to struct mbuf to 
>> simplify free and size calculations.
>> 
>> A number of routines were made much, much simpler by the addition of a 
>> 16bit size field.  Previously we dependend on calculating the size by 
>> figuring out if it was an ext, pkthdr, or standard mbuf.  Ultimately, this 
>> patch moves us closer to having a size agnostic mbuf which we can use to 
>> experiment with different allocation sizes or even backending to malloc for 
>> dynamically sized mbufs.
>> 
>> I would appreciate testing feedback from varied workloads to make sure 
>> there are no bugs before I go forward with this.  I have tested only host 
>> oriented networking with a few drivers.  It is not anticipated that there 
>> will be any significant incompatibilities introduced with this round but 
>> there is always that possibility.
>> 
>
>
> generally I like it.
>
> We discussed someof this before..
>
>
> It would be nice if you added more comments than you stripped out
> I personally think that some descriptions of what you are doing
> would be great in teh comments.

Yes, I can do that.  I hadn't added as much because things are still a bit 
in flux.

>
> ascii art too if needed...
>
> Also some diagrams in any form you want would be nice..
> all that about 1000 words and a picture is true.

I'll have to see about that.  Any suggestions similar to visio for unix? 
I guess graphviz can also do datastructure diagrams but I have not used it 
for this before.  I'll check it out but if you have other suggestions it's 
welcome.

Thanks,
Jeff

>
>> Thanks,
>> Jeff
>> _______________________________________________
>> freebsd-net@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
>



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