Date: Wed, 28 Aug 1996 19:42:28 -0700 (PDT) From: "Jonathan M. Bresler" <jmb> To: current Subject: [Q] mbuf 128 vs 1k bytes ?? Message-ID: <199608290242.TAA04661@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
an mbuf is 128 bytes. mbuf clusters are 2k. per my reading of
/sys/i386/include/param.h
why does "vmstat -m" report mbufs as being 1k in -current ?? are
they allocated in 1kB blocks and then chopped up into 8 pieces?
are mbuf clusters allocated....how...surely not two allocations of
1kB each. i took a stroll thru vmstat.c, uipc_mbuf.c, /sys/sys/malloc.h,
vm_kern.c vm_page.c, vm_map.c....and i am glad that john dyson has
his head around this code ;)) i sure dont't understand it near
well enough.
from uipc_mbuf.c line 110, i see that mbufs are "allocated" in
units of pages but that only makes it worse....pages are 4kB (param.h
again)
Aspen:[117] uname -a
FreeBSD Aspen.Woc.Atinc.COM 2.2-CURRENT FreeBSD 2.2-CURRENT #0: Wed Aug 21 20:04:37 EDT 1996 jmb@Aspen.Woc.Atinc.COM:/usr/src/sys/compile/ASPEN i386
Aspen:[118] vmstat -m | more
[snip]
Memory usage type by bucket size
Size Type(s)
[snip]
1K mbuf, devbuf, namei, UFS mount, VM pgdata, temp, BIO buffer
[snip]
Memory statistics by type Type Kern
Type InUse MemUse HighUse Limit Requests Limit Limit Size(s)
mbuf 1 1K 1K 8948K 1 0 0 1K
freefall jmb[106] uname -a
FreeBSD freefall.freebsd.org 2.1.5-RELEASE FreeBSD 2.1.5-RELEASE #0: Thu Aug 8 07:07:41 PDT 1996 davidg@freefall.freebsd.org:/f/src/sys/compile/FREEFALL i386
freefall jmb[107] vmstat -m | more
[snip]
Memory usage type by bucket size
Size Type(s)
[snip]
128 mbuf, devbuf, pcb, routetbl, fragtbl, zombie, ifaddr, soopts, cred,
vnodes, VM map, VM object, VM pgdata, file desc, LFS segment,
NFS srvsock, ip_moptions, ISOFS node, temp, ttys
[snip]
4K mbuf, devbuf, VM pgdata, temp
Memory statistics by type Type Kern
Type InUse MemUse HighUse Limit Requests Limit Limit Size(s)
mbuf 197 29K 121K 19661K 49212373 0 0 128,4K
4K--?????
from /sys/i386/include/param.h
/*
* Constants related to network buffer management.
* MCLBYTES must be no larger than CLBYTES (the software page size), and,
* on machines that exchange pages of input or output buffers with mbuf
* clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
* of the hardware page size.
*/
#ifndef MSIZE
#define MSIZE 128 /* size of an mbuf */
#endif /* MSIZE */
#ifndef MCLSHIFT
#define MCLSHIFT 11 /* convert bytes to m_buf clusters */
#endif /* MCLSHIFT */
#define MCLBYTES (1 << MCLSHIFT) /* size of an m_buf cluster */
#define MCLOFSET (MCLBYTES - 1) /* offset within an m_buf cluster */
jmb
--
Jonathan M. Bresler FreeBSD Postmaster jmb@FreeBSD.ORG
FreeBSD--4.4BSD Unix for PC clones, source included. http://www.freebsd.org/
PGP 2.6.2 Fingerprint: 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608290242.TAA04661>
