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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.