kernel deadlock

Don Bowman don at sandvine.com
Tue Jul 29 16:23:40 PDT 2003


> From: Robert Watson [mailto:rwatson at freebsd.org]
> > On Tue, 29 Jul 2003, Dave Dolson wrote:
> > 
> > > To follow up, I've discovered that the system has 
> exhausted its "FFS
> > > node" malloc type. 
>  ...
> > 
> > Some problems with this have turned up in -CURRENT on large-memory
> > machines where some of the scaling factors have been off.  In 
> 
> We currently have kern.maxvnodes=70354 set (automatically 
> scaled). This
> is a 1GB box.
> 
> I will try re-running the test with less.
> 
> when it hits kern.maxvnodes, what will it do?

So I dropped kern.maxvnodes in half (to 35000). This 
has a 1GB of physical memory in a 2x xeon (w/ HTT enabled,
so 4 procs).

when it hit the limit, the system stopped switching amongst
processes. my vmstat blocked in 'vlruwk'.

I merged kern/52425 (kern/vfs_subr.c 1.249.2.30,
kern/vfs_syscalls.c 1.151.2.18, sys/mount.h 1.89.2.7)
which is supposed to address this, but it didn't.
[we're running 4.7].

after a long time, my ^C to the vmstat came through, and
my shell prompt came back, but then bash stopped in 'inode'.

In this case i'm not short of memory.

the test is doing this:

for (i = 0; i < 100000; i++) 
 mkdir dir.$i
 cd dir.$i

and while it was running i had:

while true
do
    vmstat -m | grep FFS
    sleep 1
done

running to watch it.

So it seems the problem may not be running out of memory
in the malloc pool, but in the vnode reclamation?

--don


More information about the freebsd-stable mailing list