From owner-freebsd-hackers@FreeBSD.ORG Wed Mar 12 06:25:19 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8EBE0E33; Wed, 12 Mar 2014 06:25:19 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4B26AB2D; Wed, 12 Mar 2014 06:25:19 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s2C6PH7w001250 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Mar 2014 23:25:18 -0700 (PDT) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s2C6PHEa001249; Tue, 11 Mar 2014 23:25:17 -0700 (PDT) (envelope-from jmg) Date: Tue, 11 Mar 2014 23:25:17 -0700 From: John-Mark Gurney To: Rick Macklem Subject: Re: kernel memory allocator: UMA or malloc? Message-ID: <20140312062517.GX32089@funkthat.com> Mail-Followup-To: Rick Macklem , Freebsd hackers list , Garrett Wollman References: <829240556.20994461.1394587951698.JavaMail.root@uoguelph.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <829240556.20994461.1394587951698.JavaMail.root@uoguelph.ca> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Tue, 11 Mar 2014 23:25:18 -0700 (PDT) Cc: Freebsd hackers list , Garrett Wollman X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Mar 2014 06:25:19 -0000 Rick Macklem wrote this message on Tue, Mar 11, 2014 at 21:32 -0400: > I've been working on a patch provided by wollman@, where > he uses UMA instead of malloc() to allocate an iovec array > for use by the NFS server's read. > > So, my question is: > When is it preferable to use UMA(9) vs malloc(9) if the > allocation is going to be a fixed size? UMA has benefits if the structure size is uniform and a non-power of 2.. In this case, it can pack the items more densely, say, a 192 byte allocation can fit 21 allocations in a 4k page size verse malloc which would round it up to 256 bytes leaving only 16 per page... These counts per page are probably different as UMA may keep some information in the page... It also has the benefit of being able to keep allocations "half alive".. "freed" objects can be partly initalized with references to buffers and other allocations still held by them... Then if the systems needs to fully free your allocation, it can, and will call your function to release these remaining resources... look at the ctor/dtor uminit/fini functions in uma(9) for more info... uma also allows you to set a hard limit on the number of allocations the zone provides... Hope this helps... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."