From: Yosry Ahmed <yosryahmed@google.com>
To: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Cc: linux-mm@kvack.org, Johannes Weiner <hannes@cmpxchg.org>,
Nhat Pham <nphamcs@gmail.com>,
Chengming Zhou <chengming.zhou@linux.dev>
Subject: Re: [BUG] ZSwap leaks memory upon being disabled
Date: Fri, 25 Oct 2024 00:50:47 -0700 [thread overview]
Message-ID: <CAJD7tkbXSLZA8YpnXxoGdt+B8aycoJZoxeHsKT9vApQMU-2qcQ@mail.gmail.com> (raw)
In-Reply-To: <28352fb75268060f2e78a32325f02e46737a16ea.camel@yandex.ru>
On Thu, Oct 24, 2024 at 11:41 PM Konstantin Kharlamov
<Hi-Angel@yandex.ru> wrote:
>
> On Thu, 2024-10-24 at 13:47 -0700, Yosry Ahmed wrote:
> > On Thu, Oct 24, 2024 at 6:02 AM Konstantin Kharlamov
> > <Hi-Angel@yandex.ru> wrote:
> > >
> > > When ZSWAP is disabled, the `Zswap` and `Zswapped` in meminfo are
> > > still non-zero.
> > > IOW, ZSWAP doesn't free memory upon being disabled.
> > >
> > > Stumbled upon this while trying to figure out where did ≈4G of my
> > > SWAP memory
> > > disappear. Been seeing some unknown memory in SWAP for years, now I
> > > suspect ZSWAP
> > > might be the culprit. But no way to know for sure because of this
> > > bug.
> > >
> > > # Steps to reproduce
> > >
> > > 1. Enable ZSWAP
> > > 2. Wait for `grep Zswap /proc/meminfo` to become non-zero
> > > 3. Disable ZSWAP via `sudo sh -c "echo 0 >
> > > /sys/module/zswap/parameters/enabled"`
> > > 4. Look at `grep Zswap /proc/meminfo`
> > >
> > > ## Expected
> > >
> > > The rows are zero because ZSWAP is disabled.
> >
> > Not really, the expected behavior is that further swapouts will not
> > go
> > to zswap, but pages that are already compressed in zswap will not be
> > written out to the backing swapfile or swapped back to memory. A
> > swapoff would be required for the latter.
> >
> > This is documented in:
> > https://docs.kernel.org/admin-guide/mm/zswap.html#overview.
>
> Oh, I see, thank you, sorry for the noise.
>
> Then, I'm curious, is it correct to assume that this `Zswap`-prefixed
> memory mentioned in meminfo is never the one that is in SWAP? I mean,
> Zswap being a buffer before data goes to swap kind of implies that yes,
> the data *either* in zswap or in swap. But just wanted to hear that
> explicitly.
I know this makes sense, but unfortunately no. Zswap is currently
transparent to the rest of the system. For all intents and purposes,
pages in zswap are considered in swap. You cannot even use zswap with
an actual swapfile. So the zswap stats should be a subset of the swap
stats.
FWIW, Nhat is working on restructuring this to have zswap be its own
entity, separate from any swapfiles.
>
> The background to my question is that I'm trying to find the culprit
> some "phantom memory" eventually filling up my SWAP. This memory is not
> one accounted to apps (as calculated via `smem`), nor to tmpfs. So my
> next suspect was something related to ZSwap.
> >
As I mentioned, zswap should be transparent to the rest of the system,
so it shouldn't make a difference in this case whether the pages are
in zswap or in the swapfile.
You can use the memory.swap.current counter to find out which memory
cgroup currently has swapped out pages (in zswap or in the swapfile).
This should help find the application that has memory in swap. If you
want to find the exact type of memory (e.g. anon vs tmpfs), that would
be more tricky. Perhaps you can swapoff and see what counters increase
in memory.stat of the relevant memory cgroup?
next prev parent reply other threads:[~2024-10-25 7:51 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-24 13:02 Konstantin Kharlamov
2024-10-24 20:47 ` Yosry Ahmed
2024-10-25 6:41 ` Konstantin Kharlamov
2024-10-25 7:50 ` Yosry Ahmed [this message]
2024-10-26 11:33 ` Konstantin Kharlamov
2024-10-26 17:47 ` Yosry Ahmed
2024-10-27 0:29 ` Konstantin Kharlamov
2024-10-27 3:14 ` Nhat Pham
2024-10-27 6:46 ` Yosry Ahmed
2024-10-27 10:11 ` Konstantin Kharlamov
2024-10-27 10:32 ` Konstantin Kharlamov
2024-10-27 11:28 ` Konstantin Kharlamov
2024-10-27 19:31 ` Yosry Ahmed
2024-10-27 22:13 ` phantom memory in a cgroup (was [BUG] ZSwap leaks memory upon being disabled) Konstantin Kharlamov
2024-10-30 14:41 ` Konstantin Kharlamov
2024-10-30 19:44 ` Yosry Ahmed
2024-10-31 21:59 ` Konstantin Kharlamov
2024-10-31 22:04 ` Yosry Ahmed
2024-10-27 10:25 ` [BUG] ZSwap leaks memory upon being disabled Konstantin Kharlamov
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=CAJD7tkbXSLZA8YpnXxoGdt+B8aycoJZoxeHsKT9vApQMU-2qcQ@mail.gmail.com \
--to=yosryahmed@google.com \
--cc=Hi-Angel@yandex.ru \
--cc=chengming.zhou@linux.dev \
--cc=hannes@cmpxchg.org \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.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