* [dpdk-dev] Is rte_mempool library is multi-thread safe ???
@ 2013-12-19 10:57 ankit kumar
2013-12-19 17:04 ` Thomas Monjalon
0 siblings, 1 reply; 4+ messages in thread
From: ankit kumar @ 2013-12-19 10:57 UTC (permalink / raw)
To: dev
Hi,
I was testing rte_ring in DPDK as it provides multi-consumer &
multi-produce queue(lock-free but not wait-free).
It was working fine but i am not sure that memory allocation &
deallocation in rte_mempool library, is multi-thread safe or not.
Because its giving me error during allocation(from
multi-thread) as "Allocation failed(returned pointer is NULL in
allocation function rte_pktmbuf_alloc())" & during rte_pktmbuf_free()
it generates segmentation fault and when i traced out, core file
generated, it indicated that the problem is in rte_pktmbuf_free().
Any help !!!
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] Is rte_mempool library is multi-thread safe ???
2013-12-19 10:57 [dpdk-dev] Is rte_mempool library is multi-thread safe ??? ankit kumar
@ 2013-12-19 17:04 ` Thomas Monjalon
2013-12-19 21:30 ` Peter Chen
0 siblings, 1 reply; 4+ messages in thread
From: Thomas Monjalon @ 2013-12-19 17:04 UTC (permalink / raw)
To: ankit kumar; +Cc: dev
Hello,
19/12/2013 11:57, ankit kumar :
> It was working fine but i am not sure that memory allocation &
> deallocation in rte_mempool library, is multi-thread safe or not.
From http://dpdk.org/doc/api/rte__mempool_8h.html:
"the mempool implementation is not preemptable"
There is more explanations in this email:
http://dpdk.org/ml/archives/dev/2013-August/000402.html
--
Thomas
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] Is rte_mempool library is multi-thread safe ???
2013-12-19 17:04 ` Thomas Monjalon
@ 2013-12-19 21:30 ` Peter Chen
2013-12-20 21:28 ` Olivier MATZ
0 siblings, 1 reply; 4+ messages in thread
From: Peter Chen @ 2013-12-19 21:30 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
does that mean that on the same core, we can't do rte_eth_rx_burst in one
thread (I assume this function allocates from mempool for storing mbufs
everytime it receives a packet), while another thread calls
rte_pktmbuf_alloc from the same mem_pool?
On Thu, Dec 19, 2013 at 9:04 AM, Thomas Monjalon
<thomas.monjalon@6wind.com>wrote:
> Hello,
>
> 19/12/2013 11:57, ankit kumar :
> > It was working fine but i am not sure that memory allocation &
> > deallocation in rte_mempool library, is multi-thread safe or not.
>
> From http://dpdk.org/doc/api/rte__mempool_8h.html:
> "the mempool implementation is not preemptable"
> There is more explanations in this email:
> http://dpdk.org/ml/archives/dev/2013-August/000402.html
>
> --
> Thomas
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] Is rte_mempool library is multi-thread safe ???
2013-12-19 21:30 ` Peter Chen
@ 2013-12-20 21:28 ` Olivier MATZ
0 siblings, 0 replies; 4+ messages in thread
From: Olivier MATZ @ 2013-12-20 21:28 UTC (permalink / raw)
To: Peter Chen; +Cc: dev
Hi Peter,
On 12/19/2013 10:30 PM, Peter Chen wrote:
> does that mean that on the same core, we can't do rte_eth_rx_burst in one
> thread (I assume this function allocates from mempool for storing mbufs
> everytime it receives a packet), while another thread calls
> rte_pktmbuf_alloc from the same mem_pool?
That's correct. In the rte_mempool code, there is a per-lcore cache:
see the local_cache field of struct rte_mempool.
If you are running several pthreads per lcore, they will share the
same cache if they have the same lcore_id and the mempool is
not designed for that. Therefore it can return wrong results.
The cache can be disabled (at run-time or compile-time), but you will
loose a lot of performance.
Even if you solve the problem of the cache, as the mempool uses a ring
internally, you would still experiment performance issues (see links
from Thomas' previous email).
By the way, why would you need to have several pthreads on one lcore?
Regards,
Olivier
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-12-20 21:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-19 10:57 [dpdk-dev] Is rte_mempool library is multi-thread safe ??? ankit kumar
2013-12-19 17:04 ` Thomas Monjalon
2013-12-19 21:30 ` Peter Chen
2013-12-20 21:28 ` Olivier MATZ
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).