Re: File trees: the deeper, the weirder



[ Restoring some OP context.]

On Sun, Oct 29, 2006 at 05:07:16PM +0300, Yar Tikhiy wrote:

As for the said program, it keeps its 1 Hz pace, mostly waiting on
"vlruwk". It's killable, after a delay. The system doesn't show ...

Weird, eh? Any ideas what's going on?

I would guess that you need a new vnode to create the new file, but no
vnodes are obvious candidates for freeing because they all have a child
directory in use. Is there some sort of vnode clearing that goes on every
second if we are short of vnodes?

See sys/vfs_subr.c, subroutine getnewvnode(). We call msleep() if we're
waiting on vnodes to be created (or recycled). And just look at the 'hz'
parameter passed to msleep()!

The calling process's mkdir() will end up waiting in getnewvnode() (in
"vlruwk" state) while the vnlru kernel thread does it's thing (which is to
recycle vnodes.)

Either the vnlru kernel thread has to work faster, or the caller has to
sleep less, in order to avoid this lock-step behaviour.

Regards,
--
Matt Emmerton






_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: File trees: the deeper, the weirder
    ... vnodes are obvious candidates for freeing because they all have a child ... See sys/vfs_subr.c, subroutine getnewvnode(). ... Either the vnlru kernel thread has to work faster, ... could be used for getcwd/lsof path lookups through namecache. ...
    (freebsd-hackers)
  • Re: File trees: the deeper, the weirder
    ... It's killable, after a delay. ... vnodes are obvious candidates for freeing because they all have a child ... See sys/vfs_subr.c, subroutine getnewvnode(). ... Either the vnlru kernel thread has to work faster, ...
    (freebsd-hackers)
  • Re: File trees: the deeper, the weirder
    ... It's killable, after a delay. ... vnodes are obvious candidates for freeing because they all have a child ... See sys/vfs_subr.c, subroutine getnewvnode(). ... Either the vnlru kernel thread has to work faster, ...
    (freebsd-hackers)
  • Re: File trees: the deeper, the weirder
    ... It's killable, after a delay. ... vnodes are obvious candidates for freeing because they all have a child ... See sys/vfs_subr.c, subroutine getnewvnode(). ... Either the vnlru kernel thread has to work faster, ...
    (freebsd-hackers)
  • Re: File trees: the deeper, the weirder
    ... It's killable, after a delay. ... vnodes are obvious candidates for freeing because they all have a child ... See sys/vfs_subr.c, subroutine getnewvnode(). ... Either the vnlru kernel thread has to work faster, ...
    (freebsd-hackers)