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 73C4DD6B6B4 for ; Thu, 31 Oct 2024 00:39:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CE7A66B009D; Wed, 30 Oct 2024 20:39:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C96FA6B00A0; Wed, 30 Oct 2024 20:39:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B5FF46B00A1; Wed, 30 Oct 2024 20:39:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 97C736B009D for ; Wed, 30 Oct 2024 20:39:57 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 44E381A11A5 for ; Thu, 31 Oct 2024 00:39:57 +0000 (UTC) X-FDA: 82732038858.08.A40C046 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by imf17.hostedemail.com (Postfix) with ESMTP id 37A6240012 for ; Thu, 31 Oct 2024 00:39:33 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=JwmDTatd; spf=pass (imf17.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.11 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730335151; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Wc7IU4CzigLU3FGx+vAnk+qS5vOdjAldddcPjiHu7jg=; b=1CxelyGuSp7zom2SaMt9e7zxJPxhtSH6QbP+DxLW4/LLHxjHjdmkbpkJQpybcJjabmwd0J 07jxVHIAfGvHo2i1aAg6CVC9/dhIjat+KScv/LQWomIgt9p8aB9SXSWk1WybGyVlQfiiZ6 AGDPvrEWcDXG/kM3iakm4ECckaiAAro= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730335151; a=rsa-sha256; cv=none; b=abqEsH8nEFIT8AZkPZiBFXLg7FkJY00LjKwXkwRSgaLoFwdK04FnljKeDv5DafA535kIBN pVsQPZwqWcMTxtnIYMV/14O95di256QF+bjulzY4M9Hb8IEjcz7mQgdMNC9gnZdT0mZnpK K31oAxzFoXn1jnVjv0blj6FXN23nNYI= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=JwmDTatd; spf=pass (imf17.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.11 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1730335195; x=1761871195; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=BVVc/SXQ4JbqD4u61eN858mgOHeLPYYZ0jA5cibVNuE=; b=JwmDTatdpF5/GE6KfmxRV5BaAKKeLRpXBO73sqCsuDOJOdx0/alamBZr y+CIBoHDzSVYC5ZBiPgUnsgOGi1rxVBk7wb7I6m6V7RxhGkPzqIjBJx39 ewIHalviMffn6uXsAYu6HQsvgGCyaKrZX58pVbudYKfgKDlCZcLqYhS0j 7QWqYDv0m3WuW1LnUpCHwKsXj1ggMNSbA46cGdAwhidRV43BEDtTwRjEL wzCzu4OJdws+o7FVw82RopPzfJhm4j+g11ATYcyoR0uMe+CFo+AtngreF wlCscW5O2ZCbg3N8VM2nJc3skpbF8lQyru09sNvAY3h3dfvpIu9eoUuBH g==; X-CSE-ConnectionGUID: U8+guM2IT962YLsiDu9EZQ== X-CSE-MsgGUID: i+9uwykIQM2sMMTtOOz/bQ== X-IronPort-AV: E=McAfee;i="6700,10204,11241"; a="40637606" X-IronPort-AV: E=Sophos;i="6.11,246,1725346800"; d="scan'208";a="40637606" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2024 17:39:53 -0700 X-CSE-ConnectionGUID: 8ldWuHaXQx6I/nZdzXZAXw== X-CSE-MsgGUID: IWYVHXq2SrW276DWBeKiag== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,246,1725346800"; d="scan'208";a="105800185" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Oct 2024 17:39:49 -0700 From: "Huang, Ying" To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , Baolin Wang , David Hildenbrand , Chris Li , Yosry Ahmed , Kairui Song , Ryan Roberts , Kanchana P Sridhar , Usama Arif Subject: Re: [PATCH v2] mm: add per-order mTHP swpin counters In-Reply-To: <20241030233423.80759-1-21cnbao@gmail.com> (Barry Song's message of "Thu, 31 Oct 2024 12:34:23 +1300") References: <20241030233423.80759-1-21cnbao@gmail.com> Date: Thu, 31 Oct 2024 08:36:16 +0800 Message-ID: <87cyjh9khr.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Stat-Signature: o1hy9foy4ychmktf544fa9isioj3mfxj X-Rspam-User: X-Rspamd-Queue-Id: 37A6240012 X-Rspamd-Server: rspam02 X-HE-Tag: 1730335173-744474 X-HE-Meta: U2FsdGVkX1/C3Efm/JshJepOjZTImgP1oiLUHcBhhVlARv25i35cHV/hIpNeq7AuNXJa3Ewy/JxkQvoToVsvcEvPrbvQWVwDpZ1i/s1Oux05O4QJ4pUQS3mG87MMnk9CwP3pZhDGjH4fDWKcPIB8gplLZ8mRR/QEj4aI7bW33Zuu/EvnzeS0yBg7N6ph7I+1Kb4CPKyuDOHbO8oXE8cR7Omrpex9A0Ftu+dVARVJVjFn7CNg3wv/ycV4IduvqX0SyHva69UtudmrOaxmiwx2T6CegqlxHT31bjxZ+Qz0m7xAX628r1VrtoLhWq3r4hm51QLxUonGLVRt5sWNlfKaf66NNg85vxC++VC6cZoOT9TF3VmIA2oABcFk8le1iwILvrjgOGs9rZwMHv/mXxQ46dWGUllA998vBUGc1DLqWczBW4bg9HYssipM+61BX/DCmAZxJZnLyHdSt/nFw/l8FcyvEI9DNSC03fhadVFfqNNzqypjCnKJ9h2V4Cnu/QbsFrztevBMNtVprhXNqe2yQpbl76fV6ggo0I5gYD/fZ4nVWwkybYDdW7hq15/nt2Ve2OhTVSPhqr1x2jrZDDG0rTgUwBXB2bOI3dZMPDd6wj7t6V6liralxjU3SdkiuNPQmmEEdGrIIFdokp/ZFoid3V4jjnzQjlBtL/KaPQhlUZM6yJwst9g2hsdUxtuS1WHN7ghUK1CUJsA/2+rdAJqjgcae+aA2hSIRSySD/zM435ZWedR9asXz4LVd95W6854GLYqNdxWGIyEWwPXoB8sEirnUa5mllfx0TZLiF/13+XgxzdUA5JcXiiu0ekd7uZBJ5unCx+RDyLUngi9tKKHT3yJiYEJgapIbLbOmfnfv3xwmN5Ro00SJ6hadqA2h84yzvL1uEq7+o/IsEh5PETEC/Dus/3ghq/3CtOiwPXIyppUxi2NtCbWnahGV1+zgMFnetxdRDtRLAmCC/Ff6MdZ jB6kimQP EFMZfFb8UJ0/ZRQ/gcvpcKD3Ph8Dk495Oafnfbmcl6IbCvWiwtwXWS4uLZdpNuk+Tjjrh4a7ugqLLP1I129wXTEy0g2u1r0M75+AJAbu8hAc9zkufdm2z7VdBRVadwuAv6KejjpZb6HTLVVVoZsiF7VDmNDfoKL7AjA2VHc7MwGZCOGqCNXqwFwPgyniLY1XSwx0qgaNUjhWG1sasgdsxXKEugRPT2odL6nW48zl4RBEmiwcyGZTmsovCBjk66FIS2xhW5yqrBVlgLePilzMUPyFDKudirbXJf7o4Wzzsx1eJSePfAOGEhhXUvIz5humL3kgMUS4uA9oOXhJlZmZ8Bigd46zdZWMAt+DLJK7mhFSjpsS+XQ0lTOkOPMNL7kG4q3ZE5fASB5HoDvMTrooc9BmmLCuCIPbILBZX 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: Barry Song <21cnbao@gmail.com> writes: > From: Barry Song > > This helps profile the sizes of folios being swapped in. Currently, > only mTHP swap-out is being counted. > The new interface can be found at: > /sys/kernel/mm/transparent_hugepage/hugepages-/stats > swpin This looks strange, why isn't it /sys/kernel/mm/transparent_hugepage/hugepages-/stats/swpin ? > For example, > cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpin > 12809 > cat /sys/kernel/mm/transparent_hugepage/hugepages-32kB/stats/swpin > 4763 You miss "$"? $ cat /sys/kernel/mm/transparent_hugepage/hugepages-64kB/stats/swpin 12809 $ cat /sys/kernel/mm/transparent_hugepage/hugepages-32kB/stats/swpin 4763 > Signed-off-by: Barry Song > Reviewed-by: Baolin Wang > Acked-by: David Hildenbrand > Cc: Chris Li > Cc: Yosry Ahmed > Cc: "Huang, Ying" > Cc: Kairui Song > Cc: Ryan Roberts > Cc: Kanchana P Sridhar > Cc: Usama Arif > --- > -v2: > * collect Baolin's reviewed-by and David's acked-by, thanks! > * add some examples for the interface in the changelog, Per > Huang, Ying. thanks! > * add a blank line in doc which was missed in v1. > > Documentation/admin-guide/mm/transhuge.rst | 4 ++++ > include/linux/huge_mm.h | 1 + > mm/huge_memory.c | 3 +++ > mm/page_io.c | 3 +++ > 4 files changed, 11 insertions(+) > > diff --git a/Documentation/admin-guide/mm/transhuge.rst b/Documentation/admin-guide/mm/transhuge.rst > index 2a171ed5206e..5caa3fb2feb1 100644 > --- a/Documentation/admin-guide/mm/transhuge.rst > +++ b/Documentation/admin-guide/mm/transhuge.rst > @@ -534,6 +534,10 @@ zswpout > is incremented every time a huge page is swapped out to zswap in one > piece without splitting. > > +swpin > + is incremented every time a huge page is swapped in from a non-zswap > + swap device in one piece. > + > swpout > is incremented every time a huge page is swapped out to a non-zswap > swap device in one piece without splitting. > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index c59e5aa9b081..b94c2e8ee918 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -120,6 +120,7 @@ enum mthp_stat_item { > MTHP_STAT_ANON_FAULT_FALLBACK, > MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE, > MTHP_STAT_ZSWPOUT, > + MTHP_STAT_SWPIN, > MTHP_STAT_SWPOUT, > MTHP_STAT_SWPOUT_FALLBACK, > MTHP_STAT_SHMEM_ALLOC, > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index b26c6503e993..f92068864469 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -616,6 +616,7 @@ DEFINE_MTHP_STAT_ATTR(anon_fault_alloc, MTHP_STAT_ANON_FAULT_ALLOC); > 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(zswpout, MTHP_STAT_ZSWPOUT); > +DEFINE_MTHP_STAT_ATTR(swpin, MTHP_STAT_SWPIN); > DEFINE_MTHP_STAT_ATTR(swpout, MTHP_STAT_SWPOUT); > DEFINE_MTHP_STAT_ATTR(swpout_fallback, MTHP_STAT_SWPOUT_FALLBACK); > #ifdef CONFIG_SHMEM > @@ -635,6 +636,7 @@ static struct attribute *anon_stats_attrs[] = { > &anon_fault_fallback_charge_attr.attr, > #ifndef CONFIG_SHMEM > &zswpout_attr.attr, > + &swpin_attr.attr, > &swpout_attr.attr, > &swpout_fallback_attr.attr, > #endif > @@ -666,6 +668,7 @@ static struct attribute_group file_stats_attr_grp = { > static struct attribute *any_stats_attrs[] = { > #ifdef CONFIG_SHMEM > &zswpout_attr.attr, > + &swpin_attr.attr, > &swpout_attr.attr, > &swpout_fallback_attr.attr, > #endif > diff --git a/mm/page_io.c b/mm/page_io.c > index c69fab5060a1..5d9b6e6cf96c 100644 > --- a/mm/page_io.c > +++ b/mm/page_io.c > @@ -487,6 +487,7 @@ static void sio_read_complete(struct kiocb *iocb, long ret) > for (p = 0; p < sio->pages; p++) { > struct folio *folio = page_folio(sio->bvec[p].bv_page); > > + count_mthp_stat(folio_order(folio), MTHP_STAT_SWPIN); > count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); > folio_mark_uptodate(folio); > folio_unlock(folio); > @@ -573,6 +574,7 @@ static void swap_read_folio_bdev_sync(struct folio *folio, > * attempt to access it in the page fault retry time check. > */ > get_task_struct(current); > + count_mthp_stat(folio_order(folio), MTHP_STAT_SWPIN); > count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); > count_vm_events(PSWPIN, folio_nr_pages(folio)); > submit_bio_wait(&bio); > @@ -589,6 +591,7 @@ static void swap_read_folio_bdev_async(struct folio *folio, > bio->bi_iter.bi_sector = swap_folio_sector(folio); > bio->bi_end_io = end_swap_bio_read; > bio_add_folio_nofail(bio, folio, folio_size(folio), 0); > + count_mthp_stat(folio_order(folio), MTHP_STAT_SWPIN); > count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); > count_vm_events(PSWPIN, folio_nr_pages(folio)); > submit_bio(bio); -- Best Regards, Huang, Ying