[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dpdk-users
Subject:    Re: [dpdk-users] How to use software prefetching for custom structures to increase throughput on the
From:       "Van Haaren, Harry" <harry.van.haaren () intel ! com>
Date:       2018-09-12 8:22:35
Message-ID: E923DB57A917B54B9182A2E928D00FA65E2C7A1A () IRSMSX102 ! ger ! corp ! intel ! com
[Download RAW message or body]

> -----Original Message-----
> From: users [mailto:users-bounces@dpdk.org] On Behalf Of Arvind Narayanan
> Sent: Tuesday, September 11, 2018 7:39 PM
> To: stephen@networkplumber.org
> Cc: Wiles, Keith <keith.wiles@intel.com>; users@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>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic