Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Dec 2010 01:11:52 -0800
From:      perryh@pluto.rain.com
To:        avg@freebsd.org
Cc:        freebsd-stable@freebsd.org
Subject:   Tunables (Re: How to debug a double fault? (Re: Could MSGBUF_SIZE be made a loader tunable?))
Message-ID:  <4d0dcc58.Z6ITxDmhSuMVmGVR%perryh@pluto.rain.com>
In-Reply-To: <4D09E0F3.5040302@freebsd.org>
References:  <4cfc72a5.3nAjkv8mdrO/NrKQ%perryh@pluto.rain.com> <4CFD0633.9060509@freebsd.org> <4d089a74.vwMJkPEIddt7PIxy%perryh@pluto.rain.com> <4D08AACB.6060306@freebsd.org> <4d09dd2e.iVncbZ/gHBXX0WdL%perryh@pluto.rain.com> <4D09E0F3.5040302@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Andriy Gapon <avg@freebsd.org> wrote:
> on 16/12/2010 11:34 perryh@pluto.rain.com said the following:
> > Andriy Gapon <avg@freebsd.org> wrote:
> >> BTW, are you sure that you correctly placed initialization of
> >> msgbufsize ?
> > 
> > I am not at all sure of that ...
> > 
> > Apart from the name, msgbufsize is set up in exactly the same
> > way and place -- in init_param1() -- as maxswzone and maxbcache.
> > Perhaps that is not early enough ...
>
> I don't see any connection between msgbufsize and maxswzone,
> so I also don't know if that place is early enough.

The only "connection" is that maxswzone and maxbcache seemed to
be loader tunables that cannot be changed (via sysctl) while the
system is running -- the same usage paradigm I have in mind for
msgbufsize.

I've since found the description of i386 startup in the Architecture
Handbook, and based on that -- and the code in locore.s and machdep.c
-- it certainly _seems_ as if init_param1() should be early enough:

Practically the first thing that locore.s does after establishing
virtual addressing is to call init386(), and init386() calls
init_param1() long before it either accesses msgbufsize directly
or calls getmemsize() (which uses msgbufsize to allocate space for
the kernel message buffer).

> Just try to initialize the variable where it's defined and use
> TUNABLE_LONG.

Is there any documentation on how to use the TUNABLE_* macros, or
on when to use, say, TUNABLE_LONG vs TUNABLE_LONG_FETCH?  I found
nothing with their definitions in sys/kernel.h, nor in any of the
base-system manpages, nor in /usr/share/doc/...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4d0dcc58.Z6ITxDmhSuMVmGVR%perryh>