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 AF55FD0EE20 for ; Fri, 11 Oct 2024 18:28:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4BE376B00AD; Fri, 11 Oct 2024 14:28:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 46DFE6B00AE; Fri, 11 Oct 2024 14:28:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 335CE6B00B1; Fri, 11 Oct 2024 14:28:41 -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 1307A6B00AD for ; Fri, 11 Oct 2024 14:28:41 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 146A2A0A10 for ; Fri, 11 Oct 2024 18:28:32 +0000 (UTC) X-FDA: 82662157158.06.568CB16 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) by imf15.hostedemail.com (Postfix) with ESMTP id ED66CA0004 for ; Fri, 11 Oct 2024 18:28:35 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Qn9L9GkH; spf=pass (imf15.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.180 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728671248; 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=S5TP3pWed8mCMbT6UNBmabqJdMAQFYc90u2/dTq3ojo=; b=UynCF7qv04dNuiaMtV/3pkPiS87bBSWdedSDt/DrGO7ZEyROpAD6WDCZsYitrrtok9iFcR pjsS93ffhdDWbZ7nalyrupq8qh/eO2ASDYVPJjek9AnNd4+hU0V9g/vL/8o4AbALb/mLjG flkK9nH52dwAsY25rC/7aao8O0ROVSc= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Qn9L9GkH; spf=pass (imf15.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.180 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728671248; a=rsa-sha256; cv=none; b=IXDtGtEhhhovmLay2d78WzcdP/FxeYGUqUsMYgkIVckV8VasKUDfRENUWwz9vHPcuxj/t9 hUss7/MnjJ7hNgMCUMq36YIlAEccF9cTq95a92PwZB7fIzcxI/U+u0HT37LEuy2KXaLTUr 8XBkjf6yj1siPfYaR0///5VKS94YvSM= Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-7b115d0d7f8so155836785a.0 for ; Fri, 11 Oct 2024 11:28:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1728671317; x=1729276117; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=S5TP3pWed8mCMbT6UNBmabqJdMAQFYc90u2/dTq3ojo=; b=Qn9L9GkHJI7/lDyod2EMg2/NH8IOTULRA58tyKhdlTKzOJdjbnnhVJOeEETMj98ACK 8QbM4l/TERgeK9FtkBMMkOU4FEISrufAdieeIUnadhpnFeUyCWUwN5OtFhJ622zD/hTZ vq92uTESqwQywmullVGUUpHy8RUYvHOPUquV4Wr/m1s+RtbRnMxJFeOfgRZQ0Up/jW1p oKB/3z4QRI0f5afxB74jIvo8VpBKvEAuCtqiAk90woCNcRQtlV8R6PSFQm0MV871Y9jd auSlLFSHFJXwA/WFNguj6DF13PMT/lZGnH2eSAIAHwiWV/hxzESSkpUe8Mk08zCJXLiq 7LNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728671317; x=1729276117; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S5TP3pWed8mCMbT6UNBmabqJdMAQFYc90u2/dTq3ojo=; b=sJtDP5IH7C/n7+eY3Mo7EivG1exdw02Bc9zopbKXDiJ42YlkK0lXK2krP86DRCvOcu NjGrKbP7fxb2Mpc9fHbZOVnNHz0bvsoeqwkJhiG9EgLmUdgDzpOVnQcHjrczFnJ3JJyd AsuOq7UWhgkftnRlL2+G9/LlMR+9plM5jhD+zioIi6KOCi1+jHkqXeQ9aWh0QiUZOoi0 /wwb65dUNmdbEuraVRkdzbhgMlL4cNoCykpyGFRMo6GLbGYIgiBxiH9tRfuUFytbs8CX yFjH9N2Ca4UylNF6LN01XhXPEE6lz7194XdNifVA4nubMGZQoSkK4y4LDbKgqDsbTCWp A7Bw== X-Forwarded-Encrypted: i=1; AJvYcCV/gsVn5b18AXDrngeRs3gPDYDcb3rPGber/id5ongR8Lo7L4D470a1MWhVB4kG95l/36C7yX+TAA==@kvack.org X-Gm-Message-State: AOJu0YwTB2lwqgQjdkhAZkshEK46NE/SRFiRL/u0BHeCZaPwhrhivNef MhwAGDX37Zq6UOhvYXuVa5ECbrIJV1R8pnIbHcAahcLxH3ekMAK8IwQt67ZxLRw= X-Google-Smtp-Source: AGHT+IHOy2os4AygFCj/si9mO5WDycK903UcjlcAD35+buWA3h7q1akh/to8orx4kFmKiivr7kOhDQ== X-Received: by 2002:a05:620a:46aa:b0:7a9:a389:c12e with SMTP id af79cd13be357-7b1124c81dbmr1305699285a.16.1728671317537; Fri, 11 Oct 2024 11:28:37 -0700 (PDT) Received: from localhost ([2603:7000:c01:2716:da5e:d3ff:fee7:26e7]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7b1148c7e54sm154774185a.18.2024.10.11.11.28.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Oct 2024 11:28:36 -0700 (PDT) Date: Fri, 11 Oct 2024 14:28:31 -0400 From: Johannes Weiner To: Yosry Ahmed Cc: Kairui Song , linux-mm@kvack.org, Andrew Morton , Nhat Pham , Chengming Zhou , Chris Li , Barry Song , "Huang, Ying" , linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/zswap: avoid touching XArray for unnecessary invalidation Message-ID: <20241011182831.GC351101@cmpxchg.org> References: <20241011171950.62684-1-ryncsn@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: ED66CA0004 X-Stat-Signature: h7jutqiq9qc7grcda8a3xixeeqm7ggb9 X-HE-Tag: 1728671315-861450 X-HE-Meta: U2FsdGVkX1/WoXuvr+ssxCUnZF5ZNKiFhSV/iGVwSgrK3d2zRmwOeV0+QWw47fREAbgY7+rH5JWJLZ6cu1UFbfioAKHcjWngxlIxSIceWA7wnykpTtzKU33prREZcUr+wojqtFNoXbo7UaUsJPZzK+qQbMntmlFsVdp0/7yamoJgdDTxjrq/AM4ir62eg90MtQOE9HbqKYxFqFpwd7QqxsV/6WyAk3aR2Uqs1SH8lkrljsJUZJIUit0pD2qRCeKUkGRW7NWMksPnS/vIktRtv2S+QXt1o7JIeOyTJrJHEMGKAxvPPHF5xoFlAgwC3s7iE0XxI8Gk4TXfIkUZFadK9YVMRO9pe/FiuFNbxHfyHtfWuJgPZsaMK2lK8cn8FJ579SS4hiHc1O7gqYHJLqCmMaWaAVfkvBacNo90C0BzJ8l/5nD0wnC/Iwbaebyp92+x+G2VTK0zsZhjILakUvZPuC69Pk+8EelaNpelZjVhqi5J7OmqthQwzssu/3VcbskWnqNpE/p0ZNV5QT+UTvCht97vLDugeW9eVNf1TGmFJfRWhI9635GWlMpJOQYVHwkMX5M2Uu2aKMNFRvZVPHlchoQVIuxJszJvQ9w8OB5LRf8h1Qv3rOMixK9X0tGJtsyv8U23nb2nF1G44zOz1DWKKhAWwo/nl3N0IM5b75gv45rh8ip4y5RiwWSfAXZuQjzncPfal1xxn/nVLAANRcJW9AMoLU3FgL0FVJzAP9nLAiUzP9wIAOSp/Hwst19BBV8h97/mszWfxN8eoaHWy9bS9/c7JIE/zfUKXmHPUtRTJI/r239u6BWq62kQzGAJlTiN6XIrxdWuVYXxYLqNpUqWbk9Y6Yhbz3y0cOfeyK1QdQZgMYkNizR5sT2IxJRB26cZoPfFkm3me4jJxKFkobUVmsvK9SVZGmJgsgsUmMb49SP/77eoIlDt9O/meG5bgzvD9Yxx/qA1UoGrmPrP9iW HerbITaM nqp+sYL1lmZ9eQrzten3rGCbFbv6/XoZFyWcGYfavIFYaX0Dztf2A8Q/bPUMD8mjhAa6o0nbuH+jbZkgqr3roCpQ/WFNg4NQiE9++RcIaKDZ7W+ohwpOBPIzrMnMVvru6NdlvfY+cq5gX+jlHmG/WCskylfsc8fgH9o5W/UVuWY21De2oS65XU74KEEOe2AykdcCFtNimxYPgl3hnQE8uupvyyL660QfQOj5IXIETmhX9taitasmPpTiXxLT8FJwe7DKuunz7I8iGI8EZnbOkXMwYuo4lNW3EHt7+WBDVfu1/iTtmZpGL/MA0dUhbid0d6l4++RyXrDWCc8Pn5AHcklXQGI5e5V3ZsoPwEbM5Rr+29Bxvz7j/M7X8f/4Ov/mmVWf9Zw3kWcVx4RY93AbLVTZJm3l6hL8sZztYGS6RRNsg1wZ8TzT4KzPeicMRo4ei8S0sLxB/dkUw6m4A+6w4hLePQpcsPPOEjBuBi/Xk6GBFGPtiSIsoQTd0noKys911GpLj/MhRjZboOlHmBKBX8triiw== 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 Fri, Oct 11, 2024 at 10:53:31AM -0700, Yosry Ahmed wrote: > On Fri, Oct 11, 2024 at 10:20 AM Kairui Song wrote: > > > > From: Kairui Song > > > > zswap_invalidation simply calls xa_erase, which acquires the Xarray > > lock first, then does a look up. This has a higher overhead even if > > zswap is not used or the tree is empty. > > > > So instead, do a very lightweight xa_empty check first, if there is > > nothing to erase, don't touch the lock or the tree. Great idea! > XA_STATE(xas, ..); > > rcu_read_lock(); > entry = xas_load(&xas); > if (entry) { > xas_lock(&xas); > WARN_ON_ONCE(xas_reload(&xas) != entry); > xas_store(&xas, NULL); > xas_unlock(&xas); > } > rcu_read_unlock(); This does the optimization more reliably, and I think we should go with this version. First, swapcache is size-targeted to 50% of total swap capacity (see vm_swap_full()), and swap is rarely full. Second, entries in swapcache don't hold on to zswap copies. In combination, this means that after pressure spikes we routinely end up with many swapcache entries and only a few zswap entries. Those few zswapped entries would defeat the optimization when invalidating the many swapcached entries. So checking on a per-entry basis makes a lot of sense.