From: Chengming Zhou <zhouchengming@bytedance.com>
To: Barry Song <21cnbao@gmail.com>,
Yosry Ahmed <yosryahmed@google.com>,
Nhat Pham <nphamcs@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Dan Streetman <ddstreet@ieee.org>,
Vitaly Wool <vitaly.wool@konsulko.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Chris Li <chriscli@google.com>,
Seth Jennings <sjenning@redhat.com>
Cc: Yosry Ahmed <yosryahmed@google.com>,
Nhat Pham <nphamcs@gmail.com>, Chris Li <chrisl@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Chengming Zhou <zhouchengming@bytedance.com>
Subject: [PATCH v5 0/5] mm/zswap: dstmem reuse optimizations and cleanups
Date: Thu, 28 Dec 2023 09:45:41 +0000 [thread overview]
Message-ID: <20231213-zswap-dstmem-v5-0-9382162bbf05@bytedance.com> (raw)
Hi everyone,
Changes in v5:
- Drop the first patch and change to use 2 pages for acomp_ctx buffer.
Related report link: https://lore.kernel.org/lkml/0000000000000b05cd060d6b5511@google.com/
- Add comment why we need 2 pages for compression in the last patch.
- Link to v4: https://lore.kernel.org/r/20231213-zswap-dstmem-v4-0-f228b059dd89@bytedance.com
Changes in v4:
- Collect Reviewed-by and Acked-by tags.
- Fold in the comment fix in zswap_writeback_entry() from Yosry Ahmed.
- Add patch to change per-cpu mutex and dstmem to per-acomp_ctx.
- Just rename crypto_acomp_ctx->dstmem field to buffer.
- Link to v3: https://lore.kernel.org/r/20231213-zswap-dstmem-v3-0-4eac09b94ece@bytedance.com
Changes in v3:
- Collect Reviewed-by tag.
- Drop the __zswap_store() refactoring part.
- Link to v2: https://lore.kernel.org/r/20231213-zswap-dstmem-v2-0-daa5d9ae41a7@bytedance.com
Changes in v2:
- Add more changelog and test data about changing dstmem to one page.
- Reorder patches to put dstmem reusing and __zswap_load() refactoring
together, still refactor after dstmem reusing since we don't want
to handle __zswap_load() failure due to memory allocation failure
in zswap_writeback_entry().
- Append a patch to directly use percpu mutex and buffer in load/store
and refactor out __zswap_store() to simplify zswap_store().
- Link to v1: https://lore.kernel.org/r/20231213-zswap-dstmem-v1-0-896763369d04@bytedance.com
This series is split from [1] to only include zswap dstmem reuse
optimizations and cleanups, the other part of rbtree breakdown will
be deferred to retest after the rbtree converted to xarray.
And the problem this series tries to optimize is that zswap_load()
and zswap_writeback_entry() have to malloc a temporary memory to
support !zpool_can_sleep_mapped(). We can avoid it by reusing the
percpu crypto_acomp_ctx->dstmem, which is also used by zswap_store()
and protected by the same percpu crypto_acomp_ctx->mutex.
[1] https://lore.kernel.org/all/20231206-zswap-lock-optimize-v1-0-e25b059f9c3a@bytedance.com/
Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
---
Chengming Zhou (5):
mm/zswap: reuse dstmem when decompress
mm/zswap: refactor out __zswap_load()
mm/zswap: cleanup zswap_load()
mm/zswap: cleanup zswap_writeback_entry()
mm/zswap: change per-cpu mutex and buffer to per-acomp_ctx
include/linux/cpuhotplug.h | 1 -
mm/zswap.c | 251 ++++++++++++++-------------------------------
2 files changed, 76 insertions(+), 176 deletions(-)
---
base-commit: 1f242c1964cf9b8d663a2fd72159b296205a8126
change-id: 20231213-zswap-dstmem-d828f563303d
Best regards,
--
Chengming Zhou <zhouchengming@bytedance.com>
next reply other threads:[~2023-12-28 9:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-28 9:45 Chengming Zhou [this message]
2023-12-28 9:45 ` [PATCH v5 1/5] mm/zswap: reuse dstmem when decompress Chengming Zhou
2023-12-28 9:45 ` [PATCH v5 2/5] mm/zswap: refactor out __zswap_load() Chengming Zhou
2023-12-28 9:45 ` [PATCH v5 3/5] mm/zswap: cleanup zswap_load() Chengming Zhou
2023-12-28 9:45 ` [PATCH v5 4/5] mm/zswap: cleanup zswap_writeback_entry() Chengming Zhou
2023-12-28 9:45 ` [PATCH v5 5/5] mm/zswap: change per-cpu mutex and buffer to per-acomp_ctx Chengming Zhou
2023-12-28 15:19 ` Yosry Ahmed
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=20231213-zswap-dstmem-v5-0-9382162bbf05@bytedance.com \
--to=zhouchengming@bytedance.com \
--cc=21cnbao@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=chriscli@google.com \
--cc=chrisl@kernel.org \
--cc=ddstreet@ieee.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.com \
--cc=sjenning@redhat.com \
--cc=vitaly.wool@konsulko.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