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 C9F54D33994 for ; Mon, 28 Oct 2024 14:41:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4ADBF6B008A; Mon, 28 Oct 2024 10:41:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 45E366B008C; Mon, 28 Oct 2024 10:41:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 325B76B0092; Mon, 28 Oct 2024 10:41:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 12CE76B008A for ; Mon, 28 Oct 2024 10:41:45 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id B0E6D1A05EC for ; Mon, 28 Oct 2024 14:41:44 +0000 (UTC) X-FDA: 82723273332.17.0D88A2E Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id 862E8100028 for ; Mon, 28 Oct 2024 14:40:58 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZCvjvipb; spf=pass (imf05.hostedemail.com: domain of joel.granados@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=joel.granados@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730126346; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KfgLT49VeyFKvrUWVk9gzCN7cvTBImXGO6p6vZ6Uvb4=; b=pZ+iE3wZKK5jaZjnf9iSjXZ5qk3CXUKO3NBZaBowZXkyqvmtFelQIg2yeVT0pnno/yetn6 THoL37tkMRX46Cyn1qcBObszqPPjlHirGn8vsz1Xo9XPHytLNL8kwLiVU44c5ACXPzADab uttYyCFD8TbA+fGoX/p12Q0rlsPaHn4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730126346; a=rsa-sha256; cv=none; b=d5xt34jednI2JYZcyA+XxTUMtbIwLtxxdPjrnqWKmIP9U1pX0J4u7Hah6HhuCih2DoxwiC cUUnsNj6wk4cO5LLvYkI3xz26d8KIFkLJ+Texl/Y2zt57NAIAeZs2++h00it62wrHM4leb OlSEVdPpPAv4raud90SvzWIsfsWi3LM= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=ZCvjvipb; spf=pass (imf05.hostedemail.com: domain of joel.granados@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=joel.granados@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id E1EF65C4BEB; Mon, 28 Oct 2024 14:40:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34219C4CEC3; Mon, 28 Oct 2024 14:41:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1730126501; bh=iDR3Xj6nglLd6JXk8qWi2FL2TJGzRt+aL0T8F2fg1/Q=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ZCvjvipb9Xw/NpUdRMbQX7UVhFg27V14zdPRu/GsX60IhJydkL/JLLWdFFMTR3hhZ eoN35D3pbBtO+0ATcZkNWv+o+ALdADvxH9XIMttwPUtgFDRart8VSrTk6VuqQyHIR5 dBXkZ+EMGAlVGtM6XBMx2oqYtu3xwwkQLlKkKbAhI/8Ih7PsG1EeJBFcPhtvk1CYSr UKkdcay7x0WkavMNtsU+AKMccuBvrvZbn9g9u5wWjssb3977bJBr3bIDpp8TaHVuKi Z29bREUl6Nwq46nszaXaQNk/PcfpBvteZDVagp4tEQJKmYT/e1tIFBd6kzAd0J8pTy 88zkwJc/m7zdA== Date: Mon, 28 Oct 2024 15:41:37 +0100 From: Joel Granados To: Kanchana P Sridhar Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, yosryahmed@google.com, nphamcs@gmail.com, chengming.zhou@linux.dev, usamaarif642@gmail.com, ryan.roberts@arm.com, ying.huang@intel.com, 21cnbao@gmail.com, akpm@linux-foundation.org, linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au, davem@davemloft.net, clabbe@baylibre.com, ardb@kernel.org, ebiggers@google.com, surenb@google.com, kristen.c.accardi@intel.com, zanussi@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, mcgrof@kernel.org, kees@kernel.org, bfoster@redhat.com, willy@infradead.org, linux-fsdevel@vger.kernel.org, wajdi.k.feghali@intel.com, vinodh.gopal@intel.com Subject: Re: [RFC PATCH v1 13/13] mm: vmscan, swap, zswap: Compress batching of folios in shrink_folio_list(). Message-ID: References: <20241018064101.336232-1-kanchana.p.sridhar@intel.com> <20241018064101.336232-14-kanchana.p.sridhar@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241018064101.336232-14-kanchana.p.sridhar@intel.com> X-Rspamd-Queue-Id: 862E8100028 X-Stat-Signature: 8iu65tu6taofxdftbscwzu3obwo7kgax X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1730126458-34898 X-HE-Meta: U2FsdGVkX1/XnusQXy86eNPuig4E5xYUI910bTNx5KTqL2t5mdko8Csw+mBnGia7gFmh64MIqRknMPUyeWe8M/Mq31wD6pWLJf7tbQy055eS34cLPPhLLlOqoikfkGxw5n9Uvbkiio7LYBtp3ClXNWecD8RfFYBDrsNd+ldzu2DTHFRSzPMStA1LCQr1Qje1QkS0p0JxbbtFina+cPCdnwQq5yc9R2SngTIq4/ud59KOhfQMpWCr9qpkQrjnOVRunHHtQzWREQYyQzL2DAl2lN5s+HmD+zlA+M1/pUx/Vjp1nnAbudvkNl15ajg3cFjadknoXp1Zy2s2SIotBkPtztjjYqkZIwg/2WeFoXI4WlvfvMRFo3Ca7yT69/HWVlBkGXUT2zmI6Yadh/rLuqGgjOzVTA8uS8PR4gUkS+AXR94yztPIa/EpkWSyivc+OuHiFmVXU3Ll6GorLWnkifd/cH4Sk/uYAviPXtHsTSow1O/qpp9l32eSRYcc8FRFWAPkGvqAyYEfVJEvJy7L6pD//VhzCvVQ2GfVzJzPuMQLdcnXIjHU6cDtU80gzuHsE952lBsfHWS2abHGode5JAHrlIro5xHZ4Voxpvwyi5uTx0uSfRe+UcpwMcL6Hm5/hf1jde73E5lSc6tSfSQSrxyPOxpURZQbd+LG3Pik6EActRpNXEuBMH8Mx0nEisCEc2qBZQNaLMcPE1yaUvThr5rZaqQhpRF8Y3awQF70o+t7aQ0Yyt+3YDDB4wVISmae0GIjb7xdvqtReaUx5XbzgXey1b0dKn+fkuTIqQR7IQAriANjC08jARXH3uz/M3j8E45nZ7sBVfPdHCVPHIJVLI5PT/bcCOz1u6ronsBg5xCaFjm6GbHEku5XEAV3PntT28qHV/MO7HLD2GkS4jhMZR8EvBbMatnEKiedFxfyOPt0WJ/enVjz54jyvl+Yj4SO2NGrQUvMuDZi+HuwAtSWWIO 5gB1c7yK iW/V+KkqIzhQyle10R7uTTKdHJb8Dy9h9/Vug8C0mOqkShtMB2cQsQR5Q5ieu4C+pTFYVnZTs+FbXTRy1qb45Hh5KKYPC/toj51dMxIzU7dReB3lc6b1xgMpNUgyfncPlZ4lOSW8Va36VEihc5UTn5q+mwoDd61G4Jnf1wSHDo1hpR1cMtmBiHoCVekf9SAIjssMTVA3L8bNDf5/aOXsy/G5BT5myh17uUkbmjip0rk5kVFVKt0F9IBNj9cim9VU/BdF9poqu4lbhcqLkhni/NBEbNb06l5VAhATLBYtsiXITeP4= 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 Thu, Oct 17, 2024 at 11:41:01PM -0700, Kanchana P Sridhar wrote: > This patch enables the use of Intel IAA hardware compression acceleration > to reclaim a batch of folios in shrink_folio_list(). This results in > reclaim throughput and workload/sys performance improvements. > > The earlier patches on compress batching deployed multiple IAA compress > engines for compressing up to SWAP_CRYPTO_SUB_BATCH_SIZE pages within a > large folio that is being stored in zswap_store(). This patch further > propagates the efficiency improvements demonstrated with IAA "batching > within folios", to vmscan "batching of folios" which will also use > batching within folios using the extensible architecture of > the __zswap_store_batch_core() procedure added earlier, that accepts > an array of folios. ... > +static inline void zswap_store_batch(struct swap_in_memory_cache_cb *simc) > +{ > +} > + > static inline bool zswap_store(struct folio *folio) > { > return false; > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 79e6cb1d5c48..b8d6b599e9ae 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -2064,6 +2064,15 @@ static struct ctl_table vm_table[] = { > .extra1 = SYSCTL_ZERO, > .extra2 = (void *)&page_cluster_max, > }, > + { > + .procname = "compress-batchsize", > + .data = &compress_batchsize, > + .maxlen = sizeof(int), > + .mode = 0644, > + .proc_handler = proc_dointvec_minmax, Why not use proc_douintvec_minmax? These are the reasons I think you should use that (please correct me if I miss-read your patch): 1. Your range is [1,32] -> so no negative values 2. You are using the value to compare with an unsinged int (simc->nr_folios) in your `struct swap_in_memory_cache_cb`. So instead of going from int to uint, you should just do uint all around. No? 3. Using proc_douintvec_minmax will automatically error out on negative input without event considering your range, so there is less code executed at the end. > + .extra1 = SYSCTL_ONE, > + .extra2 = (void *)&compress_batchsize_max, > + }, > { > .procname = "dirtytime_expire_seconds", > .data = &dirtytime_expire_interval, > diff --git a/mm/page_io.c b/mm/page_io.c > index a28d28b6b3ce..065db25309b8 100644 > --- a/mm/page_io.c > +++ b/mm/page_io.c > @@ -226,6 +226,131 @@ static void swap_zeromap_folio_clear(struct folio *folio) > } > } ... Best -- Joel Granados