DragonFly BSD
DragonFly bugs List (threaded) for 2005-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: vnlur_proc lockups under high disk I/O


From: Gary Allan <dragonfly@xxxxxxxxxxxxxxx>
Date: Tue, 08 Feb 2005 22:44:11 +0000

Matthew Dillon wrote:
Gary, thanks for the cores! They helped me track the problem down.

     It turns out to be a fairly simple bug in the kernel.  Basically what
     is going on here is that the vnode recycler is not allowed to recycle
     'internal' directory nodes in the namecache topology.  i.e. if the
     path A/B/C/D is cached, then the recycler is not allowed to remove A, B,
     or C.  The recycler checks this condition by checking the vnode's
     v_holdcnt.

Unfortunately, it turns out that buffer cache buffers also bump
v_holdcnt, not just the namecache. This was preventing the recycler
from recycling vnodes related to small files (e.g. the 'Root'
and 'Entries' found all over a cvs checkout of src) and causing your
lockup.


     I believe this patch will solve the problem.   Please try it out
     and report back to the list.  Note that I have added some debugging
     printfs (which will not be in the final commit).

-Matt


I've automated the extraction of the archive and it's been running for 2 hours without problems. I've also stressed file creation as much as I can and all seems well.


It probably doesn't make a difference but after the tests I noticed that debug.numvnodes > kern.maxvnodes.

kern.maxvnodes: 16565
kern.minvnodes: 4141
debug.numvnodes: 16590
debug.freevnodes: 7550
debug.wantfreevnodes: 25

Thanks for the quick response.

Regards

Gary



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]