Re: mbuf cluster leak?
Paul Ripke <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.network |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Mar 03, 2025 at 12:03:46PM -0000, Michael van Elst wrote: > [email protected] (Paul Ripke) writes: > > >while rsync'ing 1TiB+ to a local machine over 1Gbit/s ethernet. > >I've doubled nmbclusters, but it'd be nice to know why the clusters > >appear to be leaking. > > >I assume MBUFTRACE might aid in hunting this down? > > > Yes, I've fixed many places in the code recently where MBUFTRACE > wasn't supported, it's still not complete. > > > >I kicked off the rsync again after the doubling, and ran out again a > >few hours later. Local interface is alc0, which happens to be in a > >bridge with a bunch of tap interfaces. I also have npf, and altq > >configured on a pppoe0 interface. > > MBUFTRACE support is still missing in alc(4). > > This patch might help (untested): > > Index: if_alc.c > =================================================================== > RCS file: /cvsroot/src/sys/dev/pci/if_alc.c,v > retrieving revision 1.55 > diff -p -u -r1.55 if_alc.c > --- if_alc.c 5 Jul 2024 04:31:51 -0000 1.55 > +++ if_alc.c 3 Mar 2025 12:03:10 -0000 > @@ -2433,6 +2433,7 @@ alc_newbuf(struct alc_softc *sc, struct > MGETHDR(m, init ? M_WAITOK : M_DONTWAIT, MT_DATA); > if (m == NULL) > return (ENOBUFS); > + MCLAIM(m, &sc->sc_ec.ec_rx_mowner); > MCLGET(m, init ? M_WAITOK : M_DONTWAIT); > if (!(m->m_flags & M_EXT)) { > m_freem(m); Thanks! I tried this patch first, being the simpler - and targeted to alc. After a bunch of rsync's and 24h uptime, the stats are looking much better: ksh$ netstat -ms 2366 mbufs in use: 1646 mbufs allocated to data 685 mbufs allocated to packet headers 35 mbufs allocated to socket names and addresses 18 calls to protocol drain routines ksh$ vmstat -mCW | egrep '^Name|^mb|^mcl' Name Size Requests Fail Releases InUse Avail Pgreq Pgrel Npage PageSz Hiwat Minpg Maxpg Idle Flags Util mbpl 512 22513 0 16212 6301 5315 1557 105 1452 4096 1454 0 inf 663 0x10000 54.2% mclpl 2048 13136 0 9714 3422 2196 3400 591 2809 4096 2813 0 261333 1098 0x10000 60.9% Name Spin GrpSz Full Emty PoolLayer CacheLayer Hit% CpuLayer Hit% mbpl 11 15 185 0 22513 3262288 99.3 271637917 98.8 mclpl 80 15 124 0 13136 994864 98.7 82293880 98.8 I don't eally have a good baseline to compare against, but I think that's good enough to commit? -- Paul Ripke "Great minds discuss ideas, average minds discuss events, small minds discuss people." -- Disputed: Often attributed to Eleanor Roosevelt. 1948.