Malloc(9) and uma(9) naming consistency

Robert Watson rwatson at FreeBSD.org
Sun Jul 17 12:46:59 GMT 2005


Now that libmemstat(3) allows the mechanical retrieval of memory 
information from the kernel, I will start adapting tools that currently do 
this monitoring in ad hoc ways to use libmemstat(3) instead.  For example, 
I have patches that caus netstat -mb to use libmemstat(3) instead of 
separate frobs for retrieving mbuf allocator information.  In general, 
memory types are recognized, found, etc, by name.  In the case of uma(9) 
zones, it is the zone name passed to uma_zcreate(9).  In the case of 
malloc(9), it is the "short description" passed to MALLOC_DEFINE(9). 
There are several reasons why improved name consistency is desirable -- 
here are the ones I came up with off-hand:

(1) Currently, the output of vmstat -m and vmstat -z is not consistently
     parseable using scripts.  Names contain spaces, may not fit in the
     available space, etc.

(2) As programs begin to look up information "by name", the stability of
     those names becomes important, as the tools won't be able to find
     their memory type information if the names are changed.

(3) Names sometimes collide, as they're used in multiple places to refer
     to different memory types.  There's at least one instance of this in
     the NFS code, where a type is used by the client and server code under
     the same name.

(4) Names are sometimes un-informative, not even identifying the kernel
     subsystem they might be used by.

So now is a good time to do a sweep through the kernel and fix these. 
Here's what I'd specifically like to do:

- Convert all spaces to "_"s, or remove them in some cases for consistency
   with related memory types.  This is specifically aimed at addressing
   (1).

- Shorten any long names so that they are 24 characters or less.  Maybe
   16.  This will easy rendering in monitoring interfaces designed for
   terminals, where every space counts.

- Convert all names to use only lower case letters.  This is the
   convention in almost all other system name spaces, and I think it makes
   sense to do it here.

- Generally, limit the characters used in names to alphabet + '_', again
   in the name of making it easier to parse, render, process, and so on.

- Disambiguate colliding names.

This requires touching several hundred kernel files, so I'd like to do it 
in one pass.  If there are any specific improvements on these changes that 
you can think of ("solve this other problem while you're at it!"), please 
let me know.  I'll touch everything but the contrib tree, I think.

The target branches for these changes are 6.x and 7.x, although they could 
be merged to 5.x if there's sufficient interest.  I've already had one 
inquiry about back-porting libmemstat(3) to 5.x, and will investigate it. 
A hand might be appreciated. :-)

Robert N M Watson


More information about the freebsd-current mailing list