[dpdk-users] A question about rte_pktmbuf_init() and alike functions

Matt Laswell laswell at infiniteio.com
Tue Nov 3 19:53:48 CET 2015

The init functions are called once per object at initialization time, not
at allocation time.  From a performance perspective, this is preferable,
though it leaves a dependency on the application to do subsequent
initialization when the object is allocated or when it is freed.

Matt Laswell
Principal Software Engineer, infinite io
laswell at infiniteio.com

On Tue, Nov 3, 2015 at 11:49 AM, Александр Самойлов <cidjey1991 at mail.ru>

>  Hi all. I'm sorry if the question is naive or stupid, but still I
> couldn't find the answer in the manual.
> The question is: are the element init functions called just once (with the
> mempool creation) or are they called each time we retrieve a new element
> from a pool? I'm asking because I use a mempool pool with pkt_mbuf
> structures for generating new Ethernet frames (with IP and TCP data) and it
> works just fine for a while (I reckon just as long as I'm getting a new
> pktmbuf with rte_pktmbuf_alloc and not a recycled one) and at some point my
> generated frames start to have the wrong TCP ckecksum (even though TCP
> checksum it totally OK at first). And the strange thing is that if, for
> instance, mempool has 2048 elements -  my program works for 5 seconds
> (rough estimate), and if mempool has 4096 elements - my program works for
> 10 seconds. The connection is obvious. I used to believe that init()
> functions are called each time we retrieve an element from a mempool, but
> now I'm not so sure.
> Alex Samoylov

More information about the users mailing list