Date: Fri, 5 Jul 2002 09:34:35 -0400 From: Bosko Milekic <bmilekic@unixdaemons.com> To: Andrew Gallatin <gallatin@cs.duke.edu> Cc: "Kenneth D. Merry" <ken@kdm.org>, net@FreeBSD.ORG Subject: Re: virtually contig jumbo mbufs (was Re: new zero copy sockets snapshot) Message-ID: <20020705093435.A25047@unixdaemons.com> In-Reply-To: <15653.35919.24295.698563@grasshopper.cs.duke.edu>; from gallatin@cs.duke.edu on Fri, Jul 05, 2002 at 08:08:47AM -0400 References: <20020619120641.A18434@unixdaemons.com> <15633.17238.109126.952673@grasshopper.cs.duke.edu> <20020619233721.A30669@unixdaemons.com> <15633.62357.79381.405511@grasshopper.cs.duke.edu> <20020620114511.A22413@unixdaemons.com> <15634.534.696063.241224@grasshopper.cs.duke.edu> <20020620134723.A22954@unixdaemons.com> <15652.46870.463359.853754@grasshopper.cs.duke.edu> <20020705002056.A5365@unixdaemons.com> <15653.35919.24295.698563@grasshopper.cs.duke.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
[ -current trimmed ] On Fri, Jul 05, 2002 at 08:08:47AM -0400, Andrew Gallatin wrote: > Would this be easier or harder than simple, physically contiguous > buffers? I think that its only worth doing if its easier to manage at > the system level, otherwise you might as well use physically > contiguous mbufs. My main goal is to see the per-driver cache's of > physical memory disappear ;) It would be much easier. The problem with getting physically contiguous memory is that shortly after the system gets going, memory becomes fragmented. So, from a system's perspective, it's very hard to get physically contiguous pages. This is why you see most drivers that actually do this sort of thing pre-allocate a pool of such beasts early on during boot up. Unfortunately, this means that they'll be eating up a lot of memory (some may stay unused forever) at a very early stage. As for the guarantee that the data region will start at a page boundary, yes I can ensure that as long as you don't tamper with offsetting the m_data field of the mbuf after the allocator hands it to you. That is, I can guarantee this: [ mbuf ] [ <stuff> ] [ m_data -]--->[ jumbo buf ] [ (page 1) ] [-----------] [ (page 2) ] [-----------] [ (page 3) ] So, as you see, it is deffinately do-able to have all the jumbo bufs start at a page boundary; however, it may be more worthwhile to have some of them start later. We would have to implement it first and we would have to do some measurements to see what really works best. What I hate about jumbo bufs is that there's a lot of wastage in the last (3rd page). I can't exactly use the last half of that last page for, say, a 2K cluster, because then I wouldn't be respecting the bucket "infrastructure" in mb_alloc that allows easy implementation of page freeing. Pretty much the only "realistic" thing I could do is allocate jumbo bufs in groups of 3 or 4; this would ensure much less wastage but would mean that not all of them would start at page boundaries. > Drew Regards, -- Bosko Milekic bmilekic@unixdaemons.com bmilekic@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?20020705093435.A25047>