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 DEFD8C71136 for ; Mon, 16 Jun 2025 03:41:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 806CC6B008A; Sun, 15 Jun 2025 23:41:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7DE206B008C; Sun, 15 Jun 2025 23:41:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 71B7A6B0092; Sun, 15 Jun 2025 23:41:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 633896B008A for ; Sun, 15 Jun 2025 23:41:20 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2635116020C for ; Mon, 16 Jun 2025 03:41:20 +0000 (UTC) X-FDA: 83559863520.17.99BECD9 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by imf17.hostedemail.com (Postfix) with ESMTP id 3AE294000C for ; Mon, 16 Jun 2025 03:41:18 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=P+M6ij1j; spf=pass (imf17.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.170 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=1750045278; 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=KjwCIT4/G6OsPqKKNi7etA9BwyZ290LnHAyZ+vvEmLE=; b=aZ71SjyAt8cAQ7ppbRku/cHFvMmZGzLUANcM8QVcFemnd8FmnkphVteLSCD4LzQ4q81z/m NR2J4Wu7SGIgocEM7n/ZfCKw5usZ8sTaYCsuNRoHleU4G/jFoB8bT8D5leyhC3p2sYZup0 wsiowk7szUftEf25KfGZ/hMq00gB8bE= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=P+M6ij1j; spf=pass (imf17.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750045278; a=rsa-sha256; cv=none; b=4SL/9jOHmTkfO5dC4/sX5CW08bDPeJPVJeUJxCpgs95b/nmzVvC8j2ShxdQn10jaDV9Dvr 0ZwNymNLkHAKAFQWuZsc4H9Qj2yF8a9fiYRqvxYnvfCUKCdBU+4h1lvG6VOHEXK01aITCD IjwjoyM6DrmN8j1pMsSMxwcWsqAjpfQ= Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-7489dfb71a8so1409842b3a.1 for ; Sun, 15 Jun 2025 20:41:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750045277; x=1750650077; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KjwCIT4/G6OsPqKKNi7etA9BwyZ290LnHAyZ+vvEmLE=; b=P+M6ij1jBKVE3oATcsaaQRJDIJahvyP7G56JE987NBPGNHTVygPtU5CNfT16TM9iJR OkTp4dmn4ssUks1Z/EZb+jiBnnNLNk2MG2OpTwQcVSYyKCBzBmXco6OelrqNBvqUzmPo lS1rFKx0Nb1l3g/U72OCSMwaHBbbjbxqqguHW/CijxfGjUaOsZA0kTEc4KNlkzlx7o6D 7tJUD+ssrw5LyFaj/L67IHO06D5hukcTqNhOoMHnsnfngR4gjaUPAV7rNY8JNImcFIAm I3Z/MEUpAS/trX/4fZgJF00MrL3JtA7ZF9xEY00GlzRb0qwETQWP5rkk+qxdj9zLan+I owag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750045277; x=1750650077; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KjwCIT4/G6OsPqKKNi7etA9BwyZ290LnHAyZ+vvEmLE=; b=vn/EQcVNWk3g6Q7U8uAhfioUQTywHPHzWXJodJo2/IO0+Rwv4PvAOEEx9tq5tbxxI7 TJBeIxc+OwP7jMd3uu2AB2JOYctx7ijOhuCnGFULsIuxoIayYU8cg4ToCfjido8NITuY C7NGUEhqWzFuqduToY0ikdgcAKyzgADNDW0OiFmSzIrGlTPME5rAFxcImu9wM67bm4Nq MC14nYrXfIful/YNtVvG2JRes3HoLRfRLWUfDxcCngVxaX55zlwo43/Q8y3IrcKREQsj 7297kvm5JnQhr+/wBGCvvtEzxogfxbK9Fmk4hYzQQ6bJLftrv8vlQZORPm+seyx3LoKI G3iw== X-Forwarded-Encrypted: i=1; AJvYcCU57b7wPNlGjbj+HZhhcr66uOb0Uj/3KelIcYLJwKYPoa+8UMTXnQUrW2iM8AxSjuzfRvs1q/7oMA==@kvack.org X-Gm-Message-State: AOJu0Yyj5GpMXLYDlBVj1ftUwCr+JKycyM/sgLPpGbN2UKPshYB9ctqh I57hmt4VCijz2jxuc334v1lDKlAUNFNciw14I5EIrkgJBs7YsieVa7zD X-Gm-Gg: ASbGncsuwtTDJBFvWMD4eYiUx/xVsnDtTXugJgK+MGcz6aqJyPMc5rcPt/c3P1ifpVU WUBGuMi477q9NdOfKa/ioHSo0ldcK4a+Gdy3h+0cdfX6tIWHyXqrx0OSUB82PoImhAdlTnBEPfI JIrlCwB1WNyXqc6EBv2KvOkd+oJBVPpvrIpzuh5fT4tiQySMTmVGE7e0+fZLdLcNg0gAakb7GVF P7yUDNO1BbKibXNWzZWSsyFZpMdQIiElzvkpRHRmV9Py46rkPPBvzuUjJuDAE0gtxfAAA6EAjZY ocJXtoNPSEBbRoIkuRlIULCzkq/nFuswbe0l/Bfw6MFW1njsFgvc/Bgx/KrWUXJXT90Oc+ZSBrR 8FDXB X-Google-Smtp-Source: AGHT+IFoXXdADq54s1YJVoHHCyU6912PkQq0oVs1W/N3IeK6HcDSKJErbEsGyC7KzvI7wyF0q8jdCg== X-Received: by 2002:a05:6a00:2286:b0:736:2a73:6756 with SMTP id d2e1a72fcca58-7489d1999famr11297185b3a.21.1750045276897; Sun, 15 Jun 2025 20:41:16 -0700 (PDT) Received: from Barrys-MBP.hub ([118.92.145.159]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-748900b37ddsm5809347b3a.134.2025.06.15.20.41.10 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 15 Jun 2025 20:41:16 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: nphamcs@gmail.com, hannes@cmpxchg.org Cc: 21cnbao@gmail.com, akpm@linux-foundation.org, andrew.yang@mediatek.com, angelogioacchino.delregno@collabora.com, casper.li@mediatek.com, chinwen.chang@mediatek.com, james.hsu@mediatek.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-mm@kvack.org, matthias.bgg@gmail.com, minchan@kernel.org, qun-wei.lin@mediatek.com, rppt@kernel.org, senozhatsky@chromium.org Subject: Re: [PATCH] mm: Add Kcompressd for accelerated memory compression Date: Mon, 16 Jun 2025 15:41:06 +1200 Message-Id: <20250616034106.1978-1-21cnbao@gmail.com> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3AE294000C X-Stat-Signature: 1bb9xaj6n5eec3y6wthcnnsyt3yyd51f X-Rspam-User: X-HE-Tag: 1750045278-331901 X-HE-Meta: U2FsdGVkX1+olQFzGwqTmWQA6mC1bibFX/GfSBCJjxCDR5gZxufxrH578Jz1RX53KCTVZvfJqcnuyvcOGFbLMK2z7eaQq/yrcEqyni+TOiCACqo0BQFVcdlPwYo2siaNLAPuaWeMm4849Bh774YZ4k7tXg0nv1hM4sxgkPJcXFsvYF+4J9cBmfeY/H0zYwoI68nWCWBpbtknzrnWd5YYqroDUhNWJUlCbq40fuS9+wE+RAHup/+Ej64rCkYL0QVFiZi4cEB81oszDjcMZ1NcoHJLoe2W6H4nFJOLOKHQNEJOVeU851DPLBE62IQDl2Fqg8LkOtZQU193peVD7ZH76A/CbPdcvJLkrpXLkXsRg3aoqcGTWI/+8Bk5SQ4tEALF6nIBySpLDN0VJSZZthkJwbn3+x/E50ul8rgOls2VnAqUW7pDN2kY7AvWRhd6TobAqKOTMAlKfV2Uc2PBNtIBlhOLvNN3wUcd4U6ZzI/vlQISyPjQJYLhP2p+hev8ZeuFbyvDjxkZun5Yqs6RR3m4WIzC5zyAWOZxB08Eo155hLLioSXnvW18GlNtJe03NHDKMjdJTDN2Gi6PjvDwy1hcobyTeAd+AjfurQvblT7KtQ+ZDfYNaWDPMAgBERxTO2Qu4ObJ7Y7sKroICuQUzx7etqaPycaOqkjdgHm6opWo7UGknm4M55gbQHCEUgEchuJaCouuPU94hfjHhDBoAR3sJt6qJizlXwYQrkqXxYf+GbJ7xYTlCdD4IdBDyh60UB6/V/olEsnSjL3qRtkfrFTO83Ai72DsGMaOYEirycnGohRXzLnLw7OpN8u+yQyXgoiqNPqfyz1H/gKD/iv3bu5l3DQghqBRdmNwAZJQLBnnmJ1Odf0cfINgxRvNkPnISxmI73QOUYsQVHode4YKrv1N/tLTkoDr+MsW0S49b58itlDTnmAm1dHLrmA0+s9h3d2zWyAZVTV9Uf+B5FuYMoy WzRVmx6A fCQ9zfiLUsARWyAqUOPUXp1Ct+CKpKaESYgnUV2nSpSsn/9qjQPUaatEKyWBkG/DqBXbFJ9hGQ2bilsnZxQ7CgCU+AewdbSjT5apzcw6S98qJrsmIvu6sGooaSCcxhv9SjcuIhOnmAWvk8FZxb4RPCLVOrz4DxGgW2Lk2FuYVrLVkvT/K67qs2vH5GvlR7EPA0cQUd8XCQaFjhpWXJ2OiRUia4dD6808COyJD2wt2f4EGmH0mPjIc+NHALK/FJ/AOkJZdB+CcdkkVGnanmozN7JznLVhrL8H7rwOkvZmIsPvqoBBpRP1AuNd2uaHsfom2MnJQTcQRadfoZaSa3lZ0yYj74a/XUgpuDOQkuhrThe679OmhLjt45ZEn6b0Ja2w3UT9J/ZLzr4HViPgRZWp9r/Si9IYDB5wlPFiLqSXToPCH8Tbo69K41obntPUhQ17XAGwiUUpZ55AtnrjAvbkyEBAVqaMdCYRFofWEPflPpTmGG9qrqXBsU9MPnv/NwiltZCyJ 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: Hi Nhat, Johannes, >> The way you implemented this adds time-and-space overhead even on >> systems that don't have any sort of swap compression enabled. I agree — we can eliminate the time and space overhead by refining the code to hook kcompressed only when zswap or zram is enabled. >> >> That seems unnecessary. There is an existing method for asynchronous >> writeback, and pageout() is naturally fully set up to handle this. >> >> IMO the better way to do this is to make zswap_store() (and >> zram_bio_write()?) asynchronous. Make those functions queue the work >> and wake the compression daemon, and then have the daemon call >> folio_end_writeback() / bio_endio() when it's done with it. > +1. But, How could this be possible for zswap? zswap_store() is only a frontend — we still need its return value to determine whether __swap_writepage() is required. Waiting for the result of zswap_store() is inherently a synchronous step. My point is that folio_end_writeback() and bio_endio() can only be called after the entire zswap_store() → __swap_writepage() sequence is completed. That’s why both are placed in the new kcompressed. The use of folio_end_writeback() and bio_endio() was the case for zRAM in Qun-Wei's RFC. https://lore.kernel.org/linux-mm/20250307120141.1566673-3-qun-wei.lin@mediatek.com/ However, the implementation tightly coupled zRAM with reclamation logic. For example, zRAM needed to know whether it was running in the kswapd context, which is not ideal for a generic block device — the role zRAM is supposed to play. Additionally, the code was not shared between zswap and zRAM. Thanks Barry