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 A5260C4345F for ; Thu, 11 Apr 2024 21:53:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 251F96B0095; Thu, 11 Apr 2024 17:53:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 201D26B0096; Thu, 11 Apr 2024 17:53:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0C94C6B0098; Thu, 11 Apr 2024 17:53:06 -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 E2CA06B0095 for ; Thu, 11 Apr 2024 17:53:05 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 748C3A0D28 for ; Thu, 11 Apr 2024 21:53:05 +0000 (UTC) X-FDA: 81998601930.22.D7ED174 Received: from mail-vk1-f170.google.com (mail-vk1-f170.google.com [209.85.221.170]) by imf22.hostedemail.com (Postfix) with ESMTP id B7CAAC0016 for ; Thu, 11 Apr 2024 21:53:03 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cGabv0Fy; spf=pass (imf22.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.170 as permitted sender) smtp.mailfrom=21cnbao@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=1712872383; 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=SIELaLTboomXZUeMU12UHwD50A8VFQDDFF5xPAO2rn4=; b=4jVNu2OamJ0WJ9Vzd2N3nOtF69SALe4WzThQ94o1k1w5jPgPkUCKFxSfHYOmrfo3Ub/3GL I3DH/t9KQdLFqTInfzIfGi9xgZLaX6+f8BK12FxeE9CRRMVmN+PbX6OrlfgdhQpsDdNcn4 DtJ86dcfvkvlrW/aS0Nxl6Zi8tFWzDA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cGabv0Fy; spf=pass (imf22.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.170 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712872383; a=rsa-sha256; cv=none; b=uMCY91iXOgI31J7rkrLy8EbIQh3F4xQGsQ52Ko7RrUY5l9VG97vXx3IOpql7lyd1gAyHOY mJPYQCqrGpVOrpCHP5j73vOmf9kGjT9rmX6PPDOrqplmjmXmRwzqN+Yd5tjM1A3sMgx7OQ 5cXaAT+671S24vUWPvZS0l2hgA505A4= Received: by mail-vk1-f170.google.com with SMTP id 71dfb90a1353d-4daab3cf090so162099e0c.0 for ; Thu, 11 Apr 2024 14:53:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712872383; x=1713477183; 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=SIELaLTboomXZUeMU12UHwD50A8VFQDDFF5xPAO2rn4=; b=cGabv0Fy7Dn5Pt8WZw0sNz0LMmjolPaXjm+8KIMhwMHpJ04k2jUbZ4fIjsU6xH5H2+ NgMddl1QDpIfG7spUDCJ6fHFMqgR8fnuad5XWoWmQ9+6wJE+brl5B0L7DkZrxMksh4MG V0Xao5fa9hpqN74rorazKp9hBpRHSrevIIt/ymDjNsnzinrJSVliDN/hPQ6LfB+EWTu6 HwbMFDHY/iCu+095Z9hoSDeAPZnwz3O1zjO517c1R8NBUS2QGcEMA12gHeWTjw2fVJ7J L9DlhqecKn4i4dveOpv/JCPloXRvJ7kDs4Qn1Lm951NV7dxPLJEgLEk6XnRQWYY9XVP1 edaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712872383; x=1713477183; 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=SIELaLTboomXZUeMU12UHwD50A8VFQDDFF5xPAO2rn4=; b=seAk/IPqH5qkTs3kVp/fPizZmDXMoAFuyZ4yL8k0c+YihlgLE7fnSzYICTu4kVEoYY W2zgTQSZ9wEffJDH9NOx7+//G+KH6BdvVdLTgPUhkAEJMWPh0vOKd3baeHh3iYO7XrRH d6uVo4erIqezNOz7fc1gmREHddq7d10BrGqx3rUkKbIJovixhi2pmMZZN0hKn3STzJDy vobbL3iI73rgW4fWw3qW6t15NyZfC7pSK5FfIGVeyOGYJkbf/rR/cp+GrkiN72dqpG82 obBtKsVdtQnahg/Z91e8XcFyhZLFwswNmiwsNVvnDt0tEKkzQP9pOdSpgpRTue4miY+/ FhlQ== X-Forwarded-Encrypted: i=1; AJvYcCUOCsYOsOvKwv5JwmFH2/2kJ+M0I3/S6RoPTMpr3rtYduSYOK4nTcO3Ru2yvfyBP2RQqkJUaMWGMtTZzvCsNqXH7w8= X-Gm-Message-State: AOJu0YwQv6N47JPuy+1csbQrRZFdxwZeHH9F6Hgh2t8Y82pVSsIBFDye GIN+nmHA0MHoy5TfxNR6W9gmlc+iIKLmf/vdfmvT0YZw/wO34zJ5wcW04jPZIUjbylBqmpAOnoJ TKjfEDtbXBxB66nTg7wU3GM3w8OQ= X-Google-Smtp-Source: AGHT+IFVLzJacWc+nayN7I1PL/6pV8Y/Q9w+UKsuhKg/1XQffOkG8wJKosJDT1NbOKaN5f5B9TsQWFmeO8XYHVYr6DQ= X-Received: by 2002:a05:6122:1881:b0:4d5:f28b:2c2c with SMTP id bi1-20020a056122188100b004d5f28b2c2cmr2925179vkb.3.1712872382771; Thu, 11 Apr 2024 14:53:02 -0700 (PDT) MIME-Version: 1.0 References: <20240405102704.77559-1-21cnbao@gmail.com> <20240405102704.77559-3-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Fri, 12 Apr 2024 09:52:51 +1200 Message-ID: Subject: Re: [PATCH v4 2/2] mm: add per-order mTHP anon_swpout and anon_swpout_fallback counters To: Ryan Roberts Cc: david@redhat.com, akpm@linux-foundation.org, linux-mm@kvack.org, 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B7CAAC0016 X-Rspam-User: X-Stat-Signature: hkf7jckek1armodn9iu1u4fiqb9rwtc7 X-Rspamd-Server: rspam01 X-HE-Tag: 1712872383-109242 X-HE-Meta: U2FsdGVkX181sdTvmQBXGiEPtBNxdO+LYau8favVKCig7M/NbQn4HHHsREkIy0/Dv+USyy+S//CzHf/CXOnqWs7sTsTgL/eEj83qpfupgWRHMBR6aWelS0yRVI3j0y4Vu1UEqjpCKPrlrfte5a2wQ3ZUubofCDR+I3+g6eLvYitICLZG9LH0I8u5MCg9GDN/HEpTc4Q7oJYvUfV6EHjAMcwtRegKCodI37bGE7eyuTxaIVB6Y1n6eoEPbPAdtKtv1/0ui+O4iksghjra+Aw/YKSwvFhv59LhkbAPmmAJfJcZTRpf/c7h5NjfOZLtYYnHvZNyqBexMH0oi2K+f2EI4dvS1xfLiGyBJft+UVG7Atc3UhOFxUwRABoYzQVZuRvgYBf698r0XPowsS7dn/mPHh7pgex8OzfiQYHU3Pi/5yNzIL2WOss9fjECUTGOOBolLbZZ1Mwumv/osP0aK0UEJvUsjYsHeisArZFTanBp+by4EpbTgWf9iSRB0A6Di2WT8oKxpqB9UzBoFkjBpqe5jMC0s1gLwoPBqBWwGxG9qZna/YvE6REDW5x/i16emCT0DZ8c3gZIGNf8mpw1Gfd/KBylidWvwnQpu5WNQEe2bGgWOUsLUCYWE3Wuu4A+F3X5JuMx30UZMT7yaj8dDqNdWeWamUVfmuPMDVzfaRIuw0chtaBscJ3eXe1XpOQGYbtH+dZj5nQLQY10q8sMlAT3ozMTmnNLJvnBKvTC4KpcpR7ctC/BnGEzuj4XNc7c6N/aDto8NVbHuH7TPuaXyn/OdIiNURATmGAb2svSTIzXJIO1LLgX3PCEuP1QRUxwkpVO28aoIx5dp3oIVTUet5aweH+1uh21VVfEDg7kMPP0gTjmupyRUPAsWbTpn4VZ1ptgbmmMa3VRD/A7M71Arn08XT8KZ3ZvSMLOHHKWDrQK0PW3/wfBsM8AI4PobkmeIKV04DptSaJ44nKPTUHn9S9 FxziyL6a DqLM9TjNSZwrEJMhNsB5goyiKEpVZaD4hwmiFhuDJUT+91BAKjOwypxNtV0XVqfmxxiK78qy2VsmIcwqqjh9/9wkF+BkZklD804XNCIMZmEMlz2sIgS827QPhZ4n4rMNddP13lSgksg11uVDhGpKrdOnFwgxQuUM6g8P4GUIJSzDj6bt5wqo5bKMX2h2c2JNN6JBKWz5EGtgIqElY+yPngKHw4s1ZjH8kWMGV8LRWcltKwDgz6rcb5zDWL1FmxJJs2RqWIc3fuXK9PcJk/cWP/pnNzz4rMATEW++Sm/Kz1V9kkamg1xolULVetH66yjQHozf7QdoO3jxMWk1fWMxQnpV4j98snWYAwXNrvy1K0AjVlsLcC12MnL26OpzfA68PIW62bCB6PcUEJgqyZRNKKiNu0wUAWMeJ/IxbH764k/9Vcf6v1IA6EaZaJatjDzNai5Ijb/wT9LqijTAlfjyoLhXzufFA2SAz17SHjkZ22CHM78ci81909Vsx7KvgL20xdd3gIwlX/9riKRA= 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, Apr 12, 2024 at 4:43=E2=80=AFAM Ryan Roberts = wrote: > > 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_ar= ea_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 =3D __A= TTR_RO(_name) > > > > DEFINE_MTHP_STAT_ATTR(anon_alloc, MTHP_STAT_ANON_ALLOC); > > DEFINE_MTHP_STAT_ATTR(anon_alloc_fallback, MTHP_STAT_ANON_ALLOC_FALLBA= CK); > > +DEFINE_MTHP_STAT_ATTR(anon_swpout, MTHP_STAT_ANON_SWPOUT); > > +DEFINE_MTHP_STAT_ATTR(anon_swpout_fallback, MTHP_STAT_ANON_SWPOUT_FALL= BACK); > > > > static struct attribute *stats_attrs[] =3D { > > &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 writ= eback_control *wbc) > > > > static inline void count_swpout_vm_event(struct folio *folio) > > { > > + long nr_pages =3D 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 a= gainst > patch 1, its safe to call for order-0, so could just unconditionally call= this > (as you effectively are at the moment). yes. nr_pages > 1 is the correct condition. though it doesn't cause any crash for nr_pages > 0 as we have memory for order-0. but it is a useless job to coun= t for nr_pages=3D=3D1 as there is no place to show it in sysfs. > > > #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_FALLBA= CK); > > } > > + if (nr_pages > 0) > > + count_mthp_stat(get_order= (nr_pages * PAGE_SIZE), > > + MTHP_STAT_ANON_SW= POUT_FALLBACK); > > Same comment. agreed. Also, it doesn't cause any crash as we have memory in mthp_stats f= or order-0. i will totally remove if (nr_pages > 0) and as we are certainly in large f= olios cases. > > > #endif > > if (!add_to_swap(folio)) > > goto activate_locked_spli= t; > Thanks Barry