[dpdk-dev] [PATCH] mbuf: add bulk free function

Van Haaren, Harry harry.van.haaren at intel.com
Wed Sep 11 13:29:58 CEST 2019


> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Stephen Hemminger
> Sent: Wednesday, September 11, 2019 12:19 PM
> To: Morten Brørup <mb at smartsharesystems.com>
> Cc: olivier.matz at 6wind.com; dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] mbuf: add bulk free function
> 
> On Wed, 11 Sep 2019 09:19:08 +0000
> Morten Brørup <mb at smartsharesystems.com> wrote:
> 
> > Add function for freeing a bulk of mbufs.
> >
> > Signed-off-by: Morten Brørup <mb at smartsharesystems.com>
> > ---
> >  lib/librte_mbuf/rte_mbuf.h | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> >
> > diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
> > index 98225ec80..f2e174da1 100644
> > --- a/lib/librte_mbuf/rte_mbuf.h
> > +++ b/lib/librte_mbuf/rte_mbuf.h
> > @@ -1907,6 +1907,23 @@ static inline void rte_pktmbuf_free(struct rte_mbuf
> *m)
> >  	}
> >  }
> >
> > +/**
> > + * Free a bulk of mbufs back into their original mempool.
> > + *
> > + *  @param mbufs
> > + *    Array of pointers to mbufs
> > + *  @param count
> > + *    Array size
> > + */
> > +static inline void
> > +rte_pktmbuf_free_bulk(struct rte_mbuf **mbufs, unsigned count)
> > +{
> > +	unsigned idx = 0;
> > +
> > +	for (idx = 0; idx < count; idx++)
> > +		rte_pktmbuf_free(mbufs[idx]);
> > +}
> > +
> 
> You can optimize this to use mempool bulk put operation.

I believe there's a nuance here - not all mbufs may come from the same mempool.
The for() approach will free each to its "home" mempool.
The bulk() approach may return mbufs to pools they didn't originate from.

For performance reasons it would be nice if they did, but we (in the DPDK library)
should not blindly assume that.

We could consider adding a 2nd functions, rte_pktmbuf_free_bulk_to_single_mempool()
or some better descriptive name.


More information about the dev mailing list