From: Minchan Kim <minchan@kernel.org>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Michal Hocko <mhocko@suse.com>, Roman Gushchin <guro@fb.com>,
Shakeel Butt <shakeelb@google.com>,
Seth Jennings <sjenning@redhat.com>,
Dan Streetman <ddstreet@ieee.org>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 4/5] mm: zswap: add basic meminfo and vmstat coverage
Date: Thu, 28 Apr 2022 10:31:45 -0700 [thread overview]
Message-ID: <YmrPgWs5WPabIBQk@google.com> (raw)
In-Reply-To: <YmrNiY3VhdMbfTq1@cmpxchg.org>
On Thu, Apr 28, 2022 at 01:23:21PM -0400, Johannes Weiner wrote:
> On Thu, Apr 28, 2022 at 09:59:53AM -0700, Minchan Kim wrote:
> > On Thu, Apr 28, 2022 at 10:25:59AM -0400, Johannes Weiner wrote:
> > > On Wed, Apr 27, 2022 at 03:16:48PM -0700, Minchan Kim wrote:
> > > > On Wed, Apr 27, 2022 at 05:20:29PM -0400, Johannes Weiner wrote:
> > > > > On Wed, Apr 27, 2022 at 01:29:34PM -0700, Minchan Kim wrote:
> > > > > > Hi Johannes,
> > > > > >
> > > > > > On Wed, Apr 27, 2022 at 12:00:15PM -0400, Johannes Weiner wrote:
> > > > > > > Currently it requires poking at debugfs to figure out the size and
> > > > > > > population of the zswap cache on a host. There are no counters for
> > > > > > > reads and writes against the cache. As a result, it's difficult to
> > > > > > > understand zswap behavior on production systems.
> > > > > > >
> > > > > > > Print zswap memory consumption and how many pages are zswapped out in
> > > > > > > /proc/meminfo. Count zswapouts and zswapins in /proc/vmstat.
> > > > > > >
> > > > > > > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
> > > > > > > ---
> > > > > > > fs/proc/meminfo.c | 7 +++++++
> > > > > > > include/linux/swap.h | 5 +++++
> > > > > > > include/linux/vm_event_item.h | 4 ++++
> > > > > > > mm/vmstat.c | 4 ++++
> > > > > > > mm/zswap.c | 13 ++++++-------
> > > > > > > 5 files changed, 26 insertions(+), 7 deletions(-)
> > > > > > >
> > > > > > > diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
> > > > > > > index 6fa761c9cc78..6e89f0e2fd20 100644
> > > > > > > --- a/fs/proc/meminfo.c
> > > > > > > +++ b/fs/proc/meminfo.c
> > > > > > > @@ -86,6 +86,13 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
> > > > > > >
> > > > > > > show_val_kb(m, "SwapTotal: ", i.totalswap);
> > > > > > > show_val_kb(m, "SwapFree: ", i.freeswap);
> > > > > > > +#ifdef CONFIG_ZSWAP
> > > > > > > + seq_printf(m, "Zswap: %8lu kB\n",
> > > > > > > + (unsigned long)(zswap_pool_total_size >> 10));
> > > > > > > + seq_printf(m, "Zswapped: %8lu kB\n",
> > > > > > > + (unsigned long)atomic_read(&zswap_stored_pages) <<
> > > > > > > + (PAGE_SHIFT - 10));
> > > > > > > +#endif
> > > > > >
> > > > > > I agree it would be very handy to have the memory consumption in meminfo
> > > > > >
> > > > > > https://lore.kernel.org/all/YYwZXrL3Fu8%2FvLZw@google.com/
> > > > > >
> > > > > > If we really go this Zswap only metric instead of general term
> > > > > > "Compressed", I'd like to post maybe "Zram:" with same reason
> > > > > > in this patchset. Do you think that's better idea instead of
> > > > > > introducing general term like "Compressed:" or something else?
> > > > >
> > > > > I'm fine with changing it to Compressed. If somebody cares about a
> > > > > more detailed breakdown, we can add Zswap, Zram subsets as needed.
> > > >
> > > > Thanks! Please consider ZSWPIN to rename more general term, too.
> > >
> > > That doesn't make sense to me.
> > >
> > > Zram is a swap backend, its traffic is accounted in PSWPIN/OUT. Zswap
> > > is a writeback cache on top of the swap backend. It has pages
> > > entering, refaulting, and being written back to the swap backend
> > > (PSWPOUT). A zswpout and a zramout are different things.
> >
> > Think about that system has two swap devices (storage + zram).
> > I think it's useful to know how many swap IO comes from zram
> > and rest of them are storage.
>
> Hm, isn't this comparable to having one swap on flash and one swap on
> a rotating disk? /sys/block/*/stat should be able to tell you how
> traffic is distributed, no?
That raises me a same question. Could you also look at the zswap stat
instead of adding it into vmstat? (If zswap doesn't have the counter,
couldn't we simply add new stat in sysfs?)
I thought the patch aims for exposting statistics to grab easier
using popular meminfo and vmstat and wanted to leverage it for
zram, too.
>
> What I'm more worried about is the fact that in theory you can stack
> zswap on top of zram. Consider a fast compression cache on top of a
> higher compression backend. Is somebody doing this now? I doubt
> it. But as people look into memory tiering more and more, this doesn't
> sound entirely implausible. If the stacked layers then share the same
> in/out events, it would be quite confusing.
>
> If you think PSWPIN/OUT and per-device stats aren't enough, I'm not
> opposed to adding zramin/out to /proc/vmstat as well. I think we're
> less worried there than with /proc/meminfo. I'd just prefer to keep
> them separate from the zswap events.
>
> Does that sound reasonable?
>
next prev parent reply other threads:[~2022-04-28 17:31 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-27 16:00 [PATCH 0/5] zswap: cgroup accounting & control Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
[not found] ` <20220427160016.144237-1-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-27 16:00 ` [PATCH 1/5] mm: Kconfig: move swap and slab config options to the MM section Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
2022-04-27 16:00 ` [PATCH 2/5] mm: Kconfig: group swap, slab, hotplug and thp options into submenus Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
2022-04-27 16:00 ` [PATCH 3/5] mm: Kconfig: simplify zswap configuration Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
2022-04-27 16:00 ` [PATCH 4/5] mm: zswap: add basic meminfo and vmstat coverage Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
[not found] ` <20220427160016.144237-5-hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-27 18:36 ` Andrew Morton
2022-04-27 18:36 ` Andrew Morton
2022-04-27 18:53 ` Johannes Weiner
[not found] ` <YmmRFOXJsjLj4a7T-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-27 19:50 ` Johannes Weiner
2022-04-27 19:50 ` Johannes Weiner
2022-04-27 19:51 ` Johannes Weiner
2022-04-27 20:29 ` Minchan Kim
2022-04-27 20:29 ` Minchan Kim
[not found] ` <Ymmnrkn0mSWcuvmH-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-27 21:20 ` Johannes Weiner
2022-04-27 21:20 ` Johannes Weiner
[not found] ` <YmmznQ8AO5RLxicA-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-27 21:36 ` Johannes Weiner
2022-04-27 21:36 ` Johannes Weiner
2022-04-27 22:12 ` Minchan Kim
2022-04-27 22:12 ` Minchan Kim
[not found] ` <Ymm/wayEB3MH6ZRY-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-28 14:05 ` Johannes Weiner
2022-04-28 14:05 ` Johannes Weiner
[not found] ` <YmqfGaIhE8W+Z1mo-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-28 17:02 ` Minchan Kim
2022-04-28 17:02 ` Minchan Kim
[not found] ` <YmrItoe1W9dya+An-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-28 17:27 ` Johannes Weiner
2022-04-28 17:27 ` Johannes Weiner
2022-04-27 23:36 ` Shakeel Butt
2022-04-27 23:36 ` Shakeel Butt
[not found] ` <CALvZod5LBi5V6q1uHUTSNnLz64HbD499a+OZvdYsUcmcWSt8Jg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-04-28 14:36 ` Johannes Weiner
2022-04-28 14:36 ` Johannes Weiner
[not found] ` <YmqmWPrIagEEceN1-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-28 14:49 ` Shakeel Butt
2022-04-28 14:49 ` Shakeel Butt
[not found] ` <CALvZod7wOyXpA3pycM2dav9_F9sW5ezC84or-75u8GdQyu30nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-04-28 15:16 ` Johannes Weiner
2022-04-28 15:16 ` Johannes Weiner
[not found] ` <Ymqv25+8IX2wqKzu-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-28 16:59 ` Yang Shi
2022-04-28 16:59 ` Yang Shi
2022-05-05 19:30 ` Shakeel Butt
2022-05-05 19:30 ` Shakeel Butt
2022-04-28 16:54 ` Yang Shi
[not found] ` <CAHbLzkqOUkaud4hQZeAbnO3T6VJpku4aKn1EYv9RunB+Kmu9Sg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-05 19:33 ` Shakeel Butt
2022-05-05 19:33 ` Shakeel Butt
[not found] ` <CALvZod5CReJZeGxkX9i6k7+R+3kF5dikXx9akbiP_L0j4Qu=6A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-05 22:24 ` Suleiman Souhlal
2022-05-05 22:24 ` Suleiman Souhlal
[not found] ` <CABCjUKAoTmqvyBbFH7A188s8Hwi1XbLgfb6znzgFOuRWBMBxig-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2022-05-05 23:54 ` Yu Zhao
2022-05-05 23:54 ` Yu Zhao
2022-04-27 22:16 ` Minchan Kim
2022-04-27 22:16 ` Minchan Kim
[not found] ` <YmnA0Da90IURbxrM-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-28 14:25 ` Johannes Weiner
2022-04-28 14:25 ` Johannes Weiner
2022-04-28 16:59 ` Minchan Kim
[not found] ` <YmrICbP6bDJqDv5R-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-28 17:23 ` Johannes Weiner
2022-04-28 17:23 ` Johannes Weiner
2022-04-28 17:31 ` Minchan Kim [this message]
[not found] ` <YmrPgWs5WPabIBQk-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2022-04-28 18:34 ` Johannes Weiner
2022-04-28 18:34 ` Johannes Weiner
[not found] ` <YmreNLge7b+FBC30-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2022-04-28 19:58 ` Minchan Kim
2022-04-28 19:58 ` Minchan Kim
2022-04-27 16:00 ` [PATCH 5/5] zswap: memcg accounting Johannes Weiner
2022-04-27 16:00 ` Johannes Weiner
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=YmrPgWs5WPabIBQk@google.com \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=ddstreet@ieee.org \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=shakeelb@google.com \
--cc=sjenning@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.