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 3E28ED64085 for ; Fri, 8 Nov 2024 20:24:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C97056B00BE; Fri, 8 Nov 2024 15:24:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C46826B00C2; Fri, 8 Nov 2024 15:24:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE7296B00C3; Fri, 8 Nov 2024 15:24:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8BD086B00BE for ; Fri, 8 Nov 2024 15:24:09 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 354E8AC3FE for ; Fri, 8 Nov 2024 20:24:09 +0000 (UTC) X-FDA: 82764053820.18.D9FF214 Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) by imf15.hostedemail.com (Postfix) with ESMTP id 743F9A001C for ; Fri, 8 Nov 2024 20:23:29 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Lcrq6IT+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.176 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731097321; a=rsa-sha256; cv=none; b=MIWWFJRVPRI+k2NlYx3VeSaYCUOeE3U5lnoTVwCP2x9uBBTM4W+AxPzslswKAByRhHBoM7 1uMNXMyfXXHKnbbEmGZmXoCOK1wfvGp4JckFSsxLksmj3MZr4OW1cQqikgHIfnsZ2ONzvt JUJ0gz0ZJd/ZNkDaaZZIXfIw1CW7mrg= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Lcrq6IT+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.176 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=1731097321; 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=WXILrBeBuixnjykDOnFBzIWDX7dpjLHEipvuPBeIMt4=; b=GnfGcO4lLnmrjU7pk1dViECsqkqsx4f04KJNqpqkeH25T5XOu1Cy3EwnRpbnINWnr0jmIP uj801a108rZCxfPnecsLJ6KvefZ246sNCknYi5CYO2KV06doj4qzivM1ociCNnGUILhl9X bwJGbvzPFe/nyVHTLGSv9Dal1AoDxps= Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-7b14077ec5aso343346485a.1 for ; Fri, 08 Nov 2024 12:24:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1731097446; x=1731702246; 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=WXILrBeBuixnjykDOnFBzIWDX7dpjLHEipvuPBeIMt4=; b=Lcrq6IT+tYvaEDeBFYIKQyg+58GJu1pjbHFSnIUXhTNPdG4XrOmjwPX51I20WBsD4x Wvr0O5aezTF842sdYbPcxPy46ePdVwD/OwKpHBT4sj9uOw2CryT/yKCzYBtx9fZl3j7m 2AGvY5iOKgmtClZL0uFKvEFgbK+Qsf6bVZPpxiVcMzWF3RGJ8bTa295Gfs0DmiX2xXQr zIiR4MTO7NNlSP8kLaNEd/nRyFzMrLlxy5PAYcSe84FrSSeoOCsvGOydC3Y17nizm7xO 5shFiJzQs0NoabM0bkHCP87D+rLpJMYFrudLYTBWjhrCdTpkVWpH5DyKB//ZnEA6lMt4 tTWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731097446; x=1731702246; 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=WXILrBeBuixnjykDOnFBzIWDX7dpjLHEipvuPBeIMt4=; b=ZOvjvHyXHMp0QdQIpMnro43+aS2QIpRmHW94KLG/0sGM0mftwymOkq3sSg2YGQcNNT G0z2C7D6YdVqpzken2vHvLYOsINQEt2diXzeqa7q4EYEDqghMHr5JXj6bnkhfcHgCGFh cQZQ2hlh0TypI2BSpeGrWk7fiGW1MDcuS/ZJXIV+ToR/NdBbW6rE2NXh2ataSRjP91x4 jgxz0Da2BMR31LNKaK0UfxKOUBgG+hDy3JzcWpcaiY3OnfslQFe1ebjSnAsK0K3ewYOW hyV7bUhE+LjoB6xR+O3OLGeKx4GIxqvjDq1mvR5WKhPuDk4eh4GSvGPapvQwjzXl595Q hhmg== X-Forwarded-Encrypted: i=1; AJvYcCXnXIWB0BH1vtZY31rrzdjY8y2thfMagxIx6J4R9kFwOt5hKmj23Btalg9sYUjjOp+239EZtrljXQ==@kvack.org X-Gm-Message-State: AOJu0YxiRomzWRQKEivzEcvezf7SgPRDQ24jjVP1utMHmyXO435q2VB7 zTUg5ngrUeyuVoheP99G1S8mAiFGIZ4yl+6oeQs1UPkDZ93qpP5oSyO3YKwMNIkySBoU7RfCbcL 0iixAcryHg2Ql/bxJMfCbMfxItv0eDjwM2V3l X-Google-Smtp-Source: AGHT+IFtVP27mLjrCefU+cBNzDFOK75ljBCTtQMT80A+RFCEJ1lgmg9hWpxu5Kj7hCQvkfsXVxtq5sko7EhVIYtxm6o= X-Received: by 2002:a05:6214:44a1:b0:6d3:4453:6a48 with SMTP id 6a1803df08f44-6d39e507f62mr70771516d6.13.1731097446291; Fri, 08 Nov 2024 12:24:06 -0800 (PST) MIME-Version: 1.0 References: <20241106192105.6731-1-kanchana.p.sridhar@intel.com> <20241106192105.6731-11-kanchana.p.sridhar@intel.com> In-Reply-To: <20241106192105.6731-11-kanchana.p.sridhar@intel.com> From: Yosry Ahmed Date: Fri, 8 Nov 2024 12:23:29 -0800 Message-ID: Subject: Re: [PATCH v3 10/13] mm: zswap: Add a per-cpu "acomp_batch_ctx" to struct zswap_pool. 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, wajdi.k.feghali@intel.com, vinodh.gopal@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 743F9A001C X-Stat-Signature: z3b66thiwbtmsdzqmdy8zdaoanfaa4rk X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1731097409-304929 X-HE-Meta: U2FsdGVkX189T3KAq/h/0d7mBY8Ehv+xTaCzq1nHM7vnXEVIHe+KIU5zeFBduIK2DCyrXFJXyVSKNv5+uXrplfznlW1Bf4GqiTHQC3gPhudCW+Hwo2TnAOkc3/J7Gt3RP+Z4uO9hLG6vKiJAbeyjCvnhtMTP8AW6gGMcKYbBMekVtGua8rdglmG6PMtPlvxD0Qrolfd1XOA/iHggrQBl9sUxdKzhQv4iO+nbKnhtSJl6HlgTyLRH1qznaAVuhMpGbUAPGB7oqfJHPyJiezlOXLNtq3maGMTGC+q57bYxFKkwZr35zzyogUCgwMoANRmzyk4B/mdI90LEKuOoy+FNzUEPQ/3fDyNkHRVwjcvIZoU5eqOoWXomaJ4JVxmzAkrXSJJ/Xm8JSak7MCLShl9h+RQ/9noyC1UizUNf747Yn9Fhku0xj3+v+RtgLFgpwRFBGqoknNfp3eIEUV97+IBhKEA1HFRAjH/j+O/XL78YU3KuZE9ps+RY47eTzIZ/HdMVV/2vkAuuHzNiYWGxB/IvByislzORmKFBD2ZoXwi/aJvdB1UHWuM5ZvMfJbJPbmmeYgZ+zJrTopILQwvxaAx1bgyICnXdOirS6RVNkyAmr6XEC2JM2ooczvTmzIuBD5I5BMRckVCibAto1+oAcv2oA17KPUyEjSfl7V6HbDEb8nb1OI2gPRFbBZt99/OYyzY4ZsqYpyKKpDP3pasvHM6VaPPuk6rOhM3xls9PiaYzDNU5W7aGlwmTevHxkhiQ48k6FzYi+ds2+l530uxhxH0ZZSc0UVPjBY+FQr3LZe8ozw+9s8T3Akcjs8mW9AhYKfXzyNf2K1vcGsVFAQ6jcyt+rbS8cz3SX1dR0UbPD+v8XRdhSr9jsUDvB0JY0nVAo0BDHFXnhJbHAXFgHADzf3kSRbRyhWtd/JpsTtW17IRtRp/bIKVKRR1zizf3oThcAb1ZwbawFEfipFEq9HOWq1x GBSzmyqB 0TZLySWpsLjx578A7oEK2DNkqDJrynykr6tI1TcVQFAwBhu1RlLYp6fYPsCT0WaR9uhZfeXDkDu3JE+wZlC6nOM4tJMqIjOMdwYjRf3iPiAdUwsCDq1a8OK7O2LX4do7IC6WvJct85r5VA3xwbKFg7e1/Fbr2/6Z602gCNV1Ao1evYbZxS3V9FbWIC728Sr7WwHHb1mYESrTa0LSVN+9DUkwSfn7IvOvAm801RYBL7UMsNNoZDfIPUasBOHgbkpWwb/6TD01W9zyrneNfpKfuImokbQW4kXnfHghy 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 Wed, Nov 6, 2024 at 11:21=E2=80=AFAM Kanchana P Sridhar wrote: > > This patch adds a separate per-cpu batching acomp context "acomp_batch_ct= x" > to the zswap_pool. The per-cpu acomp_batch_ctx pointer is allocated at po= ol > creation time, but no per-cpu resources are allocated for it. > > The idea is to not incur the memory footprint cost of multiple acomp_reqs > and buffers in the existing "acomp_ctx" for cases where compress batching > is not possible; for instance, with software compressor algorithms, on > systems without IAA, on systems with IAA that want to run the existing > non-batching implementation of zswap_store() of large folios. > > By creating a separate acomp_batch_ctx, we have the ability to allocate > additional memory per-cpu only if the zswap compressor supports batching, > and if the user wants to enable the use of compress batching in > zswap_store() to improve swapout performance of large folios. > > Suggested-by: Yosry Ahmed This isn't needed if the sysctl is removed and we just allocate the number of buffers during pool initialization, right? Same for the next patch. > Signed-off-by: Kanchana P Sridhar > --- > mm/zswap.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index 02e031122fdf..80a928cf0f7e 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -160,6 +160,7 @@ struct crypto_acomp_ctx { > struct zswap_pool { > struct zpool *zpool; > struct crypto_acomp_ctx __percpu *acomp_ctx; > + struct crypto_acomp_ctx __percpu *acomp_batch_ctx; > struct percpu_ref ref; > struct list_head list; > struct work_struct release_work; > @@ -287,10 +288,14 @@ static struct zswap_pool *zswap_pool_create(char *t= ype, char *compressor) > > pool->acomp_ctx =3D alloc_percpu(*pool->acomp_ctx); > if (!pool->acomp_ctx) { > - pr_err("percpu alloc failed\n"); > + pr_err("percpu acomp_ctx alloc failed\n"); > goto error; > } > > + pool->acomp_batch_ctx =3D alloc_percpu(*pool->acomp_batch_ctx); > + if (!pool->acomp_batch_ctx) > + pr_err("percpu acomp_batch_ctx alloc failed\n"); > + > ret =3D cpuhp_state_add_instance(CPUHP_MM_ZSWP_POOL_PREPARE, > &pool->node); > if (ret) > @@ -312,6 +317,8 @@ static struct zswap_pool *zswap_pool_create(char *typ= e, char *compressor) > ref_fail: > cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, &pool->no= de); > error: > + if (pool->acomp_batch_ctx) > + free_percpu(pool->acomp_batch_ctx); > if (pool->acomp_ctx) > free_percpu(pool->acomp_ctx); > if (pool->zpool) > @@ -368,6 +375,8 @@ static void zswap_pool_destroy(struct zswap_pool *poo= l) > > cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, &pool->no= de); > free_percpu(pool->acomp_ctx); > + if (pool->acomp_batch_ctx) > + free_percpu(pool->acomp_batch_ctx); > > zpool_destroy_pool(pool->zpool); > kfree(pool); > @@ -930,6 +939,11 @@ static int zswap_cpu_comp_prepare(unsigned int cpu, = struct hlist_node *node) > struct zswap_pool *pool =3D hlist_entry(node, struct zswap_pool, = node); > struct crypto_acomp_ctx *acomp_ctx; > > + if (pool->acomp_batch_ctx) { > + acomp_ctx =3D per_cpu_ptr(pool->acomp_batch_ctx, cpu); > + acomp_ctx->nr_reqs =3D 0; > + } > + > acomp_ctx =3D per_cpu_ptr(pool->acomp_ctx, cpu); > return zswap_create_acomp_ctx(cpu, acomp_ctx, pool->tfm_name, 1); > } > @@ -939,6 +953,12 @@ static int zswap_cpu_comp_dead(unsigned int cpu, str= uct hlist_node *node) > struct zswap_pool *pool =3D hlist_entry(node, struct zswap_pool, = node); > struct crypto_acomp_ctx *acomp_ctx; > > + if (pool->acomp_batch_ctx) { > + acomp_ctx =3D per_cpu_ptr(pool->acomp_batch_ctx, cpu); > + if (!IS_ERR_OR_NULL(acomp_ctx) && (acomp_ctx->nr_reqs > 0= )) > + zswap_delete_acomp_ctx(acomp_ctx); > + } > + > acomp_ctx =3D per_cpu_ptr(pool->acomp_ctx, cpu); > zswap_delete_acomp_ctx(acomp_ctx); > > -- > 2.27.0 >