Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Nov 2004 22:42:08 +0200
From:      Ruslan Ermilov <ru@freebsd.org>
To:        Chris McDermott <chris.trismegistus@gmail.com>
Cc:        amd64@freebsd.org
Subject:   Re: Too many mbufs
Message-ID:  <20041119204208.GA92096@ip.net.ua>
In-Reply-To: <bf8d7e4904111912214a86a151@mail.gmail.com>
References:  <Pine.BSF.4.60.0411191757010.75856@mail.sbb.co.yu> <20041119124946.J29849@area51.capnet.state.tx.us> <bf8d7e4904111912214a86a151@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--FL5UXtIhxfXey3p5
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Nov 19, 2004 at 03:21:44PM -0500, Chris McDermott wrote:
> > Would you people please include at least a `uname -a`
> > with these posts, even better state the motherboard
> > you're running with.   I am NOT seeing this with
> > a Tyan s2882, dual 244, with 4GB memory, on 5.3-R #0.
>=20
> I'm having the same problem, and it seems to be related to
> kern.ipc.mbstat. I don't see kern.ipc.mbstat in the output of sysctl
> -a.
>=20
You'd need "sysctl -ax" to print it.

> If I try and get the value with sysctlbyname() [copied from
> netstat/mbuf.c], it returns negative values for mbstat->m_mbufs. This
> negative value does fluctuate with network usage though...
>=20
> Test code:
>=20
> #include <sys/types.h>
> #include <sys/param.h>
> #include <sys/sysctl.h>
> #include <sys/mbuf.h>
> #include <stdio.h>
>=20
> int main()
> {
> 	struct mbstat *mbstat;
> 	size_t mlen;
> =09
> 	mlen =3D sizeof *mbstat;
> 	if( (mbstat =3D calloc(1,mlen)) =3D=3D NULL)
> 		perror("calloc");
> 	=09
> 	if (sysctlbyname("kern.ipc.mbstat", mbstat, &mlen, NULL, 0) < 0)=20
> 		perror("sysctl: retrieving mbstat");
>=20
> 	printf("mbufs: %d \nclusters: %d\n", mbstat->m_mbufs, mbstat->m_mclusts);
> 	=09
> 	return 0;
> }
>=20
Your code is broken.  Both m_mbufs and m_mclusts are of the type
u_long, so they should be printed with "%lu" specifier.  Fix your
program and try again.  (And you should see the same big number.)

> Output:
>=20
> mbufs: -2240
> clusters: -2686
>=20
> System:
>=20
> TYAN s2885 dual 242 512M ram 5.3-R
>=20
> codefactory# uname -a
> FreeBSD codefactory 5.3-RELEASE FreeBSD 5.3-RELEASE #7: Tue Nov  9
> 23:28:53 EST 2004   =20
> cmc@codefactory:/usr/src/sys/amd64/compile/CODEFACTORY  amd64
>=20
> codefactory# netstat -m
> 18446744073709549940 mbufs in use
> 18446744073709549630/17152 mbuf clusters in use (current/max)
> 0/0/0 sfbufs in use (current/peak/max)
> 18014398509477593 KBytes allocated to network
> 0 requests for sfbufs denied
> 0 requests for sfbufs delayed
> 0 requests for I/O initiated by sendfile
> 0 calls to protocol drain routines


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--FL5UXtIhxfXey3p5
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (FreeBSD)

iD8DBQFBnlqfqRfpzJluFF4RAs4NAJwPlK6mTKVZ7GFfACNH4n1U29nh3gCfQicb
PEBhZYA/0AGoHfYyFN0wGfk=
=SRr2
-----END PGP SIGNATURE-----

--FL5UXtIhxfXey3p5--



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