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 4793AD2E002 for ; Wed, 23 Oct 2024 00:50:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B0CE06B00B9; Tue, 22 Oct 2024 20:50:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ABB4E6B00BA; Tue, 22 Oct 2024 20:50:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 916F16B00BB; Tue, 22 Oct 2024 20:50:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 719366B00B9 for ; Tue, 22 Oct 2024 20:50:33 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 3C4D1A05E0 for ; Wed, 23 Oct 2024 00:50:02 +0000 (UTC) X-FDA: 82703035926.05.DAFC0D4 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf06.hostedemail.com (Postfix) with ESMTP id 213D8180014 for ; Wed, 23 Oct 2024 00:50:18 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=JcQWVend; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf06.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729644580; a=rsa-sha256; cv=none; b=VNu3ebM18GPZCoHflAU3lhUQlmTWzDsDJ1k5K9MJ24mOuHjyNCzViIjvenuUT+bpSKo2/H oPnVnsQZ9zU3QQ/BLDAbu0x3hWMj5vyAo3XoLMlMLQYLgD1yXTF7CypMlmwpFyy3z70CRF oq7y2KPe+QWQ/d28PygmL57cCPyhgW8= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=JcQWVend; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf06.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729644580; 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=T2RVe7tez2PJu7xFZaopsIUK4FQaSBewWT4oCCH7cRo=; b=iQ0Y5fn4WCKIgEs0cHDeGgxX0WvetEDkOPRlegUG5IJXEcqkFjcX3iZZOZLatU/UiGKhLp /uN495b6Ye8bNThoXXKJwkB/C+RIOnsbgYNl6BjXHrT84WDaYpAYfTz+5ze9Vwx1juFCXq lFUSU4EwBbSycna9Pc1uAPeEgC/eH68= Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a99f629a7aaso63502366b.1 for ; Tue, 22 Oct 2024 17:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1729644629; x=1730249429; 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=T2RVe7tez2PJu7xFZaopsIUK4FQaSBewWT4oCCH7cRo=; b=JcQWVendk6VShegkLg/atn7C7vQ/H4xeknpD9dulOoo3pP6bxV1QW5Wxcx0X+Hchxj GOjoI8dO5+wDjjWizOv3hFy29sR2oEC7hHQV//EH9VgjmWzqBJr3fnnCe3MOVxdie/cM W6AL519kEiWvPYbRoGLECwGkn+G2zU1u3aytIAKPxI99/j5F5gcfxEKuI6NCK3+X9QBk rSA42Sstvn0brSuDRdbDkDb3S1LzZgS6tAexLjpXerqxe3jp9bOZUN/1YYj5W5YDrdzX QWaOfgFO5dEFyhWquAvtmE2u+/HPlAZzmGXk369jBKP7eVjKJ07s+hoQTzPzPo90+jKD pvVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729644629; x=1730249429; 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=T2RVe7tez2PJu7xFZaopsIUK4FQaSBewWT4oCCH7cRo=; b=gXVHDRNXUhae/oF4dL+cBDmWlMClkMkYh1Xbw2jr9Xe/jSh6MiD2FUNBd7rh/M1Eac ekq2NyEXUtK+fwhn0ZhPd7NhHbqu/5TKgsnkEbcPaHPweYTNmhT1nI8M8h0AoZT2tnoG ohvOW4YExAga41p/JkD9osTeM+9d3ZdtMa/JvhaYMyHfZi7W1zJDfPhOqOt14YLvS2nW dtTJaMIW60NgNHqlBLNoUVRlmE1JC/0eSnc4OByetAvXPqMiS4gWDO8VJ/Ypqg8A1kZM kXtSJuWrwvO6fv+pK0Zu6cO+7ZWiPACHNNVJE+ZcRgc+4Pi9xQRUgPOfDCJsw98kcLKk mP3Q== X-Forwarded-Encrypted: i=1; AJvYcCUWQZh4JvrMEYOLFDnLGrLXyV59p0qnpGbUpIMtxABgh34o5+G9cmLXLu9bROwAbp/SqiqMwzuC9Q==@kvack.org X-Gm-Message-State: AOJu0YzXFb+r1FkwzC3GejiccwurkO0Ai1APUvTlKrBtjhPV9eft2UPB fPgurhWhSvnOn1/c+kp4CIjIKbaQkocQiEJcQ3gkMLAR41Gtgo4OCnmBazsy0mH4phKQVQhOevV JD8M2myFaJnT2whEDGs/MAaenTMTjAtcoAcCD X-Google-Smtp-Source: AGHT+IGEjIYQpmIs+gAoloBjz17prVfsvhxrsDIKUjyX4jbTSir6xX9/MpmDlwfyBofviyxuYwSskWvLQsI1isWTUW4= X-Received: by 2002:a17:907:6d0c:b0:a8d:2281:94d9 with SMTP id a640c23a62f3a-a9aaa620d72mr577158666b.23.1729644629301; Tue, 22 Oct 2024 17:50:29 -0700 (PDT) MIME-Version: 1.0 References: <20241018064101.336232-1-kanchana.p.sridhar@intel.com> <20241018064101.336232-10-kanchana.p.sridhar@intel.com> In-Reply-To: <20241018064101.336232-10-kanchana.p.sridhar@intel.com> From: Yosry Ahmed Date: Tue, 22 Oct 2024 17:49:53 -0700 Message-ID: Subject: Re: [RFC PATCH v1 09/13] mm: zswap: Config variable to enable compress batching in zswap_store(). To: Kanchana P Sridhar Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, 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, joel.granados@kernel.org, bfoster@redhat.com, willy@infradead.org, linux-fsdevel@vger.kernel.org, wajdi.k.feghali@intel.com, vinodh.gopal@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 213D8180014 X-Rspamd-Server: rspam01 X-Stat-Signature: n8a5fmycd1pfiscnqt3gb74fxn9ozdjp X-HE-Tag: 1729644618-470788 X-HE-Meta: U2FsdGVkX1/aO5t3PHpZ03j+VSJKTT2MiGvkYWhNt6oUlmL46rCTYG9IS1mTWUZbra8x7e0LhJXOymZ+9S/pKIEG5uzvqKGMlUlHLk0Y+nLDGoQ7HqVhD+2AhR0hOoh5Wn7DDOSRQm0K91lEsLTSA0xPq86H271MO09OVQLHcdkU9MLxm8Kt0umnqLFlkRzQPQJRiLnKA5I8PhM7YynNCcFfNrgaz49FAVsomoh7ADtG5zqZIfZmHvJLAsKbu8sbMztRTNPnvRKF6ygHK/sxlpj5mzLBfGMJU9fIhlQAopdNyqmXgtFOmLlAPfB1AnbBXpM/5MANRft1qef9Xbyd8jxiTc60JCDjEsoWJgJjyM6Mz0q4B+hcB4b8VPBeX8qBZy+Qb9ghfEEFGppnDNMaX/OmuSDskbRkn57NOkzFxhec8qdOoy7vQiKPptLXXZZISyJQLKyQqDkxlFGnuH2sZqWjpRx8cVRqKnJiGmAr0oLf5AHMAXFoInfcP3j2neLy+1+TEcsJEIO3b+Lpdoxh81GoU61u3Smy+MO3exsieidL771WceGkI/EcH4b5YGE6DSKXf30ahm5hovizC7Jjs9F7oS180PXLUeDYX0cJXPUgBJ6JYqf7bBysCGQbDp/COSbsEhFuutj9aBYViGVF/qb6pKqj5SjPMQLNxGu/uMYIKX29WJUKAibsV2anUffqRubcubLcmjnrSjiv2A2/V16mcAP9o2eB3gr2H5AzbtXbGMf/rC8n/2VAOpwwbSZbBCMjAUKkp551cJnyCUBG3nAip+h9MRC4tdbkXYkYRG+kjt/Cc1NjX8PEfPage3Y4J7vDYZ3kLrBYyxSYaGht7f5iIESNVWn0Gm9AvFH2GhyaXfCfQvGQL3Hhla/fYW67Xncj4BZhemnD262Ryn3f37aOXkUXF/xtGVDWgK1s6SLaeBln0EWcE3jsJS64g//P2owIfFSKPUDzEfeE/x8 wkDkqvKR DQniWKFYue1GBmmDpjNUeaMDH56z2Ampp4ozbgt7pIKkP43dkd8amreMLEGXKu0jvxhhK3Ts/f9iHYV0ZOwQ35peKdTRvOfnWg9594ghXqxs0CoL9l30/KFlRElP/RLFzVNBsa+wWef5VXazMN2PHl8sUhROpCDzEde9y6lRdcnIxQIjR87DDj6WU8cpZFmnM0R04MqdHo2SsH+2lvhj+eqbXlX7Pkf+br4HAJHpw5SnuqAWb7IXTkfjN1qOQhNtNcazXh8kNffzSNBsBj5v4jx6OJCt7Ji6XjMQTwtLnfthfl7c= 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=E2=80=AFPM Kanchana P Sridhar wrote: > > Add a new zswap config variable that controls whether zswap_store() will > compress a batch of pages, for instance, the pages in a large folio: > > CONFIG_ZSWAP_STORE_BATCHING_ENABLED > > The existing CONFIG_CRYPTO_DEV_IAA_CRYPTO variable added in commit > ea7a5cbb4369 ("crypto: iaa - Add Intel IAA Compression Accelerator crypto > driver core") is used to detect if the system has the Intel Analytics > Accelerator (IAA), and the iaa_crypto module is available. If so, the > kernel build will prompt for CONFIG_ZSWAP_STORE_BATCHING_ENABLED. Hence, > users have the ability to set CONFIG_ZSWAP_STORE_BATCHING_ENABLED=3D"y" o= nly > on systems that have Intel IAA. > > If CONFIG_ZSWAP_STORE_BATCHING_ENABLED is enabled, and IAA is configured > as the zswap compressor, zswap_store() will process the pages in a large > folio in batches, i.e., multiple pages at a time. Pages in a batch will b= e > compressed in parallel in hardware, then stored. On systems without Intel > IAA and/or if zswap uses software compressors, pages in the batch will be > compressed sequentially and stored. > > The patch also implements a zswap API that returns the status of this > config variable. If we are compressing a large folio and batching is an option, is not batching ever the correct thing to do? Why is the config option needed? > > Suggested-by: Ying Huang > Signed-off-by: Kanchana P Sridhar > --- > include/linux/zswap.h | 6 ++++++ > mm/Kconfig | 12 ++++++++++++ > mm/zswap.c | 14 ++++++++++++++ > 3 files changed, 32 insertions(+) > > diff --git a/include/linux/zswap.h b/include/linux/zswap.h > index d961ead91bf1..74ad2a24b309 100644 > --- a/include/linux/zswap.h > +++ b/include/linux/zswap.h > @@ -24,6 +24,7 @@ struct zswap_lruvec_state { > atomic_long_t nr_disk_swapins; > }; > > +bool zswap_store_batching_enabled(void); > unsigned long zswap_total_pages(void); > bool zswap_store(struct folio *folio); > bool zswap_load(struct folio *folio); > @@ -39,6 +40,11 @@ bool zswap_never_enabled(void); > > struct zswap_lruvec_state {}; > > +static inline bool zswap_store_batching_enabled(void) > +{ > + return false; > +} > + > static inline bool zswap_store(struct folio *folio) > { > return false; > diff --git a/mm/Kconfig b/mm/Kconfig > index 33fa51d608dc..26d1a5cee471 100644 > --- a/mm/Kconfig > +++ b/mm/Kconfig > @@ -125,6 +125,18 @@ config ZSWAP_COMPRESSOR_DEFAULT > default "zstd" if ZSWAP_COMPRESSOR_DEFAULT_ZSTD > default "" > > +config ZSWAP_STORE_BATCHING_ENABLED > + bool "Batching of zswap stores with Intel IAA" > + depends on ZSWAP && CRYPTO_DEV_IAA_CRYPTO > + default n > + help > + Enables zswap_store to swapout large folios in batches of 8 pages= , > + rather than a page at a time, if the system has Intel IAA for har= dware > + acceleration of compressions. If IAA is configured as the zswap > + compressor, this will parallelize batch compression of upto 8 pag= es > + in the folio in hardware, thereby improving large folio compressi= on > + throughput and reducing swapout latency. > + > choice > prompt "Default allocator" > depends on ZSWAP > diff --git a/mm/zswap.c b/mm/zswap.c > index 948c9745ee57..4893302d8c34 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -127,6 +127,15 @@ static bool zswap_shrinker_enabled =3D IS_ENABLED( > CONFIG_ZSWAP_SHRINKER_DEFAULT_ON); > module_param_named(shrinker_enabled, zswap_shrinker_enabled, bool, 0644)= ; > > +/* > + * Enable/disable batching of compressions if zswap_store is called with= a > + * large folio. If enabled, and if IAA is the zswap compressor, pages ar= e > + * compressed in parallel in batches of say, 8 pages. > + * If not, every page is compressed sequentially. > + */ > +static bool __zswap_store_batching_enabled =3D IS_ENABLED( > + CONFIG_ZSWAP_STORE_BATCHING_ENABLED); > + > bool zswap_is_enabled(void) > { > return zswap_enabled; > @@ -241,6 +250,11 @@ static inline struct xarray *swap_zswap_tree(swp_ent= ry_t swp) > pr_debug("%s pool %s/%s\n", msg, (p)->tfm_name, \ > zpool_get_type((p)->zpool)) > > +__always_inline bool zswap_store_batching_enabled(void) > +{ > + return __zswap_store_batching_enabled; > +} > + > /********************************* > * pool functions > **********************************/ > -- > 2.27.0 >