Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Feb 2004 15:31:05 -0500
From:      Gerrit Nagelhout <gnagelhout@sandvine.com>
To:        "'freebsd-stable@freebsd.org'" <freebsd-stable@freebsd.org>
Subject:   Re: >2GB Bugs still exist in FreeBSD 4.9 ?
Message-ID:  <FE045D4D9F7AED4CBFF1B3B813C85337021AB1DD@mail.sandvine.com>

next in thread | raw e-mail | index | archive | help
I think this problem happens when the kernel_map runs out of memory.  The
actual crash happens because in vfs_subr.c around line 704, if zalloc
returns NULL, the bzero will cause that trap:

simple_unlock(&vnode_free_list_slock);
vp = (struct vnode *) zalloc(vnode_zone);
bzero((char *) vp, sizeof *vp);  ******************
simple_lock_init(&vp->v_interlock);
vp->v_dd = vp;
cache_purge(vp);
LIST_INIT(&vp->v_cache_src);
TAILQ_INIT(&vp->v_cache_dst);
numvnodes++;


The size of the kernel memory region can be configured, and is typically
around 1GB.  The more RAM is present in the system, the more of this will be
used up by various data structures that are tuned differently depending how
much RAM is present.  I think there are a few more places where running out
of kernel memory will cause similar problems.  Most of these places don't
seem trivial to fix, and the only solution I have come up with (so far) is
to tune the kernel differently to leave more memory available.

Gerrit



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C85337021AB1DD>