kern/170713: [cxgb] Driver must be loaded after boot due to
timing issues checking for kern.ipc.nmb* values set via /boot/loader.conf
Garrett Cooper
yanegomi at gmail.com
Thu Aug 23 05:50:06 UTC 2012
The following reply was made to PR kern/170713; it has been noted by GNATS.
From: Garrett Cooper <yanegomi at gmail.com>
To: Navdeep Parhar <np at freebsd.org>
Cc: bug-followup at 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 at 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
More information about the freebsd-net
mailing list