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 8810DC4345F for ; Thu, 11 Apr 2024 16:43:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1BAEA6B00B5; Thu, 11 Apr 2024 12:43:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 16B0D6B00B9; Thu, 11 Apr 2024 12:43:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 081106B00BB; Thu, 11 Apr 2024 12:43:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id DFA0D6B00B5 for ; Thu, 11 Apr 2024 12:43:57 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B1405160C64 for ; Thu, 11 Apr 2024 16:43:57 +0000 (UTC) X-FDA: 81997822914.21.A6163A5 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf29.hostedemail.com (Postfix) with ESMTP id D303E120009 for ; Thu, 11 Apr 2024 16:43:55 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712853836; 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; bh=LIRi+lGNCk4WJk51ehYUZXdOAGZv6wG8LGKC97H4ABw=; b=XO6V8smpM4/+ip8woHkWHRElHR1fbEtcoosXj+6QiyNeuJFN4ApDWQeucPyyCEchHJuKeu QVLsJxTb7ZQzZotREL0lsvwien2QOthmgzdzVaisPbxhYPJXHYMaJd/YFcgI1LtgpVesn9 L4Z27iySWL1wJ9orawPI63Iw448Svgs= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf29.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712853836; a=rsa-sha256; cv=none; b=DQfbZLT7jOIkBMQ2wk6VgI0gv4M8ewljyz2sNHuZIr/NzS3SbIPsPcvTBo91YTPz+SiIog Mn61RSmvUTy4TbIdzaV1rgyZzCJ1eP5a08MRn36lJOatKNGHodpKDtUFyKO1oN1MkcYCz2 lAqR8KVkdohfx8tsfRFH0Mpv2FsI4Fg= 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 51C8D113E; Thu, 11 Apr 2024 09:44:24 -0700 (PDT) Received: from [10.1.38.151] (XHFQ2J9959.cambridge.arm.com [10.1.38.151]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1D4A03F6C4; Thu, 11 Apr 2024 09:43:53 -0700 (PDT) Message-ID: Date: Thu, 11 Apr 2024 17:43:51 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 2/2] mm: add per-order mTHP anon_swpout and anon_swpout_fallback counters Content-Language: en-GB To: Barry Song <21cnbao@gmail.com>, david@redhat.com, akpm@linux-foundation.org, linux-mm@kvack.org Cc: cerasuolodomenico@gmail.com, chrisl@kernel.org, kasong@tencent.com, peterx@redhat.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, yosryahmed@google.com, yuzhao@google.com, linux-kernel@vger.kernel.org References: <20240405102704.77559-1-21cnbao@gmail.com> <20240405102704.77559-3-21cnbao@gmail.com> From: Ryan Roberts In-Reply-To: <20240405102704.77559-3-21cnbao@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: D303E120009 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: gnb1y36uzm5hhnwdfz7o6rn7mcbd48nh X-HE-Tag: 1712853835-682935 X-HE-Meta: U2FsdGVkX191RD2pYErKsTr4E9Rj5wCl7vgmZqaFWlT3m4nPWuFO5rq98J64wRwG7Vhdrf6rxPmuLWbUPVyDi8D2DkGAMDR/Ydfc6WLQOibx5IwUNTl2dBk42PtpgpGxFF+nrzHXMOrNpIG8mJzUXbWO3fWfL1/JoqSh9204EHhMcqxN7vEaU4SptgnqEQOTb1gtVhLhLEIGmz/y1Fk1HLWMaznj4iH7P+tVN5fGM7kwoV1oM7Xg201aUsL7+WYC9eLNYbHBnhnhCqTlN0boVR6FncekxVZD81NfPUEsdojKVlcDecSjyYpmhKMc0OzDSDx/4yvQlAwHCWcqXWLZTOUe69dJRv2+yz9kBlwjswkgBq3bpY123aIrcagVRH+L2WwsHbzsTyLgoW1D2itCGlfdRXOtKZ1Tai8E033vc2d0I53mwNtXhsERs/6v4ZQP2TzytuDn0Tk2bS1KrBXRRiJKQYQM+TcEZ9fVXcsB2Kf2IvNxXNShWT5gGx7hReGbONwFiEdhIZUeN6if1SwN4FPo3F5VV8zEKA8igyoAUiMnbioAHs+7G5Zq/bGLHZxl3/V8LaH127zSPwRXtTmWbOQpHN/yUR1NG5jAdTNtHjDDwcDWh36uglAyC7ajLdoUzoC2TCPuGigm/8PabymB/lGEga/x03punorxw1pThoHft9z9yfGZcQ1mG7yNGj5vHNUX5TvkW8qzbcIMnYJK7Gb/x12PCvpZfKLiIHxwAvznO0HyjSwoiXXtQHCuM4hWjqSmKKGg9FxOx3hr0xdU/j7RVLJ+gxmlg74mePRWyR/oS/BioQO9yOAPVmiFEAZtH4QD10QU9S1/vromv9zXvp/iljF93oQTQqJWvVCzWTeBjLP4HUtrIGEeoeQ/7vJVDWDqS9pF9sRMrbyNKXkVHFeCGwUxizuzsESqFQ8GQQWCoMe76qRguO38Ei4AuReO6QSZeDmU31F0bhHdAF5 dTtyL2EN Jr5cvO3cNucsGvdAdXfq8Jg+snkIQ++L5c22nxNfkoYaz2wR27TjMtEB3g07vPgiqkDIcx2C6Tu+PphGGAWwdUc27JS9HPpNuaWD0E/87PJHXabpThIRrLaTPnF38q3ptsr1ULQv7jcNlFMtXivYl2VXlupK+4iewFZmgw8a4GUqAW627HmxUfMyS7WKhtBzP/pyrCiUud8rOm2Vla2eAB//JesUsRYq2Ov851877Y0PGiomwcclFlbPObz+Cypothny+ 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 05/04/2024 11:27, Barry Song wrote: > From: Barry Song > > This helps to display the fragmentation situation of the swapfile, > knowing the proportion of how much we haven't split large folios. > So far, we only support non-split swapout for anon memory, with > the possibility of expanding to shmem in the future. So, we add > the "anon" prefix to the counter names. > > Signed-off-by: Barry Song > --- > include/linux/huge_mm.h | 2 ++ > mm/huge_memory.c | 4 ++++ > mm/page_io.c | 6 +++++- > mm/vmscan.c | 3 +++ > 4 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index c5d33017a4dd..1d893a358df6 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -267,6 +267,8 @@ unsigned long thp_vma_allowable_orders(struct vm_area_struct *vma, > enum mthp_stat_item { > MTHP_STAT_ANON_ALLOC, > MTHP_STAT_ANON_ALLOC_FALLBACK, > + MTHP_STAT_ANON_SWPOUT, > + MTHP_STAT_ANON_SWPOUT_FALLBACK, > __MTHP_STAT_COUNT > }; > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 5b875f0fc923..28113f8fdf18 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -554,10 +554,14 @@ static struct kobj_attribute _name##_attr = __ATTR_RO(_name) > > DEFINE_MTHP_STAT_ATTR(anon_alloc, MTHP_STAT_ANON_ALLOC); > DEFINE_MTHP_STAT_ATTR(anon_alloc_fallback, MTHP_STAT_ANON_ALLOC_FALLBACK); > +DEFINE_MTHP_STAT_ATTR(anon_swpout, MTHP_STAT_ANON_SWPOUT); > +DEFINE_MTHP_STAT_ATTR(anon_swpout_fallback, MTHP_STAT_ANON_SWPOUT_FALLBACK); > > static struct attribute *stats_attrs[] = { > &anon_alloc_attr.attr, > &anon_alloc_fallback_attr.attr, > + &anon_swpout_attr.attr, > + &anon_swpout_fallback_attr.attr, > NULL, > }; > > diff --git a/mm/page_io.c b/mm/page_io.c > index a9a7c236aecc..7669452e8b4d 100644 > --- a/mm/page_io.c > +++ b/mm/page_io.c > @@ -212,13 +212,17 @@ int swap_writepage(struct page *page, struct writeback_control *wbc) > > static inline void count_swpout_vm_event(struct folio *folio) > { > + long nr_pages = folio_nr_pages(folio); > + > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > if (unlikely(folio_test_pmd_mappable(folio))) { > count_memcg_folio_events(folio, THP_SWPOUT, 1); > count_vm_event(THP_SWPOUT); > } > + if (nr_pages > 0) > + count_mthp_stat(folio_order(folio), MTHP_STAT_ANON_SWPOUT); I think you mean "nr_pages > 1"? Although as established in my comments against patch 1, its safe to call for order-0, so could just unconditionally call this (as you effectively are at the moment). > #endif > - count_vm_events(PSWPOUT, folio_nr_pages(folio)); > + count_vm_events(PSWPOUT, nr_pages); > } > > #if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP) > diff --git a/mm/vmscan.c b/mm/vmscan.c > index ffc4553c8615..b30e6294f82a 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -1247,6 +1247,9 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, > count_vm_event( > THP_SWPOUT_FALLBACK); > } > + if (nr_pages > 0) > + count_mthp_stat(get_order(nr_pages * PAGE_SIZE), > + MTHP_STAT_ANON_SWPOUT_FALLBACK); Same comment. > #endif > if (!add_to_swap(folio)) > goto activate_locked_split;