Subject: Re: CVS commit: syssrc/sys/miscfs/nullfs
To: enami tsugutomo <enami@netbsd.org>
From: Bill Studenmund <wrstuden@netbsd.org>
List: source-changes
Date: 03/05/2002 13:42:03
On Wed, 7 Nov 2001, enami tsugutomo wrote:

>
> Module Name:	syssrc
> Committed By:	enami
> Date:		Wed Nov  7 04:55:27 UTC 2001
>
> Modified Files:
> 	syssrc/sys/miscfs/nullfs: null_vfsops.c
>
> Log Message:
> Make the size of null node hash table to desiredvnodes instead of 16.

Sorry for the delay, but I fail to see how this change is correct. This
change makes the hash table have one element for every vnode we want in
the overall system.  First, since each layer vnode has a lower vnode, we
will have at most half the system vnodes in the hash table (we are hashing
the lower vnode).

Second, we are set up to calculate the hash and then look for the node on
a (hopefully short) linked list. We trade memory allocated for the hash
table with time to search any one list in the table. With one hash entry
per vnode, unless we have an abysmal algorythm, we will never touch the
lists. While I agree 16 hash lines might be on the memory-stingy/
computationally expensive side of the balance, desiredvnodes is definitly
at the memory-bloated extreem.

I agree that something other than 16 is probably good, but I don't think
this is it. Do we have any performance data saying 16 isn't good enough?

Comments?

Take care,

Bill