DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Performance of rte_ring APIs
@ 2015-08-07 17:07 Gopakumar Choorakkot Edakkunni
  2015-08-10 11:02 ` Bruce Richardson
  0 siblings, 1 reply; 2+ messages in thread
From: Gopakumar Choorakkot Edakkunni @ 2015-08-07 17:07 UTC (permalink / raw)
  To: dev

Hi All,

I have an extremely simple test - I have just one single DPDK EAL
thread which pulls packets from one 10G port and just puts the packet
exactly as is (no changes) on another 10G port - I get 9.5million pps,
so far so good. So its like this

dpdk_rx
dpdk_tx

9.5 Millionpps

Now I do the below and the performance comes down to like 4 Million
pps, less than half !

dpdk_rx
rte_ring_mc_dequeue_bulk(my_ring1, my_array, nb_rx)
dpdk_tx
rte_ring_mp_enqueue_bulk(my_ring1, my_array, nb_rx)

Note that I do nothing with the things I dequeue from the ring, I just
enqueue it back. So is there any gotchas in using these rings ? I am
sure I am missing something, it cant drop from 9.5Mpps to 4Mpps just
because of a dequeue/enqueue ?

Rgds,
Gopa.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] Performance of rte_ring APIs
  2015-08-07 17:07 [dpdk-dev] Performance of rte_ring APIs Gopakumar Choorakkot Edakkunni
@ 2015-08-10 11:02 ` Bruce Richardson
  0 siblings, 0 replies; 2+ messages in thread
From: Bruce Richardson @ 2015-08-10 11:02 UTC (permalink / raw)
  To: Gopakumar Choorakkot Edakkunni; +Cc: dev

On Fri, Aug 07, 2015 at 10:07:07AM -0700, Gopakumar Choorakkot Edakkunni wrote:
> Hi All,
> 
> I have an extremely simple test - I have just one single DPDK EAL
> thread which pulls packets from one 10G port and just puts the packet
> exactly as is (no changes) on another 10G port - I get 9.5million pps,
> so far so good. So its like this
> 
> dpdk_rx
> dpdk_tx
> 
> 9.5 Millionpps
> 
> Now I do the below and the performance comes down to like 4 Million
> pps, less than half !
> 
> dpdk_rx
> rte_ring_mc_dequeue_bulk(my_ring1, my_array, nb_rx)
> dpdk_tx
> rte_ring_mp_enqueue_bulk(my_ring1, my_array, nb_rx)
> 
> Note that I do nothing with the things I dequeue from the ring, I just
> enqueue it back. So is there any gotchas in using these rings ? I am
> sure I am missing something, it cant drop from 9.5Mpps to 4Mpps just
> because of a dequeue/enqueue ?
> 
You are using the multi-producer and multi-consumer ring functions, which tend to
be much more expensive than the single producer single consumer function. Depending
on the contention on those rings, performance can vary considerably in your application.

/Bruce

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-08-10 11:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-07 17:07 [dpdk-dev] Performance of rte_ring APIs Gopakumar Choorakkot Edakkunni
2015-08-10 11:02 ` Bruce Richardson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).