From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH 0/9] mem: reduce memory fragmentation Date: Fri, 13 Jul 2018 11:06:45 +0200 Message-ID: <2515509.GDSIbPj7Zt@xps> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org To: Anatoly Burakov Return-path: Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) by dpdk.org (Postfix) with ESMTP id C2DFB5B3E for ; Fri, 13 Jul 2018 11:06:48 +0200 (CEST) In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 11/06/2018 22:55, Anatoly Burakov: > This patchset is mostly dealing with changes fbarray, but it is > actually about reducing fragmentation in Linuxapp memalloc. > > We allocate hugepages from lower VA to higher VA. However, our > malloc heap allocates addresses from higher VA to lower VA. This > results in a situation where, whenever new page is allocated, > malloc starts to allocate memory from the top, leaving fragmented > space between new allocation's leftover and previous leftover. > > Over time, this leads to lots of free elements sitting at page > boundaries, small enough to be useful but large enough to have an > impact on memory fragmentation in certain circumstances. > > To fix this, we need to allocate memory from higher VA first. > However, in order to do that, we need the ability to search fbarray > in reverse, which is currently not supported. Adding this support is > what most of this patchset is about. > > First 4 patches fix some issues in existing fbarray implementation > and remove some code duplication, preparing for adding of new > functionality. > > Next 3 patches add new functionality - reverse search of used/free > slots, mirroring already existing functionality in semantics and > capable of returning identical results but in reverse order. > > Patch 8 adds unit tests for fbarray, testing both existing and new > functionality. > > Finally, patch 9 changes memalloc to look up free slots in memseg > list in reverse order. No other changes is necessary, as all other > code can handle segments, wherever they are allocated. > > Anatoly Burakov (9): > fbarray: fix errno values returned from functions > fbarray: reduce duplication in find_contig code > fbarray: reduce duplication in find_next_n code > fbarray: reduce duplication in find_next code > fbarray: add reverse find_free/used > fbarray: add reverse find n used/free > fbarray: add reverse find contig used/free > test: add fbarray autotests > memalloc: allocate memory in reverse Applied, thanks