* RTE mempool "used count" steadily goes down to zero despite steady packet throughput
@ 2014-11-28 17:34 Kamraan Nasim
[not found] ` <CAPrTskgmfxx=0hgnHBg=KMATTUhtp338vxESM=MMU6wTaW8SQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Kamraan Nasim @ 2014-11-28 17:34 UTC (permalink / raw)
To: dev-VfR2kkLFssw; +Cc: Steve Noble, Ashish Juneja
Hello,
I have ~15Gbps of traffic flowing through two 10GE ports and been profiling
the rte mempool(or rather the pktmbuf mempool) memory consumption:
I have per lcore caching disabled(cache_size is 0)
I have noticed that:
- Mempool FREE cnt(as given byt rte_mempool_free_count()) increases
- Mempool USED cnt(as given by rte_mempool_used_count() decreases and
eventually drops to 0. When this happens, mempool reports itself as EMPTY
- rx_nombuf stats for the eth ports start climbing
- Valgrind Memcheck does not indicate any obvious leaks in RTE mempool or
my application.
I was wondering if others have come across this issue? Or if people here
have used ways, besides Valgrind to profile the mempool or the pkt mbuf
pool?
Thanks,
Kam
^ permalink raw reply [flat|nested] 3+ messages in thread[parent not found: <CAPrTskgmfxx=0hgnHBg=KMATTUhtp338vxESM=MMU6wTaW8SQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: RTE mempool "used count" steadily goes down to zero despite steady packet throughput [not found] ` <CAPrTskgmfxx=0hgnHBg=KMATTUhtp338vxESM=MMU6wTaW8SQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-12-01 9:58 ` Olivier MATZ [not found] ` <547C3BB7.5010309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: Olivier MATZ @ 2014-12-01 9:58 UTC (permalink / raw) To: Kamraan Nasim, dev-VfR2kkLFssw; +Cc: Steve Noble, Ashish Juneja Hi Kam, On 11/28/2014 06:34 PM, Kamraan Nasim wrote: > I have ~15Gbps of traffic flowing through two 10GE ports and been profiling > the rte mempool(or rather the pktmbuf mempool) memory consumption: > > I have per lcore caching disabled(cache_size is 0) > > I have noticed that: > - Mempool FREE cnt(as given byt rte_mempool_free_count()) increases > - Mempool USED cnt(as given by rte_mempool_used_count() decreases and > eventually drops to 0. When this happens, mempool reports itself as EMPTY > - rx_nombuf stats for the eth ports start climbing > - Valgrind Memcheck does not indicate any obvious leaks in RTE mempool or > my application. > > > I was wondering if others have come across this issue? Or if people here > have used ways, besides Valgrind to profile the mempool or the pkt mbuf > pool? First, be careful with rte_mempool_free_count(): it returns the number of free entries in the internal ring of the mempool, which actually corresponds to the number of allocated objects from the mempool point of view. See: http://dpdk.org/browse/dpdk/tree/lib/librte_mempool/rte_mempool.h If you have the number of allocated objects increasing, and the statistics rx_nombuf increasing when the mbuf pool is empty, it means that you have a mbuf leak in your application. Valgrind won't see it since it does not know about mempool alloc/free functions. Regards, Olivier ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <547C3BB7.5010309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>]
* Re: RTE mempool "used count" steadily goes down to zero despite steady packet throughput [not found] ` <547C3BB7.5010309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> @ 2014-12-02 2:35 ` Kamraan Nasim 0 siblings, 0 replies; 3+ messages in thread From: Kamraan Nasim @ 2014-12-02 2:35 UTC (permalink / raw) To: Olivier MATZ; +Cc: dev-VfR2kkLFssw, Steve Noble, Ashish Juneja Thanks Oliver for the helpful tip, that settles the confusion as to why Free count grows and used shrinks. I've modified the rte_mempool library to maintain atomic pktmbuf malloc and free stats, hopefully that would help pinpoint the leak. Thanks again for your help! --Kam On Mon, Dec 1, 2014 at 4:58 AM, Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> wrote: > Hi Kam, > > On 11/28/2014 06:34 PM, Kamraan Nasim wrote: > > I have ~15Gbps of traffic flowing through two 10GE ports and been > profiling > > the rte mempool(or rather the pktmbuf mempool) memory consumption: > > > > I have per lcore caching disabled(cache_size is 0) > > > > I have noticed that: > > - Mempool FREE cnt(as given byt rte_mempool_free_count()) increases > > - Mempool USED cnt(as given by rte_mempool_used_count() decreases and > > eventually drops to 0. When this happens, mempool reports itself as EMPTY > > - rx_nombuf stats for the eth ports start climbing > > - Valgrind Memcheck does not indicate any obvious leaks in RTE mempool or > > my application. > > > > > > I was wondering if others have come across this issue? Or if people here > > have used ways, besides Valgrind to profile the mempool or the pkt mbuf > > pool? > > First, be careful with rte_mempool_free_count(): it returns the number > of free entries in the internal ring of the mempool, which actually > corresponds to the number of allocated objects from the mempool point > of view. See: > http://dpdk.org/browse/dpdk/tree/lib/librte_mempool/rte_mempool.h > > If you have the number of allocated objects increasing, and the > statistics rx_nombuf increasing when the mbuf pool is empty, it means > that you have a mbuf leak in your application. Valgrind won't see it > since it does not know about mempool alloc/free functions. > > Regards, > Olivier > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-12-02 2:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-28 17:34 RTE mempool "used count" steadily goes down to zero despite steady packet throughput Kamraan Nasim
[not found] ` <CAPrTskgmfxx=0hgnHBg=KMATTUhtp338vxESM=MMU6wTaW8SQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-01 9:58 ` Olivier MATZ
[not found] ` <547C3BB7.5010309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-02 2:35 ` Kamraan Nasim
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.