DragonFly kernel List (threaded) for 2004-01
Re: [PATCH] Double-level file descriptor allocation
:Skip Ford wrote:
:> Here's a DragonFly port of Tim Robbins' FreeBSD port of Niels
:> Provos' NetBSD file descriptor allocation code.
:> fd Unpatched Patched
:> 1 0.765650 0.781279
:> 2001 1.148484 0.789092
:> 4001 1.546935 0.765657
:> 48001 12.453618 0.812530
:Is there a down-side to this?
This patch is a lot cleaner then what DES did, but doesn't quite
solve the problem either.
Would either you or Skip like to adapt *just* the fd_used() and
fd_unused() pieces, without any of the bitmap stuff? i.e. don't
implement fd_lomap or fd_himap or anything like that, just create
the fd_used() and fd_unused() abstraction and the structural
field manipulation they do on the original structural fields. The
allocation, reallocation, and freeing code also has to be abstracted
into API functions.
Once that is all done and comitted we can debate how best to implement
efficient search code within the abstraction. Personally speaking, I
think that one might as well use a radix tree with simple first-free
hinting in the nodes and be done with the problem rather then all this
bi-level bitmap or DES's solution stuff which only partially solves