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 DA686C4332F for ; Thu, 14 Dec 2023 13:32:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 524C48D00B9; Thu, 14 Dec 2023 08:32:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4D45A8D00B1; Thu, 14 Dec 2023 08:32:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 39C418D00B9; Thu, 14 Dec 2023 08:32:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2A1958D00B1 for ; Thu, 14 Dec 2023 08:32:45 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 00068160C6E for ; Thu, 14 Dec 2023 13:32:44 +0000 (UTC) X-FDA: 81565513848.27.8B24A22 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by imf20.hostedemail.com (Postfix) with ESMTP id 1D5D21C0020 for ; Thu, 14 Dec 2023 13:32:42 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IzujNsLG; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.47 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=1702560763; 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=jim/lOntV9iDTSpGOJDnAOIgsuHO8H2tmMhky2DuBN8=; b=1peDSyMEQlKWHCjgLhmJURJxqNTGuIZs7+3JJ2YLBZ/c/LFd74OH2zT0v0VQUvtux59NsT pnoCnhL7qXFlatG8MArn0rXoQP2hLGlDwgAikbP9Lhphco8a6KZpmXCESLcMJxCzI0VE5k QEDYJWSTEvKXIZevJu6vH2rk7Pqt79M= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=IzujNsLG; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.47 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702560763; a=rsa-sha256; cv=none; b=PiQd1JY68E5NMOeZaVC3TH40ecoyWnVN2TZXcIq54eTQQUfcWj+iT60MiuIMyXzgJcE2oh uqU4eA2KS0iNphAKaUVDGAvhnmN2AUzEPsm1W243BsHfPT6gYtEh7uapg0C0WYXpxPEiRZ R756F3I6nFlxDehgIlbhDsQJyS6K5iw= Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-50e0daa57b3so2340032e87.3 for ; Thu, 14 Dec 2023 05:32:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702560761; x=1703165561; 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=jim/lOntV9iDTSpGOJDnAOIgsuHO8H2tmMhky2DuBN8=; b=IzujNsLG7PTxGwqMfDAbRAoNCSVIYi6b/69L8Bm7cqVEPOXW6j7RZUaWHexsW23CQU LscvAcsQ/rA1Wfr9Nwi0J4zgReWHUMPii2FXqeW3dYLI3kmzY5DyoKxhulFAS8/9eo5r 8+SMGB/Iwq5fs5sC6it/bAI0x/Jido/CTb95fXHcNxijCqAcPNX3w8bk8J2uO+z7dRky 3ypvwqMLTGHnoAE0w4bZQSvC4Zq/QM10WhKtmoIZmoM9MSDV1K9LH8WyLX8/7fP4AXr+ 40jU3fkAtuaN391AHp5BaDfrKQHmMFWntK3teJY2t2BL1j775XYdrNIbdLQm/uebFVfg uN3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702560761; x=1703165561; 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=jim/lOntV9iDTSpGOJDnAOIgsuHO8H2tmMhky2DuBN8=; b=EKZMJofAhM5jORCeB/4xlifinOmmWSuTQejWTNgFiEZrADeZeBT7tQfXBPy61r4Tbx 0nSih1HPg83oPHsvmb/xfVh7sGZOUfK3WcXLq8FgBzZv5M21qCwkaaX+k/iFghXmXOme FEW+dsLqlOaEE9AN2nM+ADVlFip/6/Pzl3/UOKiI/w44XAf0LOEY07+ChZ/PW78pKFMG x/ucKR5V7TMCxHvFCUWVb0os2/UiRORLtc5JUCtt2ShacZ7nq2usxvlRT3xTgLwwi8bs Codvd9O+Yo0+PFWAi8Cw3y08B65Z/cRTGCoamI3M+ygBevrRotB73fJ9unDMoMmIrWJ9 Ac6w== X-Gm-Message-State: AOJu0Yzj9r9nbaPnQSOCTgfoT7lYUVRgVTSduCfFJ54nWEFXKgH2nnyO pOeasrL+KFIjxL8Yr9T+OsezQrK4BfUTmWW5LVAJYg== X-Google-Smtp-Source: AGHT+IEJvQHNgucfsmf6sjlHsvCkB/CwWba34eRci4n9RZX+1e/kdUJv1PKf7SuYlqg2XtH8BzhZEbK2P17AIyVj1EE= X-Received: by 2002:a19:644a:0:b0:50b:f47d:770f with SMTP id b10-20020a19644a000000b0050bf47d770fmr2955552lfj.0.1702560761036; Thu, 14 Dec 2023 05:32:41 -0800 (PST) MIME-Version: 1.0 References: <20231213-zswap-dstmem-v1-0-896763369d04@bytedance.com> <20231213-zswap-dstmem-v1-1-896763369d04@bytedance.com> <8f80fe3e-a8c7-463d-896b-99575c362839@bytedance.com> In-Reply-To: <8f80fe3e-a8c7-463d-896b-99575c362839@bytedance.com> From: Yosry Ahmed Date: Thu, 14 Dec 2023 05:32:03 -0800 Message-ID: Subject: Re: [PATCH 1/5] mm/zswap: reuse dstmem when decompress To: Chengming Zhou Cc: Andrew Morton , Nhat Pham , Chris Li , Johannes Weiner , Seth Jennings , Dan Streetman , Vitaly Wool , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 1D5D21C0020 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: kos1eb3e7ergkb1qmt6nb1iwroakdgkw X-HE-Tag: 1702560762-662993 X-HE-Meta: U2FsdGVkX1+aEQEU8UnMToEivsg9/Ib1NMQwlrm2o8c3TsYuMu0DQ1irXolTyuE6NZ3/dvpCVo4v5zum30SFq1JEpTzfV6cgJke1JvbeTpgP5W4BOvFYkVLmU5cmXGirjpZrPNyXzDcENhhmZUvWZCA5QJc3ZmLjkHvdDrGwHw29GxDMsea810MOuH1yonH5/lMII4p8S5SAaPGc/hCBCFa57zSAMcTLfDkA4pUTTGBLfZ6OOKMZKA/QedNf7PN7elo+5Ht+6UmMe9mozX7YTCzdxK6LiaTGwoYmYzF/rd6TZdry49k/ur0yShGYeIKWb4+S01i8N+FEKQLxZdLxac/qw56f44ANsBRr0V5V7JSxPRcV5fV1fCzgvZFhJ2L8r9/jBttYBOaMYmxPg617UiIBNbwVSiNWf03kt7IrxX6Ec4/KHGQY+e+1rN9EAsKeNqQlKojM7IOMmLAh6Ja/K3mRpIW0ev+fVXLAmKKPRf7Mh+Wgogvn6PpYWe2OZKLZvdgjvw+euGd+rHt4E7po3f78WzlGbnCnZP/0EkVYNB/diZwnjg8t3P8z218dYt6q5sdqjPeAUGDF1VJUoxkHNZ9zfGde2gRwkSD9Iw9aSHoNoCkeNyayXd3q+CtkTrTTja4upbzLItdYhMnWgujJnqiuDLs8L1wLL9hq8TOhiOcXZBE2s5gxE4YAqBpXwXRAII/+dhlJSOTzypxG47utGcZgKWix8486RgsSWfbLv1IU+VxlSYQPcaVQV+rMPWbOKZkHIbFdHnkjEDcmWjtqi5NajGWQZlIXUliqwg7QyR6YIrjFvSnk3aEceC8VTR70TaLmre0Ok8qX5t4/4AUk9bu6W1C6K828Yyr2EZRSAR4Fb7yCZ/wXV1h2rw1lkgb8eCjHwbZWQv0tsYjCnIJn/iAqe2uM5W1GOlgHlTPFAgaaC6AWHrC6JKP8EXSL8MZwmF7bdmB7Qku7P44tr6o 8mi1wvi3 EW7/h5nMve5/0qTXBrpoiXqaWNJXFC8Cm/YEWISUXxMwnIHcNUMkKAkoRwO5KMdeJrC7pkStt0oHcaQWU4/uiuI51UMtS1bmpU9ZWoAk7LCJFyQR6l53DLlJM5IscJLsd1LR0Ru3BE31Y+lcsrzxNOKa0qVpdhI9jMZQ5q804XwThXwnYCBqD8O1F16WucqjiVsGSmW62tjtkIN8SbOaQLkn6imb6H7fq6AOW0qySmD9ObBYRC5wZnD+fIcdhRRrDPJkR1zLqmraQFVOefkCl8R+PRJzKktQ5Hjn9fZt4/Hr8LqqxhGgQPN1olg== 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, Dec 14, 2023 at 5:29=E2=80=AFAM Chengming Zhou wrote: > > On 2023/12/14 07:24, Yosry Ahmed wrote: > > On Tue, Dec 12, 2023 at 8:18=E2=80=AFPM Chengming Zhou > > wrote: > >> > >> In the !zpool_can_sleep_mapped() case such as zsmalloc, we need to fir= st > >> copy the entry->handle memory to a temporary memory, which is allocate= d > >> using kmalloc. > >> > >> Obviously we can reuse the per-compressor dstmem to avoid allocating > >> every time, since it's percpu-compressor and protected in mutex. > >> > >> Signed-off-by: Chengming Zhou > >> Reviewed-by: Nhat Pham > >> --- > >> mm/zswap.c | 29 +++++++++-------------------- > >> 1 file changed, 9 insertions(+), 20 deletions(-) > >> > >> diff --git a/mm/zswap.c b/mm/zswap.c > >> index 7ee54a3d8281..edb8b45ed5a1 100644 > >> --- a/mm/zswap.c > >> +++ b/mm/zswap.c > >> @@ -1772,9 +1772,9 @@ bool zswap_load(struct folio *folio) > >> struct zswap_entry *entry; > >> struct scatterlist input, output; > >> struct crypto_acomp_ctx *acomp_ctx; > >> - u8 *src, *dst, *tmp; > >> + unsigned int dlen =3D PAGE_SIZE; > >> + u8 *src, *dst; > >> struct zpool *zpool; > >> - unsigned int dlen; > >> bool ret; > >> > >> VM_WARN_ON_ONCE(!folio_test_locked(folio)); > >> @@ -1796,27 +1796,18 @@ bool zswap_load(struct folio *folio) > >> goto stats; > >> } > >> > >> - zpool =3D zswap_find_zpool(entry); > >> - if (!zpool_can_sleep_mapped(zpool)) { > >> - tmp =3D kmalloc(entry->length, GFP_KERNEL); > >> - if (!tmp) { > >> - ret =3D false; > >> - goto freeentry; > >> - } > >> - } > >> - > >> /* decompress */ > >> - dlen =3D PAGE_SIZE; > >> - src =3D zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); > >> + acomp_ctx =3D raw_cpu_ptr(entry->pool->acomp_ctx); > >> + mutex_lock(acomp_ctx->mutex); > >> > >> + zpool =3D zswap_find_zpool(entry); > >> + src =3D zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); > >> if (!zpool_can_sleep_mapped(zpool)) { > >> - memcpy(tmp, src, entry->length); > >> - src =3D tmp; > >> + memcpy(acomp_ctx->dstmem, src, entry->length); > >> + src =3D acomp_ctx->dstmem; > > > > I don't like that we are now using acomp_ctx->dstmem and > > acomp_ctx->mutex now for purposes other than what the naming suggests. > > The "mutex" name is coherent, "dstmem" depends on how we use IMHO. > Change to just "mem"? Or do you have a better name to replace? > > > > > How about removing these two fields from acomp_ctx, and directly using > > zswap_dstmem and zswap_mutex in both the load and store paths, rename > > them, and add proper comments above their definitions that they are > > for generic percpu buffering on the load and store paths? > > Yes, they are percpu memory and lock, but they are used by per acomp_ctx, > and the cpu maybe changing in the middle, so maybe better to keep them. I don't mean to remove completely. Keep them as (for example) zswap_mem and zswap_mutex global percpu variables, and not have pointers in acomp_ctx to them. Instead of using acomp_ctx->dstmem today, we directly use the global zswap_mem (same for the mutex). This makes it clear that the buffers are not owned or exclusively used by the acomp_ctx. WDYT?