Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Jan 2008 19:25:17 -0800
From:      "Bharma Ji" <bharmaji@gmail.com>
To:        "Kris Kennaway" <kris@freebsd.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Graceful failure instead of panicking in kmem_malloc
Message-ID:  <67beabb0801081925t67f995b8hc4cc779f88c2ba@mail.gmail.com>
In-Reply-To: <4784159E.9040905@FreeBSD.org>
References:  <67beabb0801081555v4ca3b729x294322fa724afa09@mail.gmail.com> <4784159E.9040905@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Thanks for the response. I am hoping to keep some memory aside specifically
for handling out of memory allocation situations. Yes the real fix is to
avoid out of memory allocation. Thanks for the patch. Will try that. As a
first cut I am just trying to handle failure gracefully.

So asking again - if there is any way already discussed or standardized to
make the system handle failures gracefully

On Jan 8, 2008 4:30 PM, Kris Kennaway <kris@freebsd.org> wrote:

> Bharma Ji wrote:
> > In FreeBSD 6_2, if kmem_malloc is unable to find space it panics. The
> > relevant code is in vm_kern.c
> >   if ((flags & M_NOWAIT) == 0)
> >                          panic("kmem_malloc(%ld): kmem_map too small:
> %ld
> > total allocated",
> >                                 (long)size, (long)map->size);
> >
> > Is there any way to make the system log and then gracefully shut off
> instead
> > of panicking?
>
> Not really, because those actions require memory allocation.  The real
> fix is to either
>
> a) avoid running out of memory in the first place by tuning vm.kmem_size
>
> b) perhaps trying harder to avoid panicking by first trying to more
> aggressively reclaim memory.
>
> You can try
>
>   http://www.freebsd.org/~pjd/patches/vm_kern.c.2.patch<http://www.freebsd.org/%7Epjd/patches/vm_kern.c.2.patch>;
>
> which implements b) (patch against 7.0, but might apply to 6.2 unchanged).
>
> Kris
>



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