[dpdk-users] How to use software prefetching for custom structures to increase throughput on the fast path

Van Haaren, Harry harry.van.haaren at intel.com
Wed Sep 12 10:22:35 CEST 2018


> -----Original Message-----
> From: users [mailto:users-bounces at dpdk.org] On Behalf Of Arvind Narayanan
> Sent: Tuesday, September 11, 2018 7:39 PM
> To: stephen at networkplumber.org
> Cc: Wiles, Keith <keith.wiles at intel.com>; users at dpdk.org
> Subject: Re: [dpdk-users] How to use software prefetching for custom
> structures to increase throughput on the fast path

<snip>

> So, essentially, what I am doing is -- core 0 gets a burst of my_packet(s)
> from its pre-allocated mempool, and then (bulk) enqueues it into a
> rte_ring. Core 1 then (bulk) dequeues from this ring and when it access the
> data pointed by the ring's element (i.e. my_packet->tag1)

You say "Bulk" here. Are you using "bulk" or "burst"?

Burst: http://doc.dpdk.org/api/rte__ring_8h.html#aff58e6a47ea3dca494dd0391d11b38ea
Bulk:  http://doc.dpdk.org/api/rte__ring_8h.html#ab8debfb458e927d559e7ce750048502d

Try using "burst" dequeue which will return the max number of packets available,
even if it is less than the size of the array you provided.  

Bulk will fail to dequeue anything unless your threshold of MAX was reached,
which means that likely you'll stall the consumer core waiting until MAX, and
then playing catchup again.

<snip>


More information about the users mailing list