From: Chengming Zhou <zhouchengming@bytedance.com>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Nhat Pham <nphamcs@gmail.com>, Chris Li <chriscli@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Seth Jennings <sjenning@redhat.com>,
Dan Streetman <ddstreet@ieee.org>,
Vitaly Wool <vitaly.wool@konsulko.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 1/5] mm/zswap: reuse dstmem when decompress
Date: Mon, 18 Dec 2023 16:06:36 +0800 [thread overview]
Message-ID: <d45d1879-bbc0-4d74-b34f-92f9753d1a30@bytedance.com> (raw)
In-Reply-To: <CAJD7tkYdisUg+wphANLFcBSLB13jH+NxqFdc-EjKBq0H-=S00Q@mail.gmail.com>
On 2023/12/15 02:24, Yosry Ahmed wrote:
> On Thu, Dec 14, 2023 at 6:42 AM Chengming Zhou
> <zhouchengming@bytedance.com> wrote:
> [..]
>>>>>> -
>>>>>> /* decompress */
>>>>>> - dlen = PAGE_SIZE;
>>>>>> - src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO);
>>>>>> + acomp_ctx = raw_cpu_ptr(entry->pool->acomp_ctx);
>>>>>> + mutex_lock(acomp_ctx->mutex);
>>>>>>
>>>>>> + zpool = zswap_find_zpool(entry);
>>>>>> + src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO);
>>>>>> if (!zpool_can_sleep_mapped(zpool)) {
>>>>>> - memcpy(tmp, src, entry->length);
>>>>>> - src = tmp;
>>>>>> + memcpy(acomp_ctx->dstmem, src, entry->length);
>>>>>> + src = acomp_ctx->dstmem;
>>>>>
>>>>> I don't like that we are now using acomp_ctx->dstmem and
>>>>> acomp_ctx->mutex now for purposes other than what the naming suggests.
>>>>
>>>> The "mutex" name is coherent, "dstmem" depends on how we use IMHO.
>>>> Change to just "mem"? Or do you have a better name to replace?
>>>>
>>>>>
>>>>> How about removing these two fields from acomp_ctx, and directly using
>>>>> zswap_dstmem and zswap_mutex in both the load and store paths, rename
>>>>> them, and add proper comments above their definitions that they are
>>>>> for generic percpu buffering on the load and store paths?
>>>>
>>>> Yes, they are percpu memory and lock, but they are used by per acomp_ctx,
>>>> and the cpu maybe changing in the middle, so maybe better to keep them.
>>>
>>> I don't mean to remove completely. Keep them as (for example)
>>> zswap_mem and zswap_mutex global percpu variables, and not have
>>> pointers in acomp_ctx to them. Instead of using acomp_ctx->dstmem
>>> today, we directly use the global zswap_mem (same for the mutex).
>>>
>>> This makes it clear that the buffers are not owned or exclusively used
>>> by the acomp_ctx. WDYT?
>>
>> Does this look good to you?
>>
>> ```
>> int cpu = raw_smp_processor_id();
>>
>> mutex = per_cpu(zswap_mutex, cpu);
>> mutex_lock(mutex);
>>
>> dstmem = per_cpu(zswap_dstmem, cpu);
>
> Renaming to zswap_buffer or zswap_mem would be better I think, but
> yeah what I had in mind is having zswap_mutex and
> zswap_[dstmem/mem/buffer] be generic percpu buffers that are used by
> store and load paths for different purposes, not directly linked to
> acomp_ctx.
>
Ok, I'll append a patch to do the refactor & cleanup: remove mutex
and dstmem from acomp_ctx, and rename to zswap_buffer, then directly
use them on the load/store paths.
>> acomp_ctx = per_cpu_ptr(pool->acomp_ctx, cpu);
>>
>> /* compress or decompress */
>> ```
>>
>> Another way I just think of is to make acomp_ctx own its lock and buffer,
>> and we could delete these percpu zswap_mutex and zswap_dstmem instead.
>
> You mean have two separate set of percpu buffers for zswap load &
> stores paths? This is probably unnecessary.
Alright. Thanks.
next prev parent reply other threads:[~2023-12-18 8:06 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-13 4:17 [PATCH 0/5] mm/zswap: dstmem reuse optimizations and cleanups Chengming Zhou
2023-12-13 4:17 ` [PATCH 1/5] mm/zswap: reuse dstmem when decompress Chengming Zhou
2023-12-13 23:24 ` Yosry Ahmed
2023-12-14 13:29 ` Chengming Zhou
2023-12-14 13:32 ` Yosry Ahmed
2023-12-14 14:42 ` Chengming Zhou
2023-12-14 18:24 ` Yosry Ahmed
2023-12-18 8:06 ` Chengming Zhou [this message]
2023-12-14 17:59 ` Chris Li
2023-12-14 18:26 ` Yosry Ahmed
2023-12-14 22:02 ` Chris Li
2023-12-14 20:33 ` Nhat Pham
2023-12-13 4:17 ` [PATCH 2/5] mm/zswap: change dstmem size to one page Chengming Zhou
2023-12-13 23:34 ` Yosry Ahmed
2023-12-14 0:18 ` Nhat Pham
2023-12-14 13:33 ` Chengming Zhou
2023-12-14 13:37 ` Yosry Ahmed
2023-12-14 13:57 ` Chengming Zhou
2023-12-14 15:03 ` Chengming Zhou
2023-12-14 18:34 ` Yosry Ahmed
2023-12-14 18:30 ` Yosry Ahmed
2023-12-14 20:29 ` Nhat Pham
2023-12-13 4:18 ` [PATCH 3/5] mm/zswap: refactor out __zswap_load() Chengming Zhou
2023-12-13 23:37 ` Yosry Ahmed
2023-12-14 0:52 ` Yosry Ahmed
2023-12-14 14:45 ` Chengming Zhou
2023-12-18 8:15 ` Chengming Zhou
2023-12-18 9:38 ` Yosry Ahmed
2023-12-13 4:18 ` [PATCH 4/5] mm/zswap: cleanup zswap_load() Chengming Zhou
2023-12-14 0:56 ` Yosry Ahmed
2023-12-13 4:18 ` [PATCH 5/5] mm/zswap: cleanup zswap_reclaim_entry() Chengming Zhou
2023-12-13 23:27 ` Nhat Pham
2023-12-14 1:02 ` Yosry Ahmed
2023-12-14 22:23 ` Andrew Morton
2023-12-14 22:41 ` Yosry Ahmed
2023-12-18 14:03 ` Johannes Weiner
2023-12-18 14:39 ` Yosry Ahmed
2023-12-18 14:58 ` Johannes Weiner
2023-12-18 20:52 ` Yosry Ahmed
2023-12-19 12:16 ` Chengming Zhou
2023-12-20 4:30 ` 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=d45d1879-bbc0-4d74-b34f-92f9753d1a30@bytedance.com \
--to=zhouchengming@bytedance.com \
--cc=akpm@linux-foundation.org \
--cc=chriscli@google.com \
--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