linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Chengming Zhou <zhouchengming@bytedance.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Seth Jennings <sjenning@redhat.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Vitaly Wool <vitaly.wool@konsulko.com>,
	Nhat Pham <nphamcs@gmail.com>, Chris Li <chriscli@google.com>,
	Yosry Ahmed <yosryahmed@google.com>,
	Dan Streetman <ddstreet@ieee.org>
Cc: linux-kernel@vger.kernel.org,
	Chengming Zhou <zhouchengming@bytedance.com>,
	linux-mm@kvack.org, Nhat Pham <nphamcs@gmail.com>,
	Yosry Ahmed <yosryahmed@google.com>, Chris Li <chrisl@kernel.org>
Subject: [PATCH v4 1/6] mm/zswap: change dstmem size to one page
Date: Tue, 26 Dec 2023 15:54:08 +0000	[thread overview]
Message-ID: <20231213-zswap-dstmem-v4-1-f228b059dd89@bytedance.com> (raw)
In-Reply-To: <20231213-zswap-dstmem-v4-0-f228b059dd89@bytedance.com>

Change the dstmem size from 2 * PAGE_SIZE to only one page since
we only need at most one page when compress, and the "dlen" is also
PAGE_SIZE in acomp_request_set_params(). If the output size > PAGE_SIZE
we don't wanna store the output in zswap anyway.

So change it to one page, and delete the stale comment.

There is no any history about the reason why we needed 2 pages, it has
been 2 * PAGE_SIZE since the time zswap was first merged.

According to Yosry and Nhat, one potential reason is that we used to
store a zswap header containing the swap entry in the compressed page
for writeback purposes, but we don't do that anymore.

This patch works good in kernel build testing even when the input data
doesn't compress at all (i.e. dlen == PAGE_SIZE), which we can see
from the bpftrace tool:

bpftrace -e 'k:zpool_malloc {@[(uint32)arg1==4096]=count()}'
@[1]: 2
@[0]: 12011430

Reviewed-by: Yosry Ahmed <yosryahmed@google.com>
Reviewed-by: Nhat Pham <nphamcs@gmail.com>
Acked-by: Chris Li <chrisl@kernel.org> (Google)
Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
---
 mm/zswap.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/mm/zswap.c b/mm/zswap.c
index 7ee54a3d8281..976f278aa507 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -707,7 +707,7 @@ static int zswap_dstmem_prepare(unsigned int cpu)
 	struct mutex *mutex;
 	u8 *dst;
 
-	dst = kmalloc_node(PAGE_SIZE * 2, GFP_KERNEL, cpu_to_node(cpu));
+	dst = kmalloc_node(PAGE_SIZE, GFP_KERNEL, cpu_to_node(cpu));
 	if (!dst)
 		return -ENOMEM;
 
@@ -1662,8 +1662,7 @@ bool zswap_store(struct folio *folio)
 	sg_init_table(&input, 1);
 	sg_set_page(&input, page, PAGE_SIZE, 0);
 
-	/* zswap_dstmem is of size (PAGE_SIZE * 2). Reflect same in sg_list */
-	sg_init_one(&output, dst, PAGE_SIZE * 2);
+	sg_init_one(&output, dst, PAGE_SIZE);
 	acomp_request_set_params(acomp_ctx->req, &input, &output, PAGE_SIZE, dlen);
 	/*
 	 * it maybe looks a little bit silly that we send an asynchronous request,

-- 
b4 0.10.1


  reply	other threads:[~2023-12-26 15:54 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-26 15:54 [PATCH v4 0/6] mm/zswap: dstmem reuse optimizations and cleanups Chengming Zhou
2023-12-26 15:54 ` Chengming Zhou [this message]
2023-12-27  1:07   ` [PATCH v4 1/6] mm/zswap: change dstmem size to one page Barry Song
2023-12-27  6:11     ` Chengming Zhou
2023-12-27  6:32       ` Barry Song
2023-12-27 20:58       ` Andrew Morton
2023-12-27 23:21         ` Nhat Pham
2023-12-28  6:41           ` Chengming Zhou
2023-12-26 15:54 ` [PATCH v4 2/6] mm/zswap: reuse dstmem when decompress Chengming Zhou
2023-12-27  1:24   ` Barry Song
2023-12-27  6:32     ` Chengming Zhou
2023-12-28  8:03       ` Barry Song
2023-12-28  8:23         ` Chengming Zhou
2023-12-28  9:49         ` Herbert Xu
2024-01-03  2:57           ` [PATCH RFC 1/2] crypto: introduce acomp_is_async to expose if a acomp has a scomp backend Barry Song
2024-01-03  2:57             ` [PATCH RFC 2/2] mm/zswap: remove the memcpy if acomp is not asynchronous Barry Song
2024-01-03  2:57             ` [PATCH v4 2/6] mm/zswap: reuse dstmem when decompress Barry Song
2024-01-25  9:41               ` Herbert Xu
2024-01-27 14:41                 ` Barry Song
2023-12-26 15:54 ` [PATCH v4 3/6] mm/zswap: refactor out __zswap_load() Chengming Zhou
2023-12-26 15:54 ` [PATCH v4 4/6] mm/zswap: cleanup zswap_load() Chengming Zhou
2023-12-26 15:54 ` [PATCH v4 5/6] mm/zswap: cleanup zswap_writeback_entry() Chengming Zhou
2023-12-26 15:54 ` [PATCH v4 6/6] mm/zswap: change per-cpu mutex and buffer to per-acomp_ctx Chengming Zhou
2023-12-26 19:08   ` Nhat Pham

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-v4-1-f228b059dd89@bytedance.com \
    --to=zhouchengming@bytedance.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