Received: by 10.213.65.68 with SMTP id h4csp161395imn; Mon, 26 Mar 2018 18:03:31 -0700 (PDT) X-Google-Smtp-Source: AG47ELvWJFxsv3dZ6pkLNgGtqLb1tcnn4pocek4JlxxIpXkap61tKyOJ2wCxsPXwsr7yKMyrcIuQ X-Received: by 10.98.174.6 with SMTP id q6mr11780239pff.140.1522112611160; Mon, 26 Mar 2018 18:03:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522112611; cv=none; d=google.com; s=arc-20160816; b=UB2sIuFMpOoMBt7Dk2i+wOQx4Wt6rtiCyGO5XT1zNnbJ8glefwF+l3X3dThG1MbjXR 0UAftwfDGczmmPxuS/iwyO4LxZiLC0t+0em7ZP/pEOlfMlQbQt1DjlshJFQdMdGRPKy1 bnEouAoaNRskgfvf4WkpUjNlgqjDh3qV4rPybz9p6FNLij1Z2pLZXS9NnQAy9WdKKDFq HoxZqniUgVWYhGcix60Gf+6fLuEaW4T+suv+t34WZiX7LfACQqiX2Qa3eg2oww+OIcbz c8GLgCn50ZE0p8dyWOUqy2ak84XDGjdy8SowLdrDqXl8XNR4WGi4RsiTwQ9PUlSbhl/T xa5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:reply-to:message-id :subject:cc:to:from:date:dkim-signature:arc-authentication-results; bh=roB/+tV1DQc6PSMvC+w0eQ6E80gqeu6ufz3YgWA2Xmw=; b=kg3aWpSv4pIudv57PLu9y/2CoVFpZkegXaZdq8Z8WfGVFIfQSDEcP9tkPiy2AJsYC0 hHf1rKuU0ruuAJ1ZHxB0z57d/FAt4+S2Tj2/6rTWnNSKHdZcVTnMcwFgcpQ9OsWVh8gM AD9XImnc7L7G5eWlgjuTxRB7Dx6Dy/INsawcJYq+wXHGDQBwhRmqgDewg9+9twOM7+3R lZ0HcU+PaKzr0zr18lBx7qHSTF9QLm1WVGRNwe7/9DxIJoHbaFsiDRrnor4OumJxtjOn 3y1/dUG8+gixjlfoHsC7/h+0ljPPHIsOjvUypgyKXOR2uNscjpmOSGrc54UwGpAqax+T 3NYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QqMDCm4g; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z25si14003pgc.821.2018.03.26.18.03.16; Mon, 26 Mar 2018 18:03:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QqMDCm4g; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752048AbeC0BCX (ORCPT + 99 others); Mon, 26 Mar 2018 21:02:23 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:40987 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751903AbeC0BCV (ORCPT ); Mon, 26 Mar 2018 21:02:21 -0400 Received: by mail-pg0-f68.google.com with SMTP id t10so1820076pgv.8 for ; Mon, 26 Mar 2018 18:02:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:reply-to:references:mime-version :content-disposition:in-reply-to:user-agent; bh=roB/+tV1DQc6PSMvC+w0eQ6E80gqeu6ufz3YgWA2Xmw=; b=QqMDCm4gRWnHt1Ssf/4MEzpoqtK0d6dxujXInsI04EzNToPgeVgRH6IxcfFscmzFco WJjpgzfkP43ccIibU8dZoqcwVzSwfcutnutVt295iNP6HYEC4/5h74kFY7kfO2qRNL48 yvrjlw2JQWGAqNzkj64+guuG5bo/Fbwg4SQqGoRraGUhoNNcvrrb4zyONwtN9bxnd/yN nyfpJINWyJcZgZ14D5z9OTgtVnE6p+KgeR2zQjf5C30mhDfKSVycZPm7mN8Z23C4p+uV t9I2H8YxqAihljEtP/se4mM0tMtLATRiwxA6gt5w5ojG7HACRQxbbFrjOvlcsAW9U55z 7xvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:reply-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=roB/+tV1DQc6PSMvC+w0eQ6E80gqeu6ufz3YgWA2Xmw=; b=Bqh5jwUITwwy4yIJOuSiJfpjhOGafNA5Wml3fNqW6oJIvu4zfySuTRKkhbnDAK1tEH He4vbwJcsK7gBO1p2UeFRIBwNPGNSAVtlGkbm8vbiwfiQELP4znSntos6iNFSqp3SyqH CNx9X5PHy4EKy0A0cj7KCNyQO3qRJhjqQfvaHxiSxCKUuv8uBV78KZO0ywxj0AMX1h5c 6GQlu0qkY7F9iVQMgtBBXBuO5UQeraQNob0Fv6wIo+6nHhD3V/lMftLyvP56o0DBLF7M I+TK84/BpWCPpmts8xzVlV2hKnHEeRR39AYht38PuGa1E7esR+YqPgNpoOIYrYP+SY/T zOYA== X-Gm-Message-State: AElRT7EVkGGxdOiOZb7YbVkstcHEbcemjmLyDGu8/bKMVuCxK9vtjBS8 UOu6ctQ2gK/DvS7VEFRkUZo= X-Received: by 10.98.200.9 with SMTP id z9mr29009680pff.128.1522112541238; Mon, 26 Mar 2018 18:02:21 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id j83sm77560pfj.18.2018.03.26.18.02.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Mar 2018 18:02:20 -0700 (PDT) Date: Tue, 27 Mar 2018 09:02:13 +0800 From: Wei Yang To: Jia He Cc: Andrew Morton , Michal Hocko , Catalin Marinas , Mel Gorman , Will Deacon , Mark Rutland , Ard Biesheuvel , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Pavel Tatashin , Daniel Jordan , AKASHI Takahiro , Gioh Kim , Steven Sistare , Daniel Vacek , Eugeniu Rosca , Vlastimil Babka , linux-kernel@vger.kernel.org, linux-mm@kvack.org, James Morse , Steve Capper , x86@kernel.org, Greg Kroah-Hartman , Kate Stewart , Philippe Ombredanne , Johannes Weiner , Kemi Wang , Petr Tesarik , YASUAKI ISHIMATSU , Andrey Ryabinin , Nikolay Borisov Subject: Re: [PATCH v3 0/5] optimize memblock_next_valid_pfn and early_pfn_valid Message-ID: <20180327010213.GA80447@WeideMacBook-Pro.local> Reply-To: Wei Yang References: <1522033340-6575-1-git-send-email-hejianet@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1522033340-6575-1-git-send-email-hejianet@gmail.com> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Mar 25, 2018 at 08:02:14PM -0700, Jia He wrote: >Commit b92df1de5d28 ("mm: page_alloc: skip over regions of invalid pfns >where possible") tried to optimize the loop in memmap_init_zone(). But >there is still some room for improvement. > >Patch 1 remain the memblock_next_valid_pfn when CONFIG_HAVE_ARCH_PFN_VALID > is enabled >Patch 2 optimizes the memblock_next_valid_pfn() >Patch 3~5 optimizes the early_pfn_valid(), I have to split it into parts > because the changes are located across subsystems. > >I tested the pfn loop process in memmap_init(), the same as before. >As for the performance improvement, after this set, I can see the time >overhead of memmap_init() is reduced from 41313 us to 24345 us in my >armv8a server(QDF2400 with 96G memory). > >Attached the memblock region information in my server. >[ 86.956758] Zone ranges: >[ 86.959452] DMA [mem 0x0000000000200000-0x00000000ffffffff] >[ 86.966041] Normal [mem 0x0000000100000000-0x00000017ffffffff] >[ 86.972631] Movable zone start for each node >[ 86.977179] Early memory node ranges >[ 86.980985] node 0: [mem 0x0000000000200000-0x000000000021ffff] >[ 86.987666] node 0: [mem 0x0000000000820000-0x000000000307ffff] >[ 86.994348] node 0: [mem 0x0000000003080000-0x000000000308ffff] >[ 87.001029] node 0: [mem 0x0000000003090000-0x00000000031fffff] >[ 87.007710] node 0: [mem 0x0000000003200000-0x00000000033fffff] >[ 87.014392] node 0: [mem 0x0000000003410000-0x000000000563ffff] >[ 87.021073] node 0: [mem 0x0000000005640000-0x000000000567ffff] >[ 87.027754] node 0: [mem 0x0000000005680000-0x00000000056dffff] >[ 87.034435] node 0: [mem 0x00000000056e0000-0x00000000086fffff] >[ 87.041117] node 0: [mem 0x0000000008700000-0x000000000871ffff] >[ 87.047798] node 0: [mem 0x0000000008720000-0x000000000894ffff] >[ 87.054479] node 0: [mem 0x0000000008950000-0x0000000008baffff] >[ 87.061161] node 0: [mem 0x0000000008bb0000-0x0000000008bcffff] >[ 87.067842] node 0: [mem 0x0000000008bd0000-0x0000000008c4ffff] >[ 87.074524] node 0: [mem 0x0000000008c50000-0x0000000008e2ffff] >[ 87.081205] node 0: [mem 0x0000000008e30000-0x0000000008e4ffff] >[ 87.087886] node 0: [mem 0x0000000008e50000-0x0000000008fcffff] >[ 87.094568] node 0: [mem 0x0000000008fd0000-0x000000000910ffff] >[ 87.101249] node 0: [mem 0x0000000009110000-0x00000000092effff] >[ 87.107930] node 0: [mem 0x00000000092f0000-0x000000000930ffff] >[ 87.114612] node 0: [mem 0x0000000009310000-0x000000000963ffff] >[ 87.121293] node 0: [mem 0x0000000009640000-0x000000000e61ffff] >[ 87.127975] node 0: [mem 0x000000000e620000-0x000000000e64ffff] >[ 87.134657] node 0: [mem 0x000000000e650000-0x000000000fffffff] >[ 87.141338] node 0: [mem 0x0000000010800000-0x0000000017feffff] >[ 87.148019] node 0: [mem 0x000000001c000000-0x000000001c00ffff] >[ 87.154701] node 0: [mem 0x000000001c010000-0x000000001c7fffff] >[ 87.161383] node 0: [mem 0x000000001c810000-0x000000007efbffff] >[ 87.168064] node 0: [mem 0x000000007efc0000-0x000000007efdffff] >[ 87.174746] node 0: [mem 0x000000007efe0000-0x000000007efeffff] >[ 87.181427] node 0: [mem 0x000000007eff0000-0x000000007effffff] >[ 87.188108] node 0: [mem 0x000000007f000000-0x00000017ffffffff] Hi, Jia I haven't taken a deep look into your code, just one curious question on your memory layout. The log above is printed out in free_area_init_nodes(), which iterates on memblock.memory and prints them. If I am not wrong, memory regions added to memblock.memory are ordered and merged if possible. While from your log, I see many regions could be merged but are isolated. For example, the last two region: node 0: [mem 0x000000007eff0000-0x000000007effffff] node 0: [mem 0x000000007f000000-0x00000017ffffffff] So I am curious why they are isolated instead of combined to one. From the code, the possible reason is the region's flag differs from each other. If you have time, would you mind taking a look into this? -- Wei Yang Help you, Help me