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