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 CE7E1C02192 for ; Thu, 6 Feb 2025 02:14:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0AFE66B007B; Wed, 5 Feb 2025 21:14:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 060B76B0082; Wed, 5 Feb 2025 21:14:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E6AC46B0083; Wed, 5 Feb 2025 21:14:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C8B706B007B for ; Wed, 5 Feb 2025 21:14:49 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 519E1B1ACD for ; Thu, 6 Feb 2025 02:14:49 +0000 (UTC) X-FDA: 83087901498.10.B6B5B6B Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) by imf30.hostedemail.com (Postfix) with ESMTP id 596D180008 for ; Thu, 6 Feb 2025 02:14:47 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M1276IpD; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738808087; 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=Sl7OpDreIMnTrM+4bCT93LEcjwLpBqwnjhWThvaWZWw=; b=J+TbY5zBqNfWjuEcSN3t6RC6jfG2UZMDVpE9SUALIOp8pgdPoOYOYaia1rXmoNfxoSHqPS q9Wg9g7AE3ycwM0U0DfF4BICSIKTUdYFqApqXEoQeguiCzMsmwqb6fmw8JbtqFSRq9HTNZ QIQLGY731DT8gaoWpZ/XRfM1VtIleSA= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=M1276IpD; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738808087; a=rsa-sha256; cv=none; b=RjOpXRp46VnGJb2oGgRmemB52diYJJQEtiG60VDwIlvA8dQHwwsX7Gqd0UHXeZIEesGhPV MVuPAsV4cExUBU8DuezEk/gA3aqR4UPu7Y1FW/zDUc8N62yafgzuo+1gpZe9cVVFbltV1f kDJMBCjtftl46LtGFo4wA6lYbQuV8WE= Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-306007227d3so4099761fa.0 for ; Wed, 05 Feb 2025 18:14:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738808085; x=1739412885; 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=Sl7OpDreIMnTrM+4bCT93LEcjwLpBqwnjhWThvaWZWw=; b=M1276IpDShQbFCt1fs88lGWR3Aa4XVlA3mnQP/41PAfeA3/D9AAgj9D29pXq/9mLBc d2eZc3yKbVuY3jLwNJF0IpgWR2vGNwD0XSPzwk2jLDRib9e8roN3fgfeeWnRisBrkqCa vL6V4DoYJT1HeKMraMyjcyGm+k/VNXjD2PduK646PfcwpsZvl+sUObOJr9qKN050sBIt sLITbPESkfprkaIQo2XfRqO2BKVr8VwXtvqMN7uL0QVd/asNU97iqBFKWKuMfgatzgKN arbwWqguWC2lMltGjBtDVbzgHTfamzSHdixLNRDf5D+zjIb1loPgrnauzFgbYUs3T1qN uz1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738808085; x=1739412885; 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=Sl7OpDreIMnTrM+4bCT93LEcjwLpBqwnjhWThvaWZWw=; b=l3baG/4BcolZ5ORrzawedcDRAKIIrfMKyG+sJxQzOTVpXspIsa3vIcTNQ+Q+1RVQBA e5OIlXfEpd/K4GbY0Iiov3+QOL/scZ8d0zaQyd98uXKU+zsX1bwPXJsFT4/fJKrB0/kx ALRMppon/fZn6JPxdhgXjWWFEFP2SbUEpYRkIwYqp63J1W6U/Uyfy82G+bfU58U9OeVw VDX5a1f841ai40jjua+y16jdfyLVqfJ4onPYEX2JPWnIfqqcPgg7qLZjAFlREOYZp2kU EQdsX+NxBd7usd0uHQNPre7G1FLRtIuD6nygklraARiydHHcU4NgI7riijbOfacswhDj ZLbA== X-Forwarded-Encrypted: i=1; AJvYcCUl9k/9FBTK7Xghj+UT/VsHCQ4ahv8EeKMmoZZKaPB77lhlnOfn5F8xN/basEvcAb0XYAEq8KNJ+Q==@kvack.org X-Gm-Message-State: AOJu0YyAAATPpvjbXbTbyPnw44LkUl8N26SNFs1VoKxbRfagkwU0Auqm h2A2UfiwZa3jcHzAFylNFMtuO1RMAjgdKH4SmwWRPUwBrLbzOtnYV/epfv0jpbaSdmJK0Ochict w45jnrPpb+7ljGvF9DTLy71bbV5Y= X-Gm-Gg: ASbGncstLwcFKe9R9gsVN43gpeQK5FYPQnHZ1w28tjC6Vllku44H8XGLI5Ha6Xu5cgE kmEm62/OGpLhmYoA+/ljnyMK4G0lRSNl+sgtKfxuYdJzVFSyGaWPh8rN7ySNVKBI9UGD2HgDB X-Google-Smtp-Source: AGHT+IFzLRQCAD+8FQBF4AO0N4iNeN8l+6jugU/REtt6RJZGj0165s8OvgtOVActhwGVPx4CogH2IxLjEEaGykbWcDA= X-Received: by 2002:a2e:ab0a:0:b0:300:33b1:f0c4 with SMTP id 38308e7fff4ca-307cf307693mr20171301fa.11.1738808085163; Wed, 05 Feb 2025 18:14:45 -0800 (PST) MIME-Version: 1.0 References: <20250205092721.9395-1-bhe@redhat.com> <20250205092721.9395-5-bhe@redhat.com> In-Reply-To: From: Kairui Song Date: Thu, 6 Feb 2025 10:14:28 +0800 X-Gm-Features: AWEUYZmaTaHRs6ZOkVq_GXPR-0Sk_ZBvGZue39Bp6HjBZqbdZy6BtGM27a5ThMY Message-ID: Subject: Re: [PATCH 04/12] mm/swap: skip scanning cluster range if it's empty cluster To: Baoquan He Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, chrisl@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 596D180008 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: fgsbrxadomizd1e4thcduhmw568x7ar7 X-HE-Tag: 1738808087-164039 X-HE-Meta: U2FsdGVkX1+kQRU6fRWftvB2CbV7wh8vixPp2qv95JfZXSa500eeID3Z89188UiyqjIh+232y3r66RLHy0LZcjx4BoiF18qQ5xhKurgIX50E0IWunHsc1pvK+4+UxR5xKMtkHjWm2BWO/A3WIirB4HQ2myeyNOPQeCCym689Ur/qrul4PnP08KfIrZg+VSfN+I+SZYclFXs438+cs3k2ycZG3elHFZfoxpMi8b47Efi3Z5QyTxapOKoh44Jp8JF1rYlPmMiiZTPNCAjDY8JF9DBYWaXClie/CSszdHeYamSRvIf8BTDYi6KgaiiokybqBTYDYhL/tJ7Ki179pP+zKxKHDbx33MtT9A2qwIUnnKbHvhUtgdMsVlmE24ThnK2HpPT74CxP5/hhdrvy2wFEJGURL5XUp00U2QharEi6/iP8nfzWMd9iNF7nCA5Mp1k+HWtMm1yg/8Jmg+4gG4W47VlQPFiaqchdO8AuTJLhIkCNC/+z/R/iS2h2vsIRyLGyx7yYvpKPPMZvRNIK35grJhj9oVxmqA2oL2zz6Fb+3HjP0t/JlTOpt828X+R5Fwt90t8mwB9dT0Ok/8olL/SZoiTi8uoS/e7XSe3slipztqSpLTUj3s9J6JxwqgSt8RFzB/k1rApaFU7beWEhUTvFVD2NZcq2gV4iH3+wqWavEeYp9860QK65F7omUrg1ItHJdxLCYy+14ESiaM17E7KKRkj9+xsBD1MVWeimMX7stNDgyZQYlBZoH0WC1YxqM64waDd7RiPyF8+UNQf7jqqbAudo8ZLw+GrvnmZtJbbFzOHUlhlDvyGbrMSu15kkJ6jurFFqeJgkcoMwI+6/uqsaEudKKA/RvdYLXH82PmeTNW43SoFfRKrQBckNrjkL7EEIrWmiN3CBfYes1ltk1nFSX/aFIt6OC6qi3sXRWcXLh7BzBd8WJxo13eTNW7MbXsu6aiqoUcEvgWZxriNW+LI uh5cYhOT VvvHGhhJYiYJUyfwsuzfBHlaDqudHC6iBnEgyZaUNup4cSGB+rzoNjUpuwmKfAQmOqy1I4SIlW3l1G58CVnWbPGRBb7CzVPF9kF81eTr+OFvQoal+w07KxnS5bMmq4xc39PCvzBAQk6JBvSyp+8rInCmETBHQ83ub19RdIVPFNGPtxCp3cKJhJ9W5HnwlOc7mKrG5aMCM0RoniUhkSSEIa6L8cHq+3xFfmyUM5GgDbeD7ojMhozNHL2RDxm5qsktyJL9/IAJFwKahIfh++GJzESp4kttyyoJTGLzaLtFB3TC9LJ4zYL2shT2p6pdY9Uu+l6tXORYK9eyGumyFMGntWtulcg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.006004, 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, Feb 6, 2025 at 9:41=E2=80=AFAM Baoquan He wrote: > > On 02/06/25 at 01:07am, Kairui Song wrote: > > On Wed, Feb 5, 2025 at 5:27=E2=80=AFPM Baoquan He wrot= e: > > > > > > Since ci->lock has been taken when isolating cluster from > > > si->free_clusters or taking si->percpu_cluster->next[order], > > > it's unnecessary to scan and check the cluster range availability > > > if i'ts empty cluster, and this can accelerate the huge page > > > swapping. > > > > > > Signed-off-by: Baoquan He > > > --- > > > mm/swapfile.c | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/mm/swapfile.c b/mm/swapfile.c > > > index 9c9a4ec6d4c6..61efde853eea 100644 > > > --- a/mm/swapfile.c > > > +++ b/mm/swapfile.c > > > @@ -729,6 +729,9 @@ static bool cluster_scan_range(struct swap_info_s= truct *si, > > > unsigned long offset, end =3D start + nr_pages; > > > unsigned char *map =3D si->swap_map; > > > > > > + if (cluster_is_empty(ci)) > > > + return true; > > > + > > > > Hi Baoquan, > > > > Thanks for the series. > > Thanks for your reviewing. > > > > > Most commits are looking great, but this one is a bit questionable. > > cluster_scan_range is only called by alloc_swap_scan_cluster, and it > > already checks if the cluster has enough empty slots to use, so this > > might be redundant. > > Hmm, maybe no. Assume we want to allocate 2M space on system with 4K > page size. Even if a empty cluster is taken into consideration, > cluster_scan_range() will loop 512 times to check if each slot is > available. That for sure is not necessary in the case, while the added > empty cluster checking is very cheap. > > > > > It is possible that cluster_scan_range sees an empty cluster if the > > cluster lock was dropped for reclaiming HAS_CACHE, but the chance > > should be extremely low, that this might be a negative optimization. > > It may be not like that. If it's empty cluster, the added checking will > return directly. Then 'need_reclaim' is kept false, there's no chance to > drop cluster lock to do reclaiming for HAS_CACHE. Means for empty > cluster scanning, the ci->lock is kept held. Not sure if I missed > anything. Ah, right, sorry, I just understood your code wrongly. This makes sense to me now. > > Thanks > Baoquan >