From: Barry Song <21cnbao@gmail.com>
To: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
hannes@cmpxchg.org, yosryahmed@google.com, nphamcs@gmail.com,
ryan.roberts@arm.com, ying.huang@intel.com,
akpm@linux-foundation.org, nanhai.zou@intel.com,
wajdi.k.feghali@intel.com, vinodh.gopal@intel.com
Subject: Re: [RFC PATCH v1 2/4] mm: vmstat: Per mTHP-size zswap_store vmstat event counters.
Date: Wed, 14 Aug 2024 19:48:37 +1200 [thread overview]
Message-ID: <CAGsJ_4yWjjY_GqcaJsma9vPsuV29-WFK5Ho9DFZBx=HnL9=nPQ@mail.gmail.com> (raw)
In-Reply-To: <20240814062830.26833-3-kanchana.p.sridhar@intel.com>
On Wed, Aug 14, 2024 at 6:28 PM Kanchana P Sridhar
<kanchana.p.sridhar@intel.com> wrote:
>
> Added vmstat event counters per mTHP-size that can be used to account
> for folios of different sizes being successfully stored in ZSWAP.
>
> For this RFC, it is not clear if these zswpout counters should instead
> be added as part of the existing mTHP stats in
> /sys/kernel/mm/transparent_hugepage/hugepages-*kB/stats.
>
> The following is also a viable option, should it make better sense,
> for instance, as:
>
> /sys/kernel/mm/transparent_hugepage/hugepages-*kB/stats/zswpout.
>
> If so, we would be able to distinguish between mTHP zswap and
> non-zswap swapouts through:
>
> /sys/kernel/mm/transparent_hugepage/hugepages-*kB/stats/zswpout
>
> and
>
> /sys/kernel/mm/transparent_hugepage/hugepages-*kB/stats/swpout
>
> respectively.
>
> Comments would be appreciated as to which approach is preferable.
Even though swapout might go through zswap, from the perspective of
the mm core, it shouldn't be aware of that. Shouldn't zswpout be part
of swpout? Why are they separate? no matter if a mTHP has been
put in zswap, it has been swapped-out to mm-core? No?
>
> Signed-off-by: Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
> ---
> include/linux/vm_event_item.h | 15 +++++++++++++++
> mm/vmstat.c | 15 +++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
> index 747943bc8cc2..2451bcfcf05c 100644
> --- a/include/linux/vm_event_item.h
> +++ b/include/linux/vm_event_item.h
> @@ -114,6 +114,9 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
> THP_ZERO_PAGE_ALLOC,
> THP_ZERO_PAGE_ALLOC_FAILED,
> THP_SWPOUT,
> +#ifdef CONFIG_ZSWAP
> + ZSWPOUT_PMD_THP_FOLIO,
> +#endif
> THP_SWPOUT_FALLBACK,
> #endif
> #ifdef CONFIG_MEMORY_BALLOON
> @@ -143,6 +146,18 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
> ZSWPIN,
> ZSWPOUT,
> ZSWPWB,
> + ZSWPOUT_4KB_FOLIO,
> +#ifdef CONFIG_THP_SWAP
> + mTHP_ZSWPOUT_8kB,
> + mTHP_ZSWPOUT_16kB,
> + mTHP_ZSWPOUT_32kB,
> + mTHP_ZSWPOUT_64kB,
> + mTHP_ZSWPOUT_128kB,
> + mTHP_ZSWPOUT_256kB,
> + mTHP_ZSWPOUT_512kB,
> + mTHP_ZSWPOUT_1024kB,
> + mTHP_ZSWPOUT_2048kB,
> +#endif
This implementation hardcodes assumptions about the page size being 4KB,
but page sizes can vary, and so can the THP orders?
> #endif
> #ifdef CONFIG_X86
> DIRECT_MAP_LEVEL2_SPLIT,
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 8507c497218b..0e66c8b0c486 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1375,6 +1375,9 @@ const char * const vmstat_text[] = {
> "thp_zero_page_alloc",
> "thp_zero_page_alloc_failed",
> "thp_swpout",
> +#ifdef CONFIG_ZSWAP
> + "zswpout_pmd_thp_folio",
> +#endif
> "thp_swpout_fallback",
> #endif
> #ifdef CONFIG_MEMORY_BALLOON
> @@ -1405,6 +1408,18 @@ const char * const vmstat_text[] = {
> "zswpin",
> "zswpout",
> "zswpwb",
> + "zswpout_4kb_folio",
> +#ifdef CONFIG_THP_SWAP
> + "mthp_zswpout_8kb",
> + "mthp_zswpout_16kb",
> + "mthp_zswpout_32kb",
> + "mthp_zswpout_64kb",
> + "mthp_zswpout_128kb",
> + "mthp_zswpout_256kb",
> + "mthp_zswpout_512kb",
> + "mthp_zswpout_1024kb",
> + "mthp_zswpout_2048kb",
> +#endif
The issue here is that the number of THP orders
can vary across different platforms.
> #endif
> #ifdef CONFIG_X86
> "direct_map_level2_splits",
> --
> 2.27.0
>
Thanks
Barry
next prev parent reply other threads:[~2024-08-14 7:48 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-14 6:28 [RFC PATCH v1 0/4] mm: ZSWAP swap-out of mTHP folios Kanchana P Sridhar
2024-08-14 6:28 ` [RFC PATCH v1 1/4] mm: zswap: zswap_is_folio_same_filled() takes an index in the folio Kanchana P Sridhar
2024-08-14 6:28 ` [RFC PATCH v1 2/4] mm: vmstat: Per mTHP-size zswap_store vmstat event counters Kanchana P Sridhar
2024-08-14 7:48 ` Barry Song [this message]
2024-08-14 17:40 ` Sridhar, Kanchana P
2024-08-14 23:24 ` Barry Song
2024-08-15 1:37 ` Sridhar, Kanchana P
2024-08-14 6:28 ` [RFC PATCH v1 3/4] mm: zswap: zswap_store() extended to handle mTHP folios Kanchana P Sridhar
2024-08-14 6:28 ` [RFC PATCH v1 4/4] mm: page_io: Count successful mTHP zswap stores in vmstat Kanchana P Sridhar
2024-08-14 7:53 ` Barry Song
2024-08-14 17:47 ` Sridhar, Kanchana P
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAGsJ_4yWjjY_GqcaJsma9vPsuV29-WFK5Ho9DFZBx=HnL9=nPQ@mail.gmail.com' \
--to=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=kanchana.p.sridhar@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nanhai.zou@intel.com \
--cc=nphamcs@gmail.com \
--cc=ryan.roberts@arm.com \
--cc=vinodh.gopal@intel.com \
--cc=wajdi.k.feghali@intel.com \
--cc=ying.huang@intel.com \
--cc=yosryahmed@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox