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>