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 C971FC77B7A for ; Wed, 7 Jun 2023 16:34:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 45F6C6B0074; Wed, 7 Jun 2023 12:34:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 40F996B0075; Wed, 7 Jun 2023 12:34:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D8318E0001; Wed, 7 Jun 2023 12:34:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1816D6B0074 for ; Wed, 7 Jun 2023 12:34:15 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DE0B6AEC11 for ; Wed, 7 Jun 2023 16:34:14 +0000 (UTC) X-FDA: 80876499228.16.233198B Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf02.hostedemail.com (Postfix) with ESMTP id F037780024 for ; Wed, 7 Jun 2023 16:34:12 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=UegRLrvz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 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=1686155653; 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=nST2Md/+Z3od5CZcws3W9bn9v93QD0AgAvtu6ztY8xg=; b=KwZ6zGZEOVNTLFAEIqpORMIwW50UwMZ07vK/0bOU3nY1lc3UtkESqN8EyOSWjBUycq+nYq nwy2ne/mcXE89J3bZBbimykMO2pFOi6gE9izg8n8gITBNhTfTeOI8AkBMpgkxqpYa67/HD p8DIdeSe3mAlfg48D2ezP8IoBIMg48E= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=UegRLrvz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686155653; a=rsa-sha256; cv=none; b=0Yo8Q+O8F0D8FptltRypbAqMVWm70hM6Bz9KJ3trEnCEi70PAsm9XDw4lNjOFEv2IJGuzh W/WLcWCain4vELWcNGvQtIW7pkbUNV1Qme7ADiHIJVaf20REfj35TXh+P81o7TfeO9A+wB lj1A+wkmbUvAMLiSJdAr1PT/XiGSfvc= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-973f78329e3so1234589866b.3 for ; Wed, 07 Jun 2023 09:34:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1686155651; x=1688747651; 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=nST2Md/+Z3od5CZcws3W9bn9v93QD0AgAvtu6ztY8xg=; b=UegRLrvz05yeGz6eWmz77+FqJutZvBeIx1d8R4Akm/4pOMNflRnR59fho+CdTVWuMu 4DRnzeaxtLloI8NJy0SrLVsbgAEoq3PCs7WdwcCbRZ5zeoxg8VdieX/WN2SP3qO+7qnO grQeVqgqDBajpLERfIWSVSXaNKMOtJXK5V2al4qRVbbDz7UK0yoaK9l24aXxh/u8+3Vp XXW1GPpj8vziNQ6o8hf9nVVRxxbC1tXWz1g/Mk3AOCRy6NSmMR/EoR5DPEuLBU0otqFk /2ABQI64lxmWOIH18Vt22Vz2LLBc/wA5+/k/8Gxz4DGS5XRApcgwHZ79RS1ZozpLz/nJ Jp1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686155651; x=1688747651; 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=nST2Md/+Z3od5CZcws3W9bn9v93QD0AgAvtu6ztY8xg=; b=FQO23V2tgNvNe6SRpDvAV3c7Ppwcgs0MCgQYJMFTtEw2BOGzdxArCSUI+b0bJFNQ4D lCYv65rVUIA6TePGSWPuFV2Ywr92eO2IpbL9w2IxJGVKGSCwNp+X/e2jkf6DcmVJkstp 2jj1cFWu6tqNJSC3aJMdILeCzNbIMB50JHyJxMja/cZPRcSjwiQERKTW+GxMhBuNLMba IJRkGGPHOUSRFOdWYRKYB8TAe4XLab5eMgiaRwxD6p7zUd5xbXnAWhSgzRAy1O1R8V9p Q+NigI99+IYEHrKT4K/xJ2Dl2IB/aTFtXEBieldHV+qP3+jrILiDc6fEgXrG5vOvowV8 JWxw== X-Gm-Message-State: AC+VfDwDhJk+HztCdACOig7h8faorDQH8falottn9Dx/hmaguGbk40/b fspEuHOaA50BMf9Cns0bgoKQpYIHqdjEKN/j5MByMg== X-Google-Smtp-Source: ACHHUZ4gYt05yMVISGVpEL2tDzHWc2p/ubLtT6lvjSj1dd6u9DbqiiNPYZYRZTNvR0Zwell4MBL08Y2F53E7OlUporA= X-Received: by 2002:a17:907:6e25:b0:94f:2d5f:6949 with SMTP id sd37-20020a1709076e2500b0094f2d5f6949mr6223367ejc.42.1686155651187; Wed, 07 Jun 2023 09:34:11 -0700 (PDT) MIME-Version: 1.0 References: <20230530210251.493194-1-yosryahmed@google.com> <20230607141357.GA338934@cmpxchg.org> In-Reply-To: <20230607141357.GA338934@cmpxchg.org> From: Yosry Ahmed Date: Wed, 7 Jun 2023 09:33:34 -0700 Message-ID: Subject: Re: [PATCH] mm: zswap: support exclusive loads To: Johannes Weiner Cc: Konrad Rzeszutek Wilk , Andrew Morton , Seth Jennings , Dan Streetman , Vitaly Wool , Nhat Pham , Domenico Cerasuolo , Yu Zhao , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: F037780024 X-Stat-Signature: cdbykj5q6ac8efik4itze47bucdm1r68 X-HE-Tag: 1686155652-923092 X-HE-Meta: U2FsdGVkX1/QbfFwsLgSXB5Sp9vFIquu9JtjuHjMwhPI+1IyYp6qgLq98E/B9QlbXUFiNCMY3gHldItT0T8NvFnXKhndto3T3cQ7H3IU+hj2ddL2zvTDGdGXVmFhUptGr/tS5QqXDGKHE+0O5l51lNtSi61vzjS644KHIqK6AFaGu7Hl/VjPafdQlk2cf+GKliPIBGA4FN7L6M8WdnIuut/05IVsw10IryC1zlHskhJeQoTtlrSIqYb83NwY/ZhXaxvZQXlvIoTMXrgpTfqCdRxpuKL7QEHOi/i128k4MaQQ90j4KUOp5uWQoUDAT+4ChdH8aMWAEyinhcSE0SFSRdvUIRWtiFiAQHwDHsjGqt9ChQ4xuZocu+UxzyY+3ZY3wgVSvpf2uzRPxBZQ/dr//t1GrTpg5pxNcjUA0lHRafs1RPW8DWX+ohi3QmsH0kLuU0guQiG+GdWKmaK1C4lle/rasYpTd9MAqHLo9msR8hCbySwWcBKtJglPkVcv18/3B0XDNtl4pdy8stAp/w6uDXqaF9KnBJ4KcwnoPtjy/i/tP8uO04xtoiFGtedLooR0fmq8YlId94dbP9BNllYUAMjNaDlGyow737b8dHAPeJeoJxhBuaDBS1zgb5vWj67ZILQL1hhGSg5cz79TdkYIx4BxFfaWc4bkWIwj1FOjiVCSuQs48aaGDCjhiDSv3Q/pqT4bGDseVz/mOkzRfC6s6L6sVmlvPZqbFiDyF5g+//3foPk9AM5grrMYb4pblganqmJl4QbN49E8z+Txr6wHOj8im4sCccFykF/O19SyM0HUi9i6hNkHFOSZ9pbBgs2o7DVHNaOijdqCcD1n13yJAtUv+BucnJVJWMl3GY2eZBvtzq7nOZq6UCd/R7wXP4MdF9ndHJOsJr+SU5P6pOrgkfSA/TkLjEWN/poI5/DU8XWmUASMF8Rp2mWktXJeZGgIMYoxXyql6Q5Sc+2aieA 57iYqjy+ 0hzliWq5Wxa48+ih7n4N+Pijcx91EgzrUShUPP9k0YhVOrmN8NvJsQ4gR8ChCOBYovcQRGecRXr8KlIgTL1kVQvCf9P0CuxRmvewdUQXrhq5fwsIoLmDDR3eDejqTLGwJfsmY6lRWaLEqvv88r4M0/XNXEuR2NkaFqBqWm55YWBWbTLIlqDiYRvC0UbDtiQvuahD4j5PVD5+rYZipF4PICSBNTtJMl97xMjhx92rwAGk3ghAwBnGaasmaF+1rxKhIORMBT7jAxPd5ZuIrgEhryKDkJakPB1pqZEQk9LWIaL6OIhv9oDtcHudM34Y0uMipvXsnhyXxhEjpVY0= 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: On Wed, Jun 7, 2023 at 7:13=E2=80=AFAM Johannes Weiner = wrote: > > On Tue, May 30, 2023 at 09:02:51PM +0000, Yosry Ahmed wrote: > > @@ -46,6 +46,19 @@ config ZSWAP_DEFAULT_ON > > The selection made here can be overridden by using the kernel > > command line 'zswap.enabled=3D' option. > > > > +config ZSWAP_EXCLUSIVE_LOADS > > + bool "Invalidate zswap entries when pages are loaded" > > + depends on ZSWAP > > + help > > + If selected, when a page is loaded from zswap, the zswap entry = is > > + invalidated at once, as opposed to leaving it in zswap until th= e > > + swap entry is freed. > > + > > + This avoids having two copies of the same page in memory > > + (compressed and uncompressed) after faulting in a page from zsw= ap. > > + The cost is that if the page was never dirtied and needs to be > > + swapped out again, it will be re-compressed. > > + > > choice > > prompt "Default compressor" > > depends on ZSWAP > > diff --git a/mm/frontswap.c b/mm/frontswap.c > > index 279e55b4ed87..e5d6825110f4 100644 > > --- a/mm/frontswap.c > > +++ b/mm/frontswap.c > > @@ -216,8 +216,13 @@ int __frontswap_load(struct page *page) > > > > /* Try loading from each implementation, until one succeeds. */ > > ret =3D frontswap_ops->load(type, offset, page); > > - if (ret =3D=3D 0) > > + if (ret =3D=3D 0) { > > inc_frontswap_loads(); > > + if (frontswap_ops->exclusive_loads) { > > + SetPageDirty(page); > > + __frontswap_clear(sis, offset); > > + } > > + } > > return ret; > > This would be a much more accessible feature (distro kernels, > experimenting, adapting to different workloads) if it were runtime > switchable. > > That should be possible, right? As long as frontswap and zswap are > coordinated, this can be done on a per-entry basis: > > exclusive =3D READ_ONCE(frontswap_ops->exclusive_loads); > ret =3D frontswap_ops->load(type, offset, page, exclusive); > if (ret =3D=3D 0) { > if (exclusive) { > SetPageDirty(page); > __frontswap_clear(sis, offset); > } > } Sure, I can do that. My thought was that this isn't something that someone usually wants to change at runtime, but at least for experimentation, it does make things a lot easier. I can add a zswap module parameter. I am guessing for consistency with other zswap settings and for convenience, I can leave the config option to set the default value with, aka CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON or something. Does this make sense?