Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Nov 2006 08:26:25 +0300
From:      Yar Tikhiy <yar@comp.chem.msu.su>
To:        Joerg Pernfuss <elessar@bsdforen.de>
Cc:        stable@freebsd.org
Subject:   Re: kernel statistics weirdness on RELENG_6{_1,_2} / 64bit?
Message-ID:  <20061129052625.GG96853@comp.chem.msu.su>
In-Reply-To: <20061128195452.05e38596@loki.starkstrom.lan>
References:  <20061128195452.05e38596@loki.starkstrom.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 28, 2006 at 07:54:52PM +0100, Joerg Pernfuss wrote:
> Hi,
> 
> a while ago I noticed something odd on my 64bit FreeBSD 6 systems - two
> amd64, one alpha. I can't make head or tails of it, so I post it in hope
> that someone can.
> 
> Box #1:
> elessar@snake: ~% uname -srm
> 	FreeBSD 6.1-RELEASE-p7 amd64
> elessar@snake: ~% grep kern.ipc /boot/loader.conf
> 	kern.ipc.nsfbufs="8192"
> 	kern.ipc.nmbclusters="49152"
> elessar@snake: ~% sysctl kern.ipc.nsfbufs kern.ipc.nmbclusters
> 	kern.ipc.nsfbufs: 0
> 	kern.ipc.nmbclusters: 32768
> elessar@snake: ~% netstat -m
> 	350/132/482/49152 mbuf clusters in use (current/cache/total/max)
> 	0/0/0 sfbufs in use (current/peak/max)
> 	0 requests for sfbufs denied
> 	0 requests for sfbufs delayed
> 	2864770 requests for I/O initiated by sendfile
> 
> Box #2:
> elessar@forseti: ~% uname -srm
> 	FreeBSD 6.2-RC1 alpha
> elessar@forseti: ~% grep kern.ipc /boot/loader.conf
> 	kern.ipc.nsfbufs="4294967300"
> elessar@forseti: ~% sysctl kern.ipc.nsfbufs kern.ipc.nmbclusters
> 	kern.ipc.nsfbufs: 0
> 	kern.ipc.nmbclusters: 1664
> elessar@forseti: ~% netstat -m
> 	64/80/144/1664 mbuf clusters in use (current/cache/total/max)
> 	0/0/0 sfbufs in use (current/peak/max)
> 	0 requests for sfbufs denied
> 	0 requests for sfbufs delayed
> 	0 requests for I/O initiated by sendfile
> 
> Box #3:
> elessar@rivendell: ~% uname -srm
> 	FreeBSD 6.1-RELEASE-p10 amd64
> elessar@rivendell: ~% grep kern.ipc /boot/loader.conf
> 	kern.ipc.nsfbufs="8192"
> 	kern.ipc.nmbclusters="49152"
> elessar@rivendell: ~% sysctl kern.ipc.nsfbufs kern.ipc.nmbclusters
> 	kern.ipc.nsfbufs: 0
> 	kern.ipc.nmbclusters: 32768
> elessar@rivendell: ~% grep NSF /root/kernel/RIVENDELL
> 	options         NSFBUFS=8192
> elessar@rivendell: ~% netstat -m
> 	64/118/182/49152 mbuf clusters in use (current/cache/total/max)
> 	0/0/0 sfbufs in use (current/peak/max)
> 	0 requests for sfbufs denied
> 	0 requests for sfbufs delayed
> 	35 requests for I/O initiated by sendfile
> 
> For comparison, Box #4:
> elessar@web2: ~% uname -srm
> 	FreeBSD 6.1-STABLE i386
> elessar@web2: ~% grep kern.ipc /boot/loader.conf
> 	kern.ipc.nsfbufs="8192"
> elessar@web2: ~% sysctl kern.ipc.nsfbufs kern.ipc.nmbclusters
> 	kern.ipc.nsfbufs: 8192
> 	kern.ipc.nmbclusters: 32768
> elessar@web2: ~% netstat -m
> 	104/272/376/32768 mbuf clusters in use (current/cache/total/max)
> 	1598/2635/8192 sfbufs in use (current/peak/max)
> 	0 requests for sfbufs denied
> 	0 requests for sfbufs delayed
> 	8938512 requests for I/O initiated by sendfile
> 
> So, looking at the `netstat -m' output, setting kern.ipc.nmbclusters
> in the loader.conf seems to work, but the sysctl reports the default
> value that would be in place, if it wasn't overridden in the loader.conf.
> 
> For the sendfile buffers, the stats are completely out of whack.
> The sysctl reports 0 for every value (`netstat-m' just prints the sysctl
> fields for these values if I understood the source right (unlikely).
> But sendfile() works and the accounting on the number of sendfile calls
> seems to work too.
> So I believe the NSFBUFS kernel option and the loader.conf setting work,
> but it is quite impossible to properly tune the buffers to the workload.
> I did not bother trying the NMBCLUSTERS kernel option, it was removed
> a while ago anyway.
> 
> The loader.conf kern.ipc.nsfbufs value on box #2 is ridiculously high,
> yes, I tried to get beyond the boundary of a u_int_32 to see if maybe
> something good or bad happens. It did not.
> 
> At this point, I wanted to include links to two mails on amd64@ I
> found when I first searched for this oddity, both of which had no
> reply. Instead I found a posting to net@ that occured in the meantime,
> and a reply to it by Yar Tikhiy two days ago explaining the nsfbufs issue.
> There are no such buffers on amd64, ia64 and alpha as they aren't needed.
> 
> http://docs.freebsd.org/cgi/getmsg.cgi?fetch=26091+0+current/freebsd-net
> 
> Ok, that leaves the question why `sysctl kern.ipc.nmbclusters' reports a
> different value compared to the `netstat -m' output on box #1 and #3.

netstat -m doesn't use the sysctl.  It reads the zone limit via
memstat_get_countlimit() from libmemstat(3) instead.  Perhaps this
can account for the difference observed.

> Thanks for any pointers,
> 	Joerg
> 
> PS: documenting the nsfbufs issue on amd64/ia64/alpha might be a good
> PS: idea. loader(8) seems a good place. Opinions?

I've already documented the issue in sendfile(2) in CURRENT.  MFC
is due.  A small note in loader(8) would be good, too -- thanks for
the suggestion.

-- 
Yar



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