From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC527C28B2E for ; Tue, 11 Mar 2025 07:25:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 86C0D280002; Tue, 11 Mar 2025 03:25:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7F160280001; Tue, 11 Mar 2025 03:25:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 693D0280002; Tue, 11 Mar 2025 03:25:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 4A819280001 for ; Tue, 11 Mar 2025 03:25:23 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 576781CA158 for ; Tue, 11 Mar 2025 07:25:23 +0000 (UTC) X-FDA: 83208434526.20.24DFCCE Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by imf08.hostedemail.com (Postfix) with ESMTP id 7978B16000D for ; Tue, 11 Mar 2025 07:25:21 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SlfEiduv; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.180 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741677921; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=14J+e5VuAf8KWTYGvfdl7Up5l3cKOJfv7HHosoMS/QI=; b=wP4M5AtJPYSdh82NSdxXY7Nm9wQzfLK2/8cFsVaunMCe+F6TeHgkcYr4iIKzGjt5GHn0ul Ty666LjiYR5y3M84/JlWXto9h1EeuzQt18qGJF9ALF0RWafQHNhjD9f2mgqwP7O6TmvGVW NJFnHFrteUn22BOMGTdxnZYZ2ANEiRY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741677921; a=rsa-sha256; cv=none; b=zDqkVu2jSX74MU70ZGisdF7do5jFg2aJG0Q3xcxgsBZCpgWLIfmMBA/+FiJB6CxukuM/qg F437fYvGiPpbYsyj4XKrDNrRUVb4Xz8Z4dGdofREjza9bdmK805KRcuEGWNTL4DbPn+J8t 4kI1IG+STghAig43yXQaPtY9X/gTBLc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SlfEiduv; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.180 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-vk1-f180.google.com with SMTP id 71dfb90a1353d-51eb181331bso2361444e0c.0 for ; Tue, 11 Mar 2025 00:25:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741677920; x=1742282720; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=14J+e5VuAf8KWTYGvfdl7Up5l3cKOJfv7HHosoMS/QI=; b=SlfEiduvFOk0VdGJ/h5U+3AK9W9DMsWKF2R5GuiEFhsUSk+fwBhlRQbxWEu56ODEFd r7e9vrdLaNngfcudzfJM81SRhm0Z2e49deaO08XCr/MHnsWbnlSNVCdT+ys/3wVpTui9 HFQxdPdY3z+mARc7rIyfRQGc1YYZiUNlNWvY+bkoP6JEe3vhnSmAjDr0sQZ/yk0PZqHP 1AlDgvDxkx2FUhYc5onTxt+y125HkhuyEZOLayQ99dnzct3GaNRgrOI7QkykhYpJ3eir sy3q9OC8AavIpp8xX3qKY5HaFznJPouJhZcyWDOmkyeoVb3TlNoyBmsNB8GwHTl3YEmb 8f+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741677920; x=1742282720; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=14J+e5VuAf8KWTYGvfdl7Up5l3cKOJfv7HHosoMS/QI=; b=RU0SzGn/IMNEjfgChxk5FmyibsEAm5dXBqnjbpVRdoK1Hc+eIc0RZ6vTyUgZoxS5jP z/Zyj+Jap8DZF8hfjhuuGmt5cKhgyU6T7rK4x3MOJu7vQxwnPHk+a18+QYnkpGz9/Y8a OkgsnyrgJ+biUNmpF4K3ZfkM3lb7e66nLwTMFVziwYHo7PwXQuWt+Eak1q7zFGJeSsak q98Jv7lCriYt4KM5dPyMfncBFFeRkZJTUFiSYoXtnPKo1BdYdZq8bz1UKtxy2gd4pAZO Spi7r2E7b3PqMDNe3mnmAvi44e5sNSKrnl6YHmnIxPa/V3vBo8CKH3qQ6njE34AXMLsm UUtA== X-Forwarded-Encrypted: i=1; AJvYcCUGQKXt5kkWPN7OTiHp6ag6MNOZkNb3pmyIn6qj0wB2ibFoo5M+stl/sc1SXX6/VHBJEVzCCb2Jcw==@kvack.org X-Gm-Message-State: AOJu0Ywk6heeh4udEO99CevF48G+LXWaj1cPiRkaxBlw9+LFV+dKVoDZ aXZIdO5cgLjgjoEIOzK/ztGEDdwFGIoy1GVPeAdt9A7DFOBB+OxDTf7IbCFgRcK6tuV8lrOcbvf 1lbmFkWiZPzi0cy9uS128Hxq2dLl52eTx X-Gm-Gg: ASbGnctalXH3EaDGjlR6XVyRTZzpjxp8Y6Zvgx7zB+O81COmECbYtZ9B1BRPltskcgx phIPDWyyxutFE60icaz64T08ro3clgic3q/YF4JpU3WtPkHobmZqWBI0oq7i8GS9gVoWpQ6wcGa TAIFfcQPAKhDVzekquoEYuB63pVDYd7I/78/B7 X-Google-Smtp-Source: AGHT+IFsyBlzqjw152fKM+F/V/k1af7P7Im6Vh9k8Vu1jHuGXnkPe4wU95quHjQWRTZpr4F4NdrxAPjlRVLxhAwp+VQ= X-Received: by 2002:a05:6122:2189:b0:520:5a87:6708 with SMTP id 71dfb90a1353d-523e3d9bfbfmr8599088e0c.0.1741677920409; Tue, 11 Mar 2025 00:25:20 -0700 (PDT) MIME-Version: 1.0 References: <20250307120141.1566673-1-qun-wei.lin@mediatek.com> <20250307120141.1566673-3-qun-wei.lin@mediatek.com> <7938f840136165be1c50050feb39fb14ee37721b.camel@mediatek.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 11 Mar 2025 20:25:09 +1300 X-Gm-Features: AQ5f1JpKxaLImM0wsAF8CYe72YVs87H6q9d9biQ7imNBdrvywmaFTR6ikJ3uks4 Message-ID: Subject: Re: [PATCH 2/2] kcompressd: Add Kcompressd for accelerated zram compression To: =?UTF-8?B?UXVuLXdlaSBMaW4gKOael+e+pOW0tCk=?= Cc: =?UTF-8?B?QW5kcmV3IFlhbmcgKOaliuaZuuW8tyk=?= , =?UTF-8?B?Q2FzcGVyIExpICjmnY7kuK3mpq4p?= , "chrisl@kernel.org" , =?UTF-8?B?SmFtZXMgSHN1ICjlvpDmhbbolrAp?= , AngeloGioacchino Del Regno , "akpm@linux-foundation.org" , "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "ira.weiny@intel.com" , "linux-mm@kvack.org" , "dave.jiang@intel.com" , "schatzberg.dan@gmail.com" , =?UTF-8?B?Q2hpbndlbiBDaGFuZyAo5by16Yym5paHKQ==?= , "viro@zeniv.linux.org.uk" , "ryan.roberts@arm.com" , "minchan@kernel.org" , "axboe@kernel.dk" , "linux-block@vger.kernel.org" , "kasong@tencent.com" , "nvdimm@lists.linux.dev" , "vishal.l.verma@intel.com" , "matthias.bgg@gmail.com" , "linux-arm-kernel@lists.infradead.org" , "ying.huang@intel.com" , "senozhatsky@chromium.org" , "dan.j.williams@intel.com" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspam-User: X-Rspamd-Queue-Id: 7978B16000D X-Stat-Signature: qjfrzyd7cfbxryuz617mtaehtoi9x3pn X-HE-Tag: 1741677921-795907 X-HE-Meta: U2FsdGVkX1+Xz1baf30RJBIjZA7dLnhZFHYSKBwbmzALRHCP3uddEM/MKdtCeSWpgH8U9ZAzymwi/TaTSN/YouPVAehlfM9CsuOsxAOyvcuVHl/61A//cwIFLx776WTaLG59gtCsFXt8RfSfyiryU3FOYfVhSl22n4pgKlEZFNugxSt+0ii5GGbiXzyUa0jpDr+q8Tr4QTLi91BKZ07eASIrIMHKGvXbXodmGmqcAF88eYohtMcwMA3GzMMs6tkebbiYVfq0iE8O1khx6m7J7qr51DGsyhClJI8iVqwVzUFrGg8DzaWeQcl7WQH5eMK5Um/98W/Pr1RdHzZPbvV/ZXqLhMPvElMQ2JYK/5tkmkJfrGLgp4J6Anv6uF2P/MQjnMLH+fksLiCOAeHEaV+CxMlridkMrZgdQR/nSGwbNCnN92sl8XtzkQwynCyMRJUeyf1Tfh9j5/QOb2mzPV5WlotTExiF6UIYNWd4kYO19PrHktlowUfA0gA5vGnyabY+OfBh+6EB4MBGhAxjkTXaSYX8sr9e1AVr8xYCAVUujDu/aYuWoS2LPqcWOkvsfJiaLUwA06tRHZWV+xT6F5agj4T+iQqmUFBxN1Yrz5C3U7jQ+oHYN2CX4eed9RNwdfQAvOryuTQ0kBaolwCfDIGf+v9U+r/7zf6P1Xj9Pq6xfaRUDqKSnVlH9CoFlfN+qQgbn8ZVccfB5YNrBd/ASn6xq12kgCMiUEM1NouLNGQk1zJIS9T3aF2I31t812BxJGvHAd8ApGpRW0K46rEuxWMNmgPs4hN1DhBn7OX6lTXwTeZ6VRHfqg+UUcX1QzpT1yqq9idOAQe0nHKmkBf+k5M3MLSvDxU4jmKv27Ye7h1wVPLF+R/mnov7infgH05SWO4PNjvD4Mr80CnpSgHOZjIYjC7Tm765dkJonNO30SqBHsXJQr3DbV4QTjIiMtQu+RdQtyRoT57ChXQtxstDbex jBFInGeO jKVfp7aXNkGtqgddVToQea0y+VdhyNx6atzzcCplDpQNNAkZ18+O6ZEYCchAkLvhzvspPKvijcBBpbnwLvJP8foVxDh5ppJyVo6A0CWHCMFRqbTm2+QVeC0mWqNxGaYBDLK3xCfbz/GSCtLiw7hmhcA0Pt3ghSflSw5Sh2ijMZzjFm0YtCH28Ry32Xvni41Xi6ISoB6EWzaH703MC9d0Ryjomduj1xNsoUzN/5QNxA+kuLdxp5VmR/3LgIrW9HxWhPBOJ/vV942oR5KE628jP24N6VlIY5ekchxuPuto1chZK+GQVwbHLOTeyDgxOBs8QeH6VVjm/P2YDyC0yCMT6CFagwAU5WEBH6RHGTTvBUjUX183ZP0mOky0WGMur3ZBHDQzaxRP3i82guWjV8ivjTz01aPkD9LzhSyu3AIbN9jTliB6A4aQiAM2SiZrtbtK+zDV2NWY06wPU6xa6D6CY5ZrRJS+lbQaIbhBB X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Mar 11, 2025 at 8:05=E2=80=AFPM Barry Song <21cnbao@gmail.com> wrot= e: > > On Tue, Mar 11, 2025 at 2:26=E2=80=AFAM Qun-wei Lin (=E6=9E=97=E7=BE=A4= =E5=B4=B4) > wrote: > > > > On Sat, 2025-03-08 at 08:41 +1300, Barry Song wrote: > > > > > > External email : Please do not click links or open attachments until > > > you have verified the sender or the content. > > > > > > > > > On Sat, Mar 8, 2025 at 1:02=E2=80=AFAM Qun-Wei Lin > > > wrote: > > > > > > > > Introduced Kcompressd to offload zram page compression, improving > > > > system efficiency by handling compression separately from memory > > > > reclaiming. Added necessary configurations and dependencies. > > > > > > > > Signed-off-by: Qun-Wei Lin > > > > --- > > > > 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 | 22 ++- > > > > 5 files changed, 397 insertions(+), 4 deletions(-) > > > > create mode 100644 drivers/block/zram/kcompressd.c > > > > create mode 100644 drivers/block/zram/kcompressd.h > > > > > > > > diff --git a/drivers/block/zram/Kconfig > > > > b/drivers/block/zram/Kconfig > > > > index 402b7b175863..f0a1b574f770 100644 > > > > --- a/drivers/block/zram/Kconfig > > > > +++ b/drivers/block/zram/Kconfig > > > > @@ -145,3 +145,14 @@ config ZRAM_MULTI_COMP > > > > re-compress pages using a potentially slower but more > > > > effective > > > > compression algorithm. Note, that IDLE page recompression > > > > requires ZRAM_TRACK_ENTRY_ACTIME. > > > > + > > > > +config KCOMPRESSD > > > > + tristate "Kcompressd: Accelerated zram compression" > > > > + depends on ZRAM > > > > + help > > > > + Kcompressd creates multiple daemons to accelerate the > > > > compression of pages > > > > + in zram, offloading this time-consuming task from the > > > > zram driver. > > > > + > > > > + This approach improves system efficiency by handling page > > > > compression separately, > > > > + which was originally done by kswapd or direct reclaim. > > > > > > For direct reclaim, we were previously able to compress using > > > multiple CPUs > > > with multi-threading. > > > After your patch, it seems that only a single thread/CPU is used for > > > compression > > > so it won't necessarily improve direct reclaim performance? > > > > > > > Our patch only splits the context of kswapd. When direct reclaim is > > occurred, it is bypassed, so direct reclaim remains unchanged, with > > each thread that needs memory directly reclaiming it. > > Qun-wei, I=E2=80=99m getting a bit confused. Looking at the code in page_= io.c, > you always call swap_writepage_bdev_async() no matter if it is kswapd > or direct reclaim: > > - else if (data_race(sis->flags & SWP_SYNCHRONOUS_IO)) > + else if (data_race(sis->flags & SWP_WRITE_SYNCHRONOUS_IO)) > swap_writepage_bdev_sync(folio, wbc, sis); > else > swap_writepage_bdev_async(folio, wbc, sis); > > In zram, I notice you are bypassing kcompressd by: > > + if (!nr_kcompressd || !current_is_kswapd()) > + return -EBUSY; > > How will this work if no one is calling __end_swap_bio_write(&bio), > which is present in swap_writepage_bdev_sync()? > Am I missing something? Or is it done by zram_bio_write() ? > > On the other hand, zram is a generic block device, and coupling its > code with kswapd/direct reclaim somehow violates layering > principles :-) > > > > > > Even for kswapd, we used to have multiple threads like [kswapd0], > > > [kswapd1], > > > and [kswapd2] for different nodes. Now, are we also limited to just > > > one thread? > > > > We only considered a single kswapd here and didn't account for multiple > > instances. Since I use kfifo to collect the bios, if there are multiple > > kswapds, we need to add a lock to protect the bio queue. I can revise > > this in the 2nd version, or do you have any other suggested approaches? > > I'm wondering if we can move the code to vmscan/page_io instead > of zram. If we're using a sync I/O swap device or have enabled zswap, > we could run reclamation in this separate thread, which should also be Sorry for the typo: s/reclamation/__swap_writepage/g > NUMA-aware. > > I would definitely be interested in prototyping it when I have the time. > Thanks Barry