From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 52DE598 for ; Tue, 24 Jul 2018 12:12:41 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Jul 2018 03:12:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,397,1526367600"; d="scan'208";a="75001452" Received: from aburakov-mobl.ger.corp.intel.com (HELO [10.237.220.86]) ([10.237.220.86]) by fmsmga001.fm.intel.com with ESMTP; 24 Jul 2018 03:10:12 -0700 To: dev@dpdk.org, Thomas Monjalon References: <914a5f584be81d6c129b35bc8e358774854d8960.1528749451.git.anatoly.burakov@intel.com> From: "Burakov, Anatoly" Message-ID: <1f5ef2a7-739e-b90f-8b04-a2a0abe234fa@intel.com> Date: Tue, 24 Jul 2018 11:10:11 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <914a5f584be81d6c129b35bc8e358774854d8960.1528749451.git.anatoly.burakov@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 9/9] memalloc: allocate memory in reverse X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jul 2018 10:12:41 -0000 On 11-Jun-18 9:55 PM, Anatoly Burakov wrote: > Currently, all hugepages are allocated from lower VA address to > higher VA address, while malloc heap allocates from higher VA > address to lower VA address. This results in heap fragmentation > over time due to multiple reserves leaving small space below the > allocated elements. > > Fix this by allocating VA memory from the top, thereby reducing > fragmentation and lowering overall memory usage. > > Signed-off-by: Anatoly Burakov > --- > lib/librte_eal/linuxapp/eal/eal_memalloc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_eal/linuxapp/eal/eal_memalloc.c b/lib/librte_eal/linuxapp/eal/eal_memalloc.c > index 8c11f98c9..d35fb52c4 100644 > --- a/lib/librte_eal/linuxapp/eal/eal_memalloc.c > +++ b/lib/librte_eal/linuxapp/eal/eal_memalloc.c > @@ -682,7 +682,8 @@ alloc_seg_walk(const struct rte_memseg_list *msl, void *arg) > need = wa->n_segs; > > /* try finding space in memseg list */ > - cur_idx = rte_fbarray_find_next_n_free(&cur_msl->memseg_arr, 0, need); > + cur_idx = rte_fbarray_find_prev_n_free(&cur_msl->memseg_arr, > + cur_msl->memseg_arr.len - 1, need); > if (cur_idx < 0) > return 0; > start_idx = cur_idx; > Hi Thomas, We have discovered a few regressions in virtio/vhost use cases due to this patch. Virtio expects to map all segments starting from 0 address, and this patch breaks that assumption. Can we revert this for 18.08? It will be reintroduced in 18.11 along with fixes for virtio/vhost fixes to account for this change. -- Thanks, Anatoly