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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A36DC4332F for ; Tue, 12 Dec 2023 18:31:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0258F6B0326; Tue, 12 Dec 2023 13:31:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F18A76B0327; Tue, 12 Dec 2023 13:31:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB8796B0328; Tue, 12 Dec 2023 13:31:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id C749D6B0326 for ; Tue, 12 Dec 2023 13:31:34 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 894F5C0A60 for ; Tue, 12 Dec 2023 18:31:34 +0000 (UTC) X-FDA: 81559009308.28.686ACAA Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by imf06.hostedemail.com (Postfix) with ESMTP id 3D4BB18002D for ; Tue, 12 Dec 2023 18:31:30 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=JZ+Mz+Ju; spf=pass (imf06.hostedemail.com: domain of shy828301@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702405891; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mZLkkO0PmZEGst81Sxz5KpHCkpCitnlyVTzIBak9vHk=; b=h/L9KRuVwMvW4owUpHmBfmzG/9hQ7ScFn/S4ujE6sQoEL1ZX2KAaHd8rkgmJEWQ41xxjtn yK1uLivDHkn7yJNqBFD1MhF+CL3NufdnP1/yZ5RGXDGjSlGJiAzMuWZj5Rwzx95ODX5x+L 5U3Y98Fbre4PqfRk91GrPEEQDFt77RQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702405891; a=rsa-sha256; cv=none; b=MdY/ijpILeKiftmtUeeiBTHVLjVDDQgv/ObXIS8FiMHKQQlWzls+rihSN9cBuoFvpfI72E gUzMbx3fvd1zPqE0uO7rBp31E4o7W6b9zgg+BWw816Wm7Jny+ATJicdQ1OV6G7HalB93SR v18ZBTJqpqIN3hRaz2w/jJuIqrYUFuU= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=JZ+Mz+Ju; spf=pass (imf06.hostedemail.com: domain of shy828301@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-5c66b093b86so5274675a12.0 for ; Tue, 12 Dec 2023 10:31:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702405890; x=1703010690; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=mZLkkO0PmZEGst81Sxz5KpHCkpCitnlyVTzIBak9vHk=; b=JZ+Mz+JuX4MbT/6ER5ZHrB5e4dEBk3sycCCPYI3Qm2sYj5UWzri45M43+MuNqb9DT8 aZcOyIw2R4S/3FF6axmjAQaZsSJ2KqZGb2Cvc8wmgDcecnkfgEeb8XlB3X2Rpiaf8fbz aOiUQ+sTuq413/58Ub+H20p2AFY1JEpKOXzrS5qB5wHwIc9tuOHfGLulJdttfTH8JKdG 57xuspcCLOIRT7V58lhiz/7MM5A9pfiwBncQD/4+Ut2+5/TXXHZJAxo7fAN79Hzj+QYx 9yIekorXxGN1dCe52ZgnsLQ9HEIAq8MLWk8Tw1omCfxpKyMH0UGoQgo73iwtKqxDk5kK M3/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702405890; x=1703010690; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mZLkkO0PmZEGst81Sxz5KpHCkpCitnlyVTzIBak9vHk=; b=aiVtG0sZ61pkapFoHRKWnW/v53in4KJijZi5r+wunWTXjUf/tWmM9RDKerpeICclD0 xj4ieKDl1nMb2h9IXA2QDbKJBex9WuOd53DYfia/QTWTrBddqK9f67jQRSfFhSQFKzIH y7Hr335uJa+R0rtdEtkuxRRjMFeQsDsglLI+QaeADFFXXc4uUAi7QLV4xLxkk+tQgaTW Ql5XaANu3DSJxugXcfXxWCfIEfAhcs2ar3JPCV8uxy7Kp9ovtKrdkaAYSrNEceAU7m9x LDE71KsiL9au7XS0gE4/bvl+FIiydVuczHyzeyh6nC8He78PMgYF9w7/szvST9fPSTjg ZanA== X-Gm-Message-State: AOJu0Yyrym2nC7le/j2v0O3LnWkAfagt6NiY1b9ic88NyYOZRhEI94ti HN1/EzqbVZgF1Cl274t9tw79z0IAKOvcwg43izM= X-Google-Smtp-Source: AGHT+IEP/lLeZqd54Hmik6rsbsT6NIhRGf1VRpRlwrbvF89s0lzyj8HQrvf93DzU1e6QzPyYPXFiFI1GjE5BQvA8wO0= X-Received: by 2002:a17:90a:8b81:b0:28a:d766:fa15 with SMTP id z1-20020a17090a8b8100b0028ad766fa15mr503497pjn.12.1702405889897; Tue, 12 Dec 2023 10:31:29 -0800 (PST) MIME-Version: 1.0 References: <79f9a0ad-80cc-1fc5-2d48-cc5ba82bd844@gentwo.org> In-Reply-To: <79f9a0ad-80cc-1fc5-2d48-cc5ba82bd844@gentwo.org> From: Yang Shi Date: Tue, 12 Dec 2023 10:31:18 -0800 Message-ID: Subject: Re: [PATCH] ARM64: Implement arch_report_meminfo() To: "Christoph Lameter (Ampere)" Cc: Catalin Marinas , Marc Zyngier , Will Deacon , Ryan Roberts , Mark Rutland , Vishal Moola , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 3D4BB18002D X-Rspam-User: X-Stat-Signature: r8xxz7f84rtk4f1zyokmgyyqy97ct1fc X-Rspamd-Server: rspam03 X-HE-Tag: 1702405890-45317 X-HE-Meta: U2FsdGVkX18pS4KxsW7uBhflPEqxAGXC3d01RixXaqwiSwgoBOEAVrcIZZDAedNf7t3qVEPZDS3tTXnXUgU5ocUv1cm/bTYRN7GInoGENJouEbX14NA+wtrjhWmQ0vy1X+NPsa0WPmNzR+nkwkaIb49kClzNEKAqHdRHKmnlEglXOs3cnWN9wMmKNwnoSs4HAbhyriX4+24N+tpzUxRTXvd1BK/zC/3MIeWeWMNs8qkTEYSuCE42z0W6NFtm5rGnhZrrwvofKOinv8k1zWjfikAhQFBey0myF2C71MflUQDkzRB1azylZKflLnuqYvkadbaM/NXSpFEhMeixqA5JVOTL12+nlZfE6FzrS+7D/FQ/XvRb8cx/dtHhCufVK9g5kD8HdWiEWEXxlT0Dnt88x0f0OH7nJwdfoxS9Y6pbswYxLqDg+lx3o376FxMrKDS1VORbQNKRsbdkzuRRnKPjeI0oKH+PNj/QiMJgGpXxxi8+dYTMMwmasJb2Ua2nCYWKkHT0VdWs/X6J6y1mIqQdtyuW9I3mG2YZuTyg2va506IsO9XDaVWLZFr8rkS+rP6UBWQ23XIuo4EIJKka7xewPfgxFdR7pQh0iEFQBD4WTpdjMb6ByskQmBJluuQfiHP5vNdgNl/iQTu3qmJkPkm9fZjAL1P5AlCVzjgKppUoSE4WRhWAEMOtGF2UxyhUjCTzgL9bU3QqIPBlySnDSL9GKNbwrWY763biF8uPjXohlRBEj/MtELZFbnHka566ZABWZCGiz9J/hGUbNbcQBqQzaNQ9niwQJDdkxxldtFtzn+TKGmHtjODnB4coGsA+r9NBWsYfXgK6632lufVA0VP5tWF72gDlGrgdv3Q6k8LIXcpxg+RBwgVBUlFi1vfRDCFHb57QAyIAZXopCzggg0iR3Nqb7SXlhvmXU2mYTgyA9jnp+YbeVOUn0ZPI5hSE/DIElzAvi+gqYOT/Zm1cFU0 UI5Bc4ym vzkHOJv+spBeyQEz+Y1zoGtsDaT5NZFq+9QPMh/evSvjWw2dFxngFFFO2T00Zfc2Dk08a4E+Tcq/nMiXHR5rvFzbagqfuCAbdpsRBG/8Kys7A2w2WaT54gKYGLm41/3M3eQpFaqo1bkMhoru2iboc4SKD2qLXy6vyaYUBzT9O6znCgsxTYPt5WwubS7z+XBBMUMXcTaCbBEnekSluybWTxx7769xicv0QKBfgoucRdcu2ah2OuV3bO1vWB1btVviGaPX3hwmmLw9pkCZW2td13LBYlkpqoA8daDryJuuF1ylkw30My0L25Kto5g385lYEmjo/3ncHZMWdK6gb7yHihAenp4tVFVhWE0ENVvLylJh/O4m29R1BkRfaacderdt6xMdKxZNa/p3/53Q/KtfUi3hT49ksUZAZ/E8/RhHVsPXFj7jxyEjbRgWsY03fW/BCsEWBdsEa3ezGlsfdwhOPnDNGULjqlS0XJYmVg8xW379+VeYdXtBqyp63WTdJ/ZrFlUeIe8xNtZm780NigjIo7Cvmov0O4XwH8O/QFrZgNe6WVUK7aarsulDdCWH6gsWs5N/r2sMcVj2JJEw= 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: List-Subscribe: List-Unsubscribe: On Fri, Dec 8, 2023 at 1:12=E2=80=AFPM Christoph Lameter (Ampere) wrote: > > X86 has information in /proc/meminfo showing the use of large mappings > for the kernel direct map. This has now also become important for > ARM since the kernel default CONFIG_RODATA_FULL_DEFAULT_ENABLED > forces 4K PTE use for the direct map and users may not be aware > of the performance impact of the increased TLB use etc. > > The output of /proc/meminfo on ARM64 is then after this patch: > > 4K page size: > > Hugepagesize: 2048 kB > Hugetlb: 0 kB > DirectMap4k: 155912 kB > CONT DMap4k: 1176 kB > DirectMap2M: 722944 kB > CONT DMap2M: 28672 kB > DirectMap1G: 534773760 kB > > 64K page size: > > Hugepagesize: 524288 kB > Hugetlb: 0 kB > DirectMap64k: 882624 kB > CONT DMap64k: 19904 kB > DirectMap512M: 534773760 kB > CONT DMap512M: 0 kB > DirectMap4096G: 0 kB > > Signed-off-by: Christoph Lameter > > Index: linux/arch/arm64/mm/mmu.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux.orig/arch/arm64/mm/mmu.c > +++ linux/arch/arm64/mm/mmu.c > @@ -66,6 +66,12 @@ u32 __boot_cpu_mode[] =3D { BOOT_CPU_MODE_ > */ > long __section(".mmuoff.data.write") __early_cpu_boot_status; > > +static atomic_t nr_pte; > +static atomic_t nr_pmd; > +static atomic_t nr_pud; > +static atomic_t nr_pte_cont; > +static atomic_t nr_pmd_cont; These statistics are useful for debugging. However, why not use the direct_pages_count[] array to save the counters like other architectures, for example, x86, ppc and s390? > + > /* > * Empty_zero_page is a special page that is used for zero-initialized = data > * and COW. > @@ -179,6 +185,7 @@ static void init_pte(pmd_t *pmdp, unsign > pte_t old_pte =3D READ_ONCE(*ptep); > > set_pte(ptep, pfn_pte(__phys_to_pfn(phys), prot)); > + atomic_inc(&nr_pte); > > /* > * After the PTE entry has been populated once, we > @@ -223,8 +230,10 @@ static void alloc_init_cont_pte(pmd_t *p > > /* use a contiguous mapping if the range is suitably alig= ned */ > if ((((addr | next | phys) & ~CONT_PTE_MASK) =3D=3D 0) && > - (flags & NO_CONT_MAPPINGS) =3D=3D 0) > + (flags & NO_CONT_MAPPINGS) =3D=3D 0) { > __prot =3D __pgprot(pgprot_val(prot) | PTE_CONT); > + atomic_inc(&nr_pte_cont); > + } > > init_pte(pmdp, addr, next, phys, __prot); > > @@ -249,6 +258,7 @@ static void init_pmd(pud_t *pudp, unsign > if (((addr | next | phys) & ~PMD_MASK) =3D=3D 0 && > (flags & NO_BLOCK_MAPPINGS) =3D=3D 0) { > pmd_set_huge(pmdp, phys, prot); > + atomic_inc(&nr_pmd); > > /* > * After the PMD entry has been populated once, w= e > @@ -301,8 +311,10 @@ static void alloc_init_cont_pmd(pud_t *p > > /* use a contiguous mapping if the range is suitably alig= ned */ > if ((((addr | next | phys) & ~CONT_PMD_MASK) =3D=3D 0) && > - (flags & NO_CONT_MAPPINGS) =3D=3D 0) > + (flags & NO_CONT_MAPPINGS) =3D=3D 0) { > __prot =3D __pgprot(pgprot_val(prot) | PTE_CONT); > + atomic_inc(&nr_pmd_cont); > + } > > init_pmd(pudp, addr, next, phys, __prot, pgtable_alloc, f= lags); > > @@ -346,7 +358,7 @@ static void alloc_init_pud(pgd_t *pgdp, > ((addr | next | phys) & ~PUD_MASK) =3D=3D 0 && > (flags & NO_BLOCK_MAPPINGS) =3D=3D 0) { > pud_set_huge(pudp, phys, prot); > - > + atomic_inc(&nr_pud); > /* > * After the PUD entry has been populated once, w= e > * only allow updates to the permission attribute= s. > @@ -1486,3 +1498,35 @@ void ptep_modify_prot_commit(struct vm_a > { > set_pte_at(vma->vm_mm, addr, ptep, pte); > } > + > +#ifdef CONFIG_PROC_FS > +void arch_report_meminfo(struct seq_file *m) > +{ > + unsigned long pagesize_in_kb =3D PAGE_SIZE / 1024; > + > + seq_printf(m, "DirectMap%luk: %8lu kB\n", > + pagesize_in_kb, > + (unsigned long)atomic_read(&nr_pte) * pagesize_in= _kb); > + > + seq_printf(m, "CONT DMap%luk: %8lu kB\n", > + pagesize_in_kb, > + (unsigned long)atomic_read(&nr_pte_cont) * pagesi= ze_in_kb); > + > + pagesize_in_kb =3D PMD_SIZE / 1024; > + > + seq_printf(m, "DirectMap%luM: %8lu kB\n", > + pagesize_in_kb / 1024, > + (unsigned long)atomic_read(&nr_pmd) * pagesize_in= _kb); > + > + seq_printf(m, "CONT DMap%luM: %8lu kB\n", > + pagesize_in_kb / 1024, > + (unsigned long)atomic_read(&nr_pmd_cont) * pagesi= ze_in_kb); > + > + pagesize_in_kb =3D PUD_SIZE / 1024; > + > + seq_printf(m, "DirectMap%luG: %10lu kB\n", > + pagesize_in_kb >> 20, > + (unsigned long)atomic_read(&nr_pud) * pagesize_i= n_kb); > +} > +#endif > + >