Re: vnlur_proc lockups under high disk I/O
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
討論串 (同標題文章)
完整討論串 (本文為第 11 之 11 篇):