From patchwork Mon Jul 8 11:24:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13726437 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 90052C3271E for ; Mon, 8 Jul 2024 11:25:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E3E996B007B; Mon, 8 Jul 2024 07:24:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DEE5A6B0082; Mon, 8 Jul 2024 07:24:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB5EB6B0083; Mon, 8 Jul 2024 07:24:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id AC4386B007B for ; Mon, 8 Jul 2024 07:24:59 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2FA0FA43F9 for ; Mon, 8 Jul 2024 11:24:59 +0000 (UTC) X-FDA: 82316353518.22.79CC3BE Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf28.hostedemail.com (Postfix) with ESMTP id 784FDC001D for ; Mon, 8 Jul 2024 11:24:56 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=none; spf=pass (imf28.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720437858; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=Yd1eUnrzlWi3RAvwkemkeba5CQrIzL/GUHn75eIJOFI=; b=Bd/PCT+XEtjP++G1PFzZFVD0ejbvx7gTXmhqjnzfHktJC9KJ3jqaoBYkIXbfiIbm0CukDC zT/CGkEDMdRqfiwBoqM160GkUcwEO+77zc7ThTYGgl/ctq2tWV9woersjkoKBQKO0nSEqe 3QRePCIi1eQQ6hQiv629njbpXQZMdYU= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=none; spf=pass (imf28.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720437858; a=rsa-sha256; cv=none; b=gCyaD1LV7orFZjsHzfXDH6EO9s+CGYjZhdj5dw3rAKJvk7fOa77AcpZd98Cc2yE5NuR/Bw WUTXcE1gne1GqZ1S/NnzD9y4BDhYgr1hMy37rbL93QXc3zE55RzKHG0cpZp61wDEbL5sXL McKBc2C7iO+v3Wm697l44wbiT7Accqs= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7C7191042; Mon, 8 Jul 2024 04:25:20 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5FDCB3F641; Mon, 8 Jul 2024 04:24:53 -0700 (PDT) From: Ryan Roberts To: Andrew Morton , Hugh Dickins , Jonathan Corbet , Barry Song , David Hildenbrand , Baolin Wang , Lance Yang , Matthew Wilcox , Zi Yan , Daniel Gomez Cc: Ryan Roberts , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v1] mm: shmem: Rename mTHP shmem counters Date: Mon, 8 Jul 2024 12:24:43 +0100 Message-ID: <20240708112445.2690631-1-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 784FDC001D X-Stat-Signature: cbr9nyz69cuta1au894ixeftcrakoftr X-Rspam-User: X-HE-Tag: 1720437896-279251 X-HE-Meta: U2FsdGVkX19OHrmrlslkDvIpIbbJkmXT1xL9XP1IxX/Zc/c1E1VYhp1jS3NT0d/vRLZC8tZNWKaKAsIwch3L4CpiFFnO6kQ4MF9wty1FGz7YYFxI82h8yx+6ujdC7a7P5RVLGvvs89nSckxk3kGwsLwE3BeNqw3SjqTP10RwkyYdodkASnkK4Jd95WSdPxIA2eSVHyxgH35kodZKNgpqSJcgw5QdIj2y75g3yQ34In7iZAjCjZJVCoi3r+p6t4vIfSAPYueKHKYSMMDH4nxwsIFtU6/rytyRHcPrKNUnEcgznMGWIj+2WQdZJ46S+Fhg7z0RLlGmidhydSJulxvSSj9FF7Ft7/GyBnOaHHn1zYZGLeeE63JPPatDaWV2/l4VbQGMNv/ltLhvzMDYtUmt2kRt6gjS2JkjrhHCqgwBJ6kfHe6g78FQ1+0GbdihMi5JYvVV6WcEY5jy7hu0rGuz12wqbZLSG3IKHugTnT0uTUyB+Nz8m+wRqhtcjDYUpQT4Mlx4OY+ipWhttWqgoZT/4OQjGirO8UCJemdlp4nhEEvLapdNCxDy8yFL9Lflr8mSeHWZ9f49i7g/iJM84MV2dTV7T895FZIMYB0TY8/IsUO2+OrdMmgC1ek0FFyhR1xmBU303g1j0dEMQzFDqMQkYo8MZCsNevNSo1S/zgwAR0/j9byncivk4j+Hnx+P3+EUTYXBqNR5TjFHJH2Vq/Yb1DbitBHgMIZQwl7jLoj3ECQZd4oQE5VFPQPHf6z8mEw1KyRNaLO9JMHmOS8mWXV7FCjM9y2XTwjiixG4BJNyFQXk683Zh+Ckw1VgIZ+cwVRQISlCH0BPIYnPEKwoMoKAHtGjr5V6uUO6uz0pSbcey4ocGA2Ysv4JGRzkmEvfcqBnCwmPaXSn13F/tG+d/en1PDwSJ1QGm72xHwHpXD1G3FyxX7Tgr0ku/c+KhIQMW0ZLU87LK3TE23mNblsqx0j tuHFIR/q 5XtRL53D/OsEwtXAh60juYeMh+2pd/2o+GXNc7j3sge3GREHXUtmzEFbwIt/+4KL4i+97rVFKkWaLaN+woiq2xjktBrr1pQrHKQLPC8mXsvoGRgcyRGwQb6Qgp0V2ogIGosp8e2zI279QLQfYRi2pKauEGJIVtrnhDf6I 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: The legacy PMD-sized THP counters at /proc/vmstat include thp_file_alloc, thp_file_fallback and thp_file_fallback_charge, which rather confusingly refer to shmem THP and do not include any other types of file pages. This is inconsistent since in most other places in the kernel, THP counters are explicitly separated for anon, shmem and file flavours. However, we are stuck with it since it constitutes a user ABI. Recently, commit 66f44583f9b6 ("mm: shmem: add mTHP counters for anonymous shmem") added equivalent mTHP stats for shmem, keeping the same "file_" prefix in the names. But in future, we may want to add extra stats to cover actual file pages, at which point, it would all become very confusing. So let's take the opportunity to rename these new counters "shmem_" before the change makes it upstream and the ABI becomes immutable. Signed-off-by: Ryan Roberts Reviewed-by: Baolin Wang Reviewed-by: Lance Yang --- Hi All, Applies on top of today's mm-unstable (2073cda629a4) and tested with mm selftests; no regressions observed. The backstory here is that I'd like to introduce some counters for regular file folio allocations to observe how often large folio allocation succeeds, but these shmem counters are named "file" which is going to make things confusing. So hoping to solve that before commit 66f44583f9b6 ("mm: shmem: add mTHP counters for anonymous shmem") goes upstream (it is currently in mm-stable). Admittedly, this change means the mTHP stat names are not the same as the legacy PMD-size THP names, but I think that's a smaller issue than having "file_" mTHP stats that only count shmem, then having to introduce "file2_" or "pgcache_" stats for the regular file memory, which is even more inconsistent IMHO. I guess the alternative is to count both shmem and file in these mTHP stats (that's how they were documented anyway) but I think it's better to be able to consider them separately like we do for all the other counters. Thanks, Ryan Documentation/admin-guide/mm/transhuge.rst | 12 ++++++------ include/linux/huge_mm.h | 6 +++--- mm/huge_memory.c | 12 ++++++------ mm/shmem.c | 8 ++++---- 4 files changed, 19 insertions(+), 19 deletions(-) -- 2.43.0 diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst index 747c811ee8f1..8b891689fc13 100644 --- a/Documentation/admin-guide/mm/transhuge.rst +++ b/Documentation/admin-guide/mm/transhuge.rst @@ -496,16 +496,16 @@ swpout_fallback Usually because failed to allocate some continuous swap space for the huge page. -file_alloc - is incremented every time a file huge page is successfully +shmem_alloc + is incremented every time a shmem huge page is successfully allocated. -file_fallback - is incremented if a file huge page is attempted to be allocated +shmem_fallback + is incremented if a shmem huge page is attempted to be allocated but fails and instead falls back to using small pages. -file_fallback_charge - is incremented if a file huge page cannot be charged and instead +shmem_fallback_charge + is incremented if a shmem huge page cannot be charged and instead falls back to using small pages even though the allocation was successful. diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index acb6ac24a07e..cff002be83eb 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -269,9 +269,9 @@ enum mthp_stat_item { MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE, MTHP_STAT_SWPOUT, MTHP_STAT_SWPOUT_FALLBACK, - MTHP_STAT_FILE_ALLOC, - MTHP_STAT_FILE_FALLBACK, - MTHP_STAT_FILE_FALLBACK_CHARGE, + MTHP_STAT_SHMEM_ALLOC, + MTHP_STAT_SHMEM_FALLBACK, + MTHP_STAT_SHMEM_FALLBACK_CHARGE, MTHP_STAT_SPLIT, MTHP_STAT_SPLIT_FAILED, MTHP_STAT_SPLIT_DEFERRED, diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 9ec64aa2be94..f9696c94e211 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -568,9 +568,9 @@ DEFINE_MTHP_STAT_ATTR(anon_fault_fallback, MTHP_STAT_ANON_FAULT_FALLBACK); DEFINE_MTHP_STAT_ATTR(anon_fault_fallback_charge, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE); DEFINE_MTHP_STAT_ATTR(swpout, MTHP_STAT_SWPOUT); DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SWPOUT_FALLBACK); -DEFINE_MTHP_STAT_ATTR(file_alloc, MTHP_STAT_FILE_ALLOC); -DEFINE_MTHP_STAT_ATTR(file_fallback, MTHP_STAT_FILE_FALLBACK); -DEFINE_MTHP_STAT_ATTR(file_fallback_charge, MTHP_STAT_FILE_FALLBACK_CHARGE); +DEFINE_MTHP_STAT_ATTR(shmem_alloc, MTHP_STAT_SHMEM_ALLOC); +DEFINE_MTHP_STAT_ATTR(shmem_fallback, MTHP_STAT_SHMEM_FALLBACK); +DEFINE_MTHP_STAT_ATTR(shmem_fallback_charge, MTHP_STAT_SHMEM_FALLBACK_CHARGE); DEFINE_MTHP_STAT_ATTR(split, MTHP_STAT_SPLIT); DEFINE_MTHP_STAT_ATTR(split_failed, MTHP_STAT_SPLIT_FAILED); DEFINE_MTHP_STAT_ATTR(split_deferred, MTHP_STAT_SPLIT_DEFERRED); @@ -581,9 +581,9 @@ static struct attribute *stats_attrs[] = { &anon_fault_fallback_charge_attr.attr, &swpout_attr.attr, &swpout_fallback_attr.attr, - &file_alloc_attr.attr, - &file_fallback_attr.attr, - &file_fallback_charge_attr.attr, + &shmem_alloc_attr.attr, + &shmem_fallback_attr.attr, + &shmem_fallback_charge_attr.attr, &split_attr.attr, &split_failed_attr.attr, &split_deferred_attr.attr, diff --git a/mm/shmem.c b/mm/shmem.c index 921d59c3d669..f24dfbd387ba 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1777,7 +1777,7 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf, if (pages == HPAGE_PMD_NR) count_vm_event(THP_FILE_FALLBACK); #ifdef CONFIG_TRANSPARENT_HUGEPAGE - count_mthp_stat(order, MTHP_STAT_FILE_FALLBACK); + count_mthp_stat(order, MTHP_STAT_SHMEM_FALLBACK); #endif order = next_order(&suitable_orders, order); } @@ -1804,8 +1804,8 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf, count_vm_event(THP_FILE_FALLBACK_CHARGE); } #ifdef CONFIG_TRANSPARENT_HUGEPAGE - count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK); - count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_FALLBACK_CHARGE); + count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK); + count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_FALLBACK_CHARGE); #endif } goto unlock; @@ -2181,7 +2181,7 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index, if (folio_test_pmd_mappable(folio)) count_vm_event(THP_FILE_ALLOC); #ifdef CONFIG_TRANSPARENT_HUGEPAGE - count_mthp_stat(folio_order(folio), MTHP_STAT_FILE_ALLOC); + count_mthp_stat(folio_order(folio), MTHP_STAT_SHMEM_ALLOC); #endif goto alloced; }