[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>
wrote:

>  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