DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/2] eal/malloc: fix wrong heap initialization over multiple memsegs
@ 2018-05-03 10:11 Gowrishankar
  2018-05-03 10:11 ` [dpdk-dev] [PATCH 1/2] eal/malloc: merge malloc_elems in heap if they are contiguous Gowrishankar
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Gowrishankar @ 2018-05-03 10:11 UTC (permalink / raw)
  To: Sergio Gonzalez Monroy
  Cc: Anatoly Burakov, dev, Thomas Monjalon, Gowrishankar Muthukrishnan

From: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>

When there are multiple memsegs (each per hugepage), there are couple of
problems observed:

  1. Same heap size index is always chosen to add new malloc_elems 
     again and again, while there is an increasing heap size actually.
     Hence, when there is memalloc request for size *more than* 
     elem->size available in free heap, malloc_heap_alloc would fail.
     In elem_start_pt(), we are actually relying on elem->size at the
     best, for finding suitable element, which is lower than requested
     size, in this case.

     Hence, patch 1 in this series addresses this by merging
     contiguous malloc_elem (by virt addresses), so that there is 
     better chance of finding suitable elem for the requested size.
     
  2. Even after resizing the heap malloc_elems, its free_head index
     is still the same, as the memsegs are just added in every malloc_
     elem. If larger memory is requested in rte_malloc, in a way
     that, heap index of requested size is beyond the slot where the
     entire heap is available, malloc_heap_alloc would fail.
     Because, at the time of heap init, only the lower index is
     always chosen to fill up memsegs. Hence, patch 2 addresses this
     by moving the list of malloc_elems into new slot in heap, as its
     size grows.
     
We encountered these situations as we run ip_reassembly example app,
when multiple segments are created in VA (when overcommit hugepages set
in powerpc arch).

These problems are found only in the current releases (until v18.05
which carries new implementation for dynamic memory allocation).
These patches are tested with unit tests as well as some of the 
examples apps. I request more testing if possible, on other archs
as these are problems in available LTS codes as well.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>

Gowrishankar Muthukrishnan (2):
  eal/malloc: merge malloc_elems in heap if they are contiguous
  eal/malloc: fix heap index to correctly insert memseg

 lib/librte_eal/common/malloc_heap.c | 52 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 51 insertions(+), 1 deletion(-)

-- 
1.9.1

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

end of thread, other threads:[~2018-05-19  1:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-03 10:11 [dpdk-dev] [PATCH 0/2] eal/malloc: fix wrong heap initialization over multiple memsegs Gowrishankar
2018-05-03 10:11 ` [dpdk-dev] [PATCH 1/2] eal/malloc: merge malloc_elems in heap if they are contiguous Gowrishankar
2018-05-04  9:29   ` Burakov, Anatoly
2018-05-04 10:41     ` gowrishankar muthukrishnan
2018-05-04 11:02       ` Burakov, Anatoly
2018-05-03 10:11 ` [dpdk-dev] [PATCH 2/2] eal/malloc: fix heap index to correctly insert memseg Gowrishankar
2018-05-18 13:10 ` [dpdk-dev] [PATCH 0/2] eal/malloc: fix wrong heap initialization over multiple memsegs Thomas Monjalon
2018-05-19  1:35   ` gowrishankar muthukrishnan

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).