From owner-freebsd-arch@FreeBSD.ORG Mon Nov 24 09:07:59 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55CB21065673 for ; Mon, 24 Nov 2008 09:07:59 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 46B9B8FC1D for ; Mon, 24 Nov 2008 09:07:59 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1192) id DD1791A3C3D; Mon, 24 Nov 2008 00:52:23 -0800 (PST) Date: Mon, 24 Nov 2008 00:52:23 -0800 From: Alfred Perlstein To: Jeff Roberson Message-ID: <20081124085223.GY28578@elvis.mu.org> References: <20081123213232.A971@desktop> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081123213232.A971@desktop> User-Agent: Mutt/1.4.2.3i Cc: arch@freebsd.org Subject: Re: Limiting mbuf memory. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Nov 2008 09:07:59 -0000 * Jeff Roberson [081123 23:48] wrote: > I'm developing a patch for an alternate memory layout for mbuf clusters > that relies on contigmalloc. Since this can fail, we'll still have to > retain the capability of allocating traditional clusters. I'll report > details on that later. I'm writing this email to address the issue of > resource accounting in mbufs. > > Presently we use a set of limits on individual zones or sizes of mbufs. > Standard mbufs, clusters, page size jumbos, 9k jumbos, and 16k jumbos. > Each is administered sperately. I think this is getting a bit unwieldy. > In the future, we may have even more sizes. This also introduces problems > because I will have two cluster zones do they each get their own limit? > > I would like to consolidate this into a single limit on the number of > pages in total allocated to networking. With perhaps some fractional > reservation for standard mbufs and clusters to make sure they aren't > overwhelmed by the larger buffers. > > This would be implemented by overriding the uma zone page allocator for > each of the mbuf zones with one that counts pages for all. Should we > reach the limit we'll block depending on the wait settings of the > requestor. The limit and sleep will probably be protected by a global > lock which won't be an issue because trips to the back end allocator are > infrequent and protected by their own global lock anyhow. > > How do people feel about this? To be clear this would eliminate: > > nmbclusters, nmbjumbop, nmbjumbo9, nmbjumbo16 and related config settings > and sysctls. They would be replaced by something like 'maxmbufbytes'. > Presently we place no limit on small mbufs. I could go either way on > this. It could be added to the limit or not. This sounds good but please take into consideration the possibility of deadlock due to resource allocation to a single pool that can happen. It might make sense to keep the small and large mbuf limits separate or something like that. Might also make sense to retain the limits but set them all to "unlimited" (withing the global limit) unless configured otherwise for various custom set ups. I don't feel too strongly about this, just some points to consider. -- - Alfred Perlstein