From: Qun-Wei Lin <qun-wei.lin@mediatek.com>
To: Jens Axboe <axboe@kernel.dk>, Minchan Kim <minchan@kernel.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Vishal Verma <vishal.l.verma@intel.com>,
Dan Williams <dan.j.williams@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Ira Weiny <ira.weiny@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Chris Li <chrisl@kernel.org>, Ryan Roberts <ryan.roberts@arm.com>,
"Huang, Ying" <ying.huang@intel.com>,
Kairui Song <kasong@tencent.com>,
Dan Schatzberg <schatzberg.dan@gmail.com>,
Barry Song <baohua@kernel.org>, Al Viro <viro@zeniv.linux.org.uk>
Cc: <linux-kernel@vger.kernel.org>, <linux-block@vger.kernel.org>,
<nvdimm@lists.linux.dev>, <linux-mm@kvack.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
Casper Li <casper.li@mediatek.com>,
Chinwen Chang <chinwen.chang@mediatek.com>,
Andrew Yang <andrew.yang@mediatek.com>,
James Hsu <james.hsu@mediatek.com>,
Qun-Wei Lin <qun-wei.lin@mediatek.com>
Subject: [PATCH 0/2] Improve Zram by separating compression context from kswapd
Date: Fri, 7 Mar 2025 20:01:02 +0800 [thread overview]
Message-ID: <20250307120141.1566673-1-qun-wei.lin@mediatek.com> (raw)
This patch series introduces a new mechanism called kcompressd to
improve the efficiency of memory reclaiming in the operating system. The
main goal is to separate the tasks of page scanning and page compression
into distinct processes or threads, thereby reducing the load on the
kswapd thread and enhancing overall system performance under high memory
pressure conditions.
Problem:
In the current system, the kswapd thread is responsible for both
scanning the LRU pages and compressing pages into the ZRAM. This
combined responsibility can lead to significant performance bottlenecks,
especially under high memory pressure. The kswapd thread becomes a
single point of contention, causing delays in memory reclaiming and
overall system performance degradation.
Target:
The target of this invention is to improve the efficiency of memory
reclaiming. By separating the tasks of page scanning and page
compression into distinct processes or threads, the system can handle
memory pressure more effectively.
Patch 1:
- Introduces 2 new feature flags, BLK_FEAT_READ_SYNCHRONOUS and
SWP_READ_SYNCHRONOUS_IO.
Patch 2:
- Implemented the core functionality of Kcompressd and made necessary
modifications to the zram driver to support it.
In our handheld devices, we found that applying this mechanism under high
memory pressure scenarios can increase the rate of pgsteal_anon per second
by over 260% compared to the situation with only kswapd.
Qun-Wei Lin (2):
mm: Split BLK_FEAT_SYNCHRONOUS and SWP_SYNCHRONOUS_IO into separate
read and write flags
kcompressd: Add Kcompressd for accelerated zram compression
drivers/block/brd.c | 3 +-
drivers/block/zram/Kconfig | 11 ++
drivers/block/zram/Makefile | 3 +-
drivers/block/zram/kcompressd.c | 340 ++++++++++++++++++++++++++++++++
drivers/block/zram/kcompressd.h | 25 +++
drivers/block/zram/zram_drv.c | 21 +-
drivers/nvdimm/btt.c | 3 +-
drivers/nvdimm/pmem.c | 5 +-
include/linux/blkdev.h | 24 ++-
include/linux/swap.h | 31 +--
mm/memory.c | 4 +-
mm/page_io.c | 6 +-
mm/swapfile.c | 7 +-
13 files changed, 446 insertions(+), 37 deletions(-)
create mode 100644 drivers/block/zram/kcompressd.c
create mode 100644 drivers/block/zram/kcompressd.h
--
2.45.2
next reply other threads:[~2025-03-07 12:02 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-07 12:01 Qun-Wei Lin [this message]
2025-03-07 12:01 ` [PATCH 1/2] mm: Split BLK_FEAT_SYNCHRONOUS and SWP_SYNCHRONOUS_IO into separate read and write flags Qun-Wei Lin
2025-03-07 12:01 ` [PATCH 2/2] kcompressd: Add Kcompressd for accelerated zram compression Qun-Wei Lin
2025-03-07 19:41 ` Barry Song
2025-03-07 23:13 ` Nhat Pham
2025-03-07 23:14 ` Nhat Pham
2025-03-10 13:26 ` Qun-wei Lin (林群崴)
[not found] ` <20250309010541.3152-1-hdanton@sina.com>
2025-03-09 19:56 ` Nhat Pham
2025-03-09 20:44 ` Barry Song
2025-03-09 22:20 ` Nhat Pham
2025-03-10 13:23 ` Qun-wei Lin (林群崴)
[not found] ` <20250310103427.3216-1-hdanton@sina.com>
2025-03-10 17:44 ` Barry Song
[not found] ` <20250310230902.3282-1-hdanton@sina.com>
2025-03-11 3:57 ` Barry Song
2025-03-11 6:36 ` Greg KH
2025-03-11 5:02 ` Sergey Senozhatsky
2025-03-10 13:26 ` Qun-wei Lin (林群崴)
2025-03-11 7:05 ` Barry Song
2025-03-11 7:25 ` Barry Song
2025-03-11 14:33 ` Qun-wei Lin (林群崴)
2025-03-07 19:34 ` [PATCH 0/2] Improve Zram by separating compression context from kswapd Barry Song
2025-03-10 13:21 ` Qun-wei Lin (林群崴)
2025-03-07 23:03 ` Nhat Pham
2025-03-08 5:41 ` Barry Song
2025-03-10 13:22 ` Qun-wei Lin (林群崴)
2025-03-10 16:58 ` Nhat Pham
2025-03-10 17:30 ` Nhat Pham
2025-03-11 4:58 ` Sergey Senozhatsky
2025-03-11 9:33 ` Barry Song
2025-03-11 14:12 ` Qun-wei Lin (林群崴)
2025-03-12 5:19 ` Sergey Senozhatsky
2025-03-12 18:11 ` Minchan Kim
2025-03-13 3:09 ` Sergey Senozhatsky
2025-03-13 3:45 ` Barry Song
2025-03-13 16:07 ` Minchan Kim
2025-03-13 16:58 ` Barry Song
2025-03-13 17:33 ` Minchan Kim
2025-03-13 20:37 ` Barry Song
2025-03-13 3:52 ` Barry Song
2025-03-13 9:30 ` Barry Song
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=20250307120141.1566673-1-qun-wei.lin@mediatek.com \
--to=qun-wei.lin@mediatek.com \
--cc=akpm@linux-foundation.org \
--cc=andrew.yang@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=axboe@kernel.dk \
--cc=baohua@kernel.org \
--cc=casper.li@mediatek.com \
--cc=chinwen.chang@mediatek.com \
--cc=chrisl@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=ira.weiny@intel.com \
--cc=james.hsu@mediatek.com \
--cc=kasong@tencent.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-mm@kvack.org \
--cc=matthias.bgg@gmail.com \
--cc=minchan@kernel.org \
--cc=nvdimm@lists.linux.dev \
--cc=ryan.roberts@arm.com \
--cc=schatzberg.dan@gmail.com \
--cc=senozhatsky@chromium.org \
--cc=viro@zeniv.linux.org.uk \
--cc=vishal.l.verma@intel.com \
--cc=ying.huang@intel.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