From patchwork Mon Feb 24 16:56:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Hildenbrand X-Patchwork-Id: 13988511 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 09B86C021A4 for ; Mon, 24 Feb 2025 16:57:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 60BBB280008; Mon, 24 Feb 2025 11:56:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5B7F4280002; Mon, 24 Feb 2025 11:56:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3E4A1280008; Mon, 24 Feb 2025 11:56:50 -0500 (EST) 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 1EE2A280002 for ; Mon, 24 Feb 2025 11:56:50 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DF793A3D01 for ; Mon, 24 Feb 2025 16:56:49 +0000 (UTC) X-FDA: 83155442538.04.9DB310C Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf15.hostedemail.com (Postfix) with ESMTP id A36AEA0004 for ; Mon, 24 Feb 2025 16:56:47 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=R4JRLb1K; spf=pass (imf15.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740416207; a=rsa-sha256; cv=none; b=aRDZm78dLjmNalupZjMpQoql3FSLFjxxN9i9ytIg8HaUXOKtXUlrxGZfUloJ8E0810K3mR jTbRuzcZ4wYkLusf8WRuCei93jGqTK4KDXge9XHl9+NQzyC68TjPXH8H/ub8Q61lu+Ahet bgak2w6SiZ6sxux8Y3ylxJA1+U0dqUo= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=R4JRLb1K; spf=pass (imf15.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740416207; 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=4IIiK38txs39RTm2yNSD9uzsg2Epj+W/QUBXdJN6a7s=; b=6yc71zKGDWLnXbQ4k0ia/626T0ZY1NwuZDejZ7148jlZ06B9KW9Re/NtYvvsx027c3/mFn nQlM2fO+FO5yYwC3U0YoiBOvOIUiUIb2F+Gp+4rdGtfaMEh2FhBCaz0pK7rQQnkRtfQ4fq maaHYiVFWXvEV3Dn+2p9og7fLtcrKCc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1740416206; h=from:from: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; bh=4IIiK38txs39RTm2yNSD9uzsg2Epj+W/QUBXdJN6a7s=; b=R4JRLb1K/TgLzhmqV8GP0jB9hPEcYwowAspqZGi1AstAvT2JK3Rr8u4iYsKfVOjmNm5JHa e5ReahdhItHMVw5Wp4bxLC9qrvg8nXntIaGlRs0kRXOXoE7wcOAnyCi9i03EQnB6mapt82 mA177ZhCQVA0V/qZD+ibpsHUjXoJuqU= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-261-5J51aA5YNRCvCaHQbssBTw-1; Mon, 24 Feb 2025 11:56:45 -0500 X-MC-Unique: 5J51aA5YNRCvCaHQbssBTw-1 X-Mimecast-MFC-AGG-ID: 5J51aA5YNRCvCaHQbssBTw_1740416204 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-38f2f78aee1so1894293f8f.0 for ; Mon, 24 Feb 2025 08:56:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740416204; x=1741021004; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4IIiK38txs39RTm2yNSD9uzsg2Epj+W/QUBXdJN6a7s=; b=C0YS5EscBto8iVGgKkT++U6nEZr9elOl0iNq6eyor+fHvCvTTSGgBYuPrFpPAQoT5M AOD3w8ZE/L5RnfhOgb9Q7o9lW1+dpPUCmPlKQzWK6v/gNIDpfhaGsWoie5X8Hig//y24 elZeX8x1XTHuRwpjTW0KPfKTjqHsAvL92sywE1uTjFby6cMUQRBu/a2710dRtdQuV76f ZO2AxLZk/N5MVp/0WCf9rRdgawZybXGL75l0wpDVw+oK70sRV1ApMaRgg9dzZNGrS6F4 EPt8isqdrjqEni6rcff5M0cFLuTujkcC3fh+hXRm578gtp+yzsfI10FBPYpY1rzR2fBQ RQMg== X-Forwarded-Encrypted: i=1; AJvYcCVfLNQwDx2+TB6KHRCrU0yQRHQZQP5ZZCkuS1OSAviUqJR8ZbljtIODzvl5WfcwRRCtxrKwQNiJAA==@kvack.org X-Gm-Message-State: AOJu0YzahuCNNR89xIxbdFpDbh6BTnz0ukxVVltaZRDJS5gVlsO5A3zj 1Dxg+iywHAgVgwUTqY4GYRMUkk+sJRwusaWkm3ym3afSXqA12QG5vrSxzD9wTo7uBHiM7NOKZdR xUeiTtZ2xX4by2zxCxBii1cicMAllXyZcUAhDsgIyy533JQ32 X-Gm-Gg: ASbGncvEZ0cCmDoE6v1DO8R1QGNpsRwySKTtPa8p7wZ82gSnR/XLwPxv9G8qvSj2rtS q2LhdTWcbPSNYPu082m4TuCwhvN5qhbxj2aD7ktHpuwrP8D0PrjcrTDJNuG3KUMBzNspRDXYqA4 IWMk0vFbfYf2mrItm1yoAw4Ir2S+RPA5HV6J2GA5tG+nFHJ8g5AIKS85gOgQFAxqQUO2b/JQd99 eAUM4r6M+klaAtvkF4KuyNwirbqdOJ8Ljij89L6gtI2xVccXFt/C6ZUEsOVp/JR2ClgA0ke7RZu JedybBxCWKnS/Xfht18sdITWXktlJ9hIh+qLOHY36g== X-Received: by 2002:a5d:5f90:0:b0:38d:c6b8:9fe1 with SMTP id ffacd0b85a97d-38f6f51d885mr12699069f8f.24.1740416204114; Mon, 24 Feb 2025 08:56:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IHr48iDkbeT3BD6T31jawE7AoIz4aDQ8fc4EtI1CIkHNhBzvnREnXgHgZXA/JhJC2+PnfKZ2A== X-Received: by 2002:a5d:5f90:0:b0:38d:c6b8:9fe1 with SMTP id ffacd0b85a97d-38f6f51d885mr12699040f8f.24.1740416203760; Mon, 24 Feb 2025 08:56:43 -0800 (PST) Received: from localhost (p4ff234b6.dip0.t-ipconnect.de. [79.242.52.182]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38f25914171sm32572475f8f.53.2025.02.24.08.56.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Feb 2025 08:56:43 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-doc@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, David Hildenbrand , Andrew Morton , "Matthew Wilcox (Oracle)" , Tejun Heo , Zefan Li , Johannes Weiner , =?utf-8?q?Michal_Koutn=C3=BD?= , Jonathan Corbet , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , Muchun Song , "Liam R. Howlett" , Lorenzo Stoakes , Vlastimil Babka , Jann Horn Subject: [PATCH v2 18/20] fs/proc/task_mmu: remove per-page mapcount dependency for "mapmax" (CONFIG_NO_PAGE_MAPCOUNT) Date: Mon, 24 Feb 2025 17:56:00 +0100 Message-ID: <20250224165603.1434404-19-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250224165603.1434404-1-david@redhat.com> References: <20250224165603.1434404-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: kvYajrwBBevezQ77J8pvGrfAj9dkrO10-CuPEi0425I_1740416204 X-Mimecast-Originator: redhat.com content-type: text/plain; charset="US-ASCII"; x-default=true X-Stat-Signature: jgh53agymz4q4dmah849bzdkdgeorggi X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: A36AEA0004 X-Rspam-User: X-HE-Tag: 1740416207-344477 X-HE-Meta: U2FsdGVkX19JEgN6GZYX0itMl6BCNYKdSj67+DGdLeCylB7/fR3/+evfNawYYy2EW3JehNZHZLSzYmW9kQk188vxRdIrk3Syr+A3ybabfgc9fbBdWdG8Znl/8MauLn9eBFtj2KCw+chYf6mBg12IYnnyYlES6M0PBlUO6E3qKrBN2ehk7ZyjM6kZeaMsKD1S5zdwOCveHtA5LnFc09JYI1nBV1qkIb0RK3HLexFJtw4SB5ycAth+uzB1nQVPWA4Z1upB0hH6jPLRZAx0G9pItEFRUYOHOCdMoeBGcTPLY+Qvc3Kgk84h7XLcIal01YAGh+asiLYShh1lg5We6zL3r/83rD5R4Z1dT60ghjVWVRTEtz8gp0OLfXRIQewbumph6TTENkSexn43WjEOv3as2pDn7DYFPp2ih5gfPHDhzxKf8pB1X2qEPCtht7diINx6rIF7AFdKUcOe5rip8XMxyKt2UsKNargSg2apNESYbmPsMp0fapPe7DpR/szi8qO6OqKyvXrKSDLTk6I2I3WabFQoYAIX0RGs89xsFQEO8u9BgreKGVMTalV/kNfx2P8W2+q0ihPtY2qMAOS3UnQVVEj1PNswPBfM5ky5V/fdu6bwK/IrH7PyAk68jQuZ+kaj13QPG3fWw+SAMCAvDotFJG5QdcylAwiSXxNZvfcFPH7SMGmJ5zZBQV+rXwfLYdpAt5pZZnAX/bVUWcFs6OEfTL9dh/D5r4Yk3bNVZ5YNRzYT+Ty2ZkcFBFMUx8DabQZFvMKru+UwjoehnjWHmRqLaUC7gDYzxdH6YHNXK12RiKUkKotN5YU44EjCaBgvf1NSl8s9bY+k3jknMjZgTL/anBNQdglrFavnQAY8aeddS3EkAf9IwnodNIjnT+bpP7w5FT211tO+9dI4laumZI9sNEQuc+LkfGO7g68GlvagNnwYyooG9nr8YMeUw4mYaSjftu/uWQK64LoEpHSo6qV 0cP5ubdd AlRk+Ot+4N7YXd5xIs1gDi5DkWgrJSKpsXfh5PoPPkUfJJri6jjGNJrNtSwhJ6g6C/0C26pze3S44wqKl4AO31bnAs1m+y6gtUp2VQ4a1JwNTisn8F9z9jQHSKTbGDMIJpyz+tXEEZPOeYHvSGO8WwTERumPiyFcpU5YJHEtUGZaP35JAl02CoYYaX76C2EQBAxWUwMBsJmP5KCTwDb5oDTFaEbnME8xrS7dBpUhuAhbQay6NRwCcc73h/3XcjZ7Y1DvkWirL1ln5Y3LJn1PBI03rxpWafmldbj6tAvL/Ektg00SMV43OuolffAkLCAzPhjVKx2irJB54dBdUCCS4qT4NP0RJtB1pmceqQkaUjB8IF2ObeNhfwnqlkuhn/COuy0dmEHofjEK4Dj/cSM20z0FiWCX4Lzcqr8Pi7I7HJXNFEmPd4pAt+DAVIljG2vzNejVKQMbMY3XfwIOUIZzQ3++hqGC7DnVKnqgstfCzHk4aSs6CZXeb9P3HbK4MUkDpG33Zbq8gOdmjlO/EjWgN15+Ws/S4qS5LyZCUxAD8nV3eWlI= 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: Let's implement an alternative when per-page mapcounts in large folios are no longer maintained -- soon with CONFIG_NO_PAGE_MAPCOUNT. For calculating "mapmax", we now use the average per-page mapcount in a large folio instead of the per-page mapcount. For hugetlb folios and folios that are not partially mapped into MMs, there is no change. Likely, this change will not matter much in practice, and an alternative might be to simple remove this stat with CONFIG_NO_PAGE_MAPCOUNT. However, there might be value to it, so let's keep it like that and document the behavior. Signed-off-by: David Hildenbrand --- Documentation/filesystems/proc.rst | 5 +++++ fs/proc/task_mmu.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Documentation/filesystems/proc.rst b/Documentation/filesystems/proc.rst index 09f0aed5a08ba..1aa190017f796 100644 --- a/Documentation/filesystems/proc.rst +++ b/Documentation/filesystems/proc.rst @@ -686,6 +686,11 @@ Where: node locality page counters (N0 == node0, N1 == node1, ...) and the kernel page size, in KB, that is backing the mapping up. +Note that some kernel configurations do not track the precise number of times +a page part of a larger allocation (e.g., THP) is mapped. In these +configurations, "mapmax" might corresponds to the average number of mappings +per page in such a larger allocation instead. + 1.2 Kernel data --------------- diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 80839bbf9657f..d7ee842367f0f 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -2862,7 +2862,12 @@ static void gather_stats(struct page *page, struct numa_maps *md, int pte_dirty, unsigned long nr_pages) { struct folio *folio = page_folio(page); - int count = folio_precise_page_mapcount(folio, page); + int count; + + if (IS_ENABLED(CONFIG_PAGE_MAPCOUNT)) + count = folio_precise_page_mapcount(folio, page); + else + count = min_t(int, folio_average_page_mapcount(folio), 1); md->pages += nr_pages; if (pte_dirty || folio_test_dirty(folio))