From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5EB9CA9EB5 for ; Mon, 4 Nov 2019 15:51:32 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7378320869 for ; Mon, 4 Nov 2019 15:51:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7378320869 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=axis.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 1E80E6B0003; Mon, 4 Nov 2019 10:51:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 199426B0005; Mon, 4 Nov 2019 10:51:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0878D6B0006; Mon, 4 Nov 2019 10:51:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0072.hostedemail.com [216.40.44.72]) by kanga.kvack.org (Postfix) with ESMTP id E28FD6B0003 for ; Mon, 4 Nov 2019 10:51:31 -0500 (EST) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with SMTP id 8D79E181AEF15 for ; Mon, 4 Nov 2019 15:51:31 +0000 (UTC) X-FDA: 76119034782.16.cub20_648756f97185b X-HE-Tag: cub20_648756f97185b X-Filterd-Recvd-Size: 3980 Received: from smtp2.axis.com (smtp2.axis.com [195.60.68.18]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Mon, 4 Nov 2019 15:51:30 +0000 (UTC) IronPort-SDR: 566HpXW0y6wrJ25x7MYzR1+E92meAWNnbTsoCpgsUOxKg+TuSW+mSzM2Xjn77KHKF7xiVOo++Z +S+zi++/iRIMMTCV1vQ2zfMaIDQD8iK6bZ0pjDBaLLweiX12yJlz9nXiDTh7+/FiL473pr/RLp Qif/TVsXFV6TS4wCxtk5onZQh4umD4YwhFgKS1jb7O/BCkTc5aALOM7ihas0v8mAfh0ACcpL5E bOpBhkA389mvFyV0qemwA/0xkgTBBXvTn2N4lEpy4CWbveiMFXV79FAx/FPMQCNy4UZ0dKVCPa X4E= X-IronPort-AV: E=Sophos;i="5.68,267,1569276000"; d="scan'208";a="2060488" X-Axis-User: NO X-Axis-NonUser: YES X-Virus-Scanned: Debian amavisd-new at bastet.se.axis.com Date: Mon, 4 Nov 2019 16:51:26 +0100 From: Vincent Whitchurch To: Michal Hocko Cc: Pavel Tatashin , "akpm@linux-foundation.org" , "osalvador@suse.de" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH] mm/sparse: Consistently do not zero memmap Message-ID: <20191104155126.y2fcjwrx5mhdoqi7@axis.com> References: <20191030131122.8256-1-vincent.whitchurch@axis.com> <20191030132958.GD31513@dhcp22.suse.cz> <20191030140216.i26n22asgafckfxy@axis.com> <20191030141259.GE31513@dhcp22.suse.cz> <20191030153150.GI31513@dhcp22.suse.cz> <20191030173123.GK31513@dhcp22.suse.cz> <20191031072555.GA13102@dhcp22.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191031072555.GA13102@dhcp22.suse.cz> User-Agent: NeoMutt/20170113 (1.7.2) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Oct 31, 2019 at 08:25:55AM +0100, Michal Hocko wrote: > On Wed 30-10-19 18:31:23, Michal Hocko wrote: > [...] > > What about this? It still aligns to the size but that should be > > correctly done to the section size level. > > > > diff --git a/mm/sparse.c b/mm/sparse.c > > index 72f010d9bff5..ab1e6175ac9a 100644 > > --- a/mm/sparse.c > > +++ b/mm/sparse.c > > @@ -456,8 +456,7 @@ struct page __init *__populate_section_memmap(unsigned long pfn, > > if (map) > > return map; > > > > - map = memblock_alloc_try_nid(size, > > - PAGE_SIZE, addr, > > + map = memblock_alloc_try_nid(size, size, addr, > > MEMBLOCK_ALLOC_ACCESSIBLE, nid); > > if (!map) > > panic("%s: Failed to allocate %lu bytes align=0x%lx nid=%d from=%pa\n", > > @@ -474,8 +473,13 @@ static void __init sparse_buffer_init(unsigned long size, int nid) > > { > > phys_addr_t addr = __pa(MAX_DMA_ADDRESS); > > WARN_ON(sparsemap_buf); /* forgot to call sparse_buffer_fini()? */ > > + /* > > + * Pre-allocated buffer is mainly used by __populate_section_memmap > > + * and we want it to be properly aligned to the section size - this is > > + * especially the case for VMEMMAP which maps memmap to PMDs > > + */ > > sparsemap_buf = > > - memblock_alloc_try_nid_raw(size, PAGE_SIZE, > > + memblock_alloc_try_nid_raw(size, section_map_size(), > > addr, > > MEMBLOCK_ALLOC_ACCESSIBLE, nid); > > sparsemap_buf_end = sparsemap_buf + size; > > Vincent, could you give this a try please? It would be even better if > you could add some debugging to measure the overhead. Let me know if you > need any help with a debugging patch. I've tested this patch and it works on my platform: The allocations from sparse_buffer_alloc() now succeed and the fallback path is not taken. I'm not sure what kind of overhead you're interested in. The memory overhead of the initial allocations (as measured via the "Memory: XX/YY available" prints and MemTotal), is identical with and without this patch. I don't see any difference in the time taken for the initializations either.