rte_pktmbuf_free_bulk vs rte_pktmbuf_free

Filip Janiszewski contact at filipjaniszewski.com
Tue Jan 11 13:12:24 CET 2022


Hi,

Is there any specific reason why using rte_pktmbuf_free_bulk seems to be
much slower than rte_pktmbuf_free in a loop? (DPDK 21.11)

I ran a bunch of tests on a 50GbE link where I'm getting packet drops
(running with too few RX cores on purpose, to make some performance
verification) and when the time comes to release the packets, i did a
quick change like this:

.
            //rte_pktmbuf_free_bulk( data, pkt_cnt );
            for( idx = 0 ; idx < pkt_cnt ; ++idx ) {
                rte_pktmbuf_free( data[ idx ] );
            }
.

And suddenly I'm dropping around 10% less packets (The traffic rate is
around ~95Mpps). In case that's relevant, RX from the nic is done on a
separate core than where the pkts are released (processed and released)

I did also the following experiment: Found the MPPs speed value where i
get around 2-5% drops using rte_pktmbuf_free_bulk, executed a bunch of
readings where I consistently get drops.. Then switched to the loop with
rte_pktmbuf_free and executed the same tests again, of a sudden I can't
drop anymore.

Isn't this strange? I was sure rte_pktmbuf_free_bulk would be kind of
optimized for bulk releases so people don't have to loop themselves.

Thanks

-- 
BR, Filip
+48 666 369 823


More information about the users mailing list