Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Aug 2012 05:50:05 GMT
From:      Garrett Cooper <yanegomi@gmail.com>
To:        freebsd-net@FreeBSD.org
Subject:   Re: kern/170713: [cxgb] Driver must be loaded after boot due to timing issues checking for kern.ipc.nmb* values set via /boot/loader.conf
Message-ID:  <201208230550.q7N5o5oD037425@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/170713; it has been noted by GNATS.

From: Garrett Cooper <yanegomi@gmail.com>
To: Navdeep Parhar <np@freebsd.org>
Cc: bug-followup@freebsd.org
Subject: Re: kern/170713: [cxgb] Driver must be loaded after boot due to
 timing issues checking for kern.ipc.nmb* values set via /boot/loader.conf
Date: Wed, 22 Aug 2012 22:48:23 -0700

 On Wed, Aug 22, 2012 at 5:56 PM, Navdeep Parhar <np@freebsd.org> wrote:
 > First, note that only kern.ipc.nmbclusters is a valid tunable.  The rest of
 > the nmbXXX settings in your loader.conf have no effect.  There are sysctls
 > but no tunables for the rest.
 
 Yes. I've been tweaking things between both areas, and I agree that
 sysctl-only works for non-nmbclusters.
 
 > Take a look at tunable_mbinit in kern_mbuf.c -- on recent FreeBSD versions
 > it starts with nmbclusters and sizes others based on this.  You can set
 > nmbclusters really high and influence the values of the other parameters.
 >
 > In my opinion we should have a TUNABLE_INT_FETCH for all of the nmbXXX and
 > autocalculate the ones that are not set, just like what we do for
 > nmbclusters today.
 >
 > static void
 > tunable_mbinit(void *dummy)
 > {
 >         TUNABLE_INT_FETCH("kern.ipc.nmbclusters", &nmbclusters);
 >
 >         /* This has to be done before VM init. */
 >         if (nmbclusters == 0)
 >                 nmbclusters = 1024 + maxusers * 64;
 >         nmbjumbop = nmbclusters / 2;
 >         nmbjumbo9 = nmbjumbop / 2;
 >         nmbjumbo16 = nmbjumbo9 / 2;
 > }
 >
 >
 > Compare this to the tunable_mbinit in 7 and you can see why the nmbclusters
 > tunable does not affect the others -- it is updated after the other values
 > have already been calculated.
 > static void
 > tunable_mbinit(void *dummy)
 > {
 >
 >         /* This has to be done before VM init. */
 >         nmbclusters = 1024 + maxusers * 64;
 >         nmbjumbop = nmbclusters / 2;
 >         nmbjumbo9 = nmbjumbop / 2;
 >         nmbjumbo16 = nmbjumbo9 / 2;
 >         TUNABLE_INT_FETCH("kern.ipc.nmbclusters", &nmbclusters);
 > }
 
 Funny. I'll do some poking around in our sourcebase and see whether
 this has been backported..
 
 Thanks,
 -Garrett



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