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 56E25C8303C for ; Thu, 3 Jul 2025 02:40:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C10466B00F4; Wed, 2 Jul 2025 22:40:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BC0C46B00F6; Wed, 2 Jul 2025 22:40:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A8A1C6B00F7; Wed, 2 Jul 2025 22:40:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9046C6B00F4 for ; Wed, 2 Jul 2025 22:40:18 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 404801A05FC for ; Thu, 3 Jul 2025 02:40:18 +0000 (UTC) X-FDA: 83621399316.07.E5A22F9 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf22.hostedemail.com (Postfix) with ESMTP id 824FDC0006 for ; Thu, 3 Jul 2025 02:40:16 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GvzJpriJ; spf=pass (imf22.hostedemail.com: domain of jiahao.kernel@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=jiahao.kernel@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=1751510416; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=YIGZjKYpefB43h3SleWEiKb7qfKsUPvOFzJhtBGdavI=; b=bt94E5NhJn8mA6F1HPTcIt3iDj6OMlLv5kbayzMAcMkC0XpAbwOYsnymdsMBFZeQxc9inB yyXXl3+qCJsFd1fNinpi/mK4Sj8gun0D6Y8iW5RGAy2+1dKfuMt8qDwM47HVnCapzTStnx 7HHViGOJlQHJx1k8ERJM8i+iwrABsB0= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GvzJpriJ; spf=pass (imf22.hostedemail.com: domain of jiahao.kernel@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=jiahao.kernel@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751510416; a=rsa-sha256; cv=none; b=8rFDNfSYBDwKvhf/YLqrUiIjf/Nd++MTZYC3LabNuggalj8BJWJ1e1LvFPl1iDjD+HwYn5 88qbDt9oy31C3Jougo9KAXejwurWOE58eX7pze+QazIJyDkgMpYEFdhvintucOHSa+N80/ jrxkT6jGbdKCsv217H+uBmkcRXzfNRE= Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-74af4af04fdso394835b3a.1 for ; Wed, 02 Jul 2025 19:40:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751510415; x=1752115215; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=YIGZjKYpefB43h3SleWEiKb7qfKsUPvOFzJhtBGdavI=; b=GvzJpriJ1eoZ5FbcZ5am/0jTK/K+EqFiyGGPTAYwv/4P7AJd1BYXTLufPEvErRPT0I 2tU5EIv4hU8sDoJTnVMacsNaby49Xf2eJa/nkC6QFVu7N3/r4gi8+nD4BRTXvm9AG39q kXxLnNK/kns/Zqjv/6tPuiqJ5VP5NTgt2VTZrlKFRVY2z5JfIa6fbxP7kXPcHgeSRDje PB7mw6KmhMYlE3uWzCTcjmad7km0fv864/glk1T+DyB3ZNhgUBe6fiodPhP/goyeEona gSLW2X1Rl9J6oLcg4LMfhyMMG6sWYDxCIXhQ7qivaqYMwb+XfyjFi7S6sdnxNLPF4QzG +BSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751510415; x=1752115215; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YIGZjKYpefB43h3SleWEiKb7qfKsUPvOFzJhtBGdavI=; b=NAnFNhSYZTIjSZLChIKfqxzHAIjOTtEjqOEtQV26KYdaG+sPHz+mDjv6rHI26ZqRiw x4wG3lS980o1IKJuBpGDhn8H1coAP5Ovo4W64OhQhsL/dHAaaOhIhv1JFWspLortnOCf AYeBLP8PFWk8MimKmMP0tgacrFl3iYo3PkOnY89n5qbLz3SWnRYfJ+NWXVRv3b98NgbY AzG2o4sEWwY7ckanOwLCaCcsN9UFVH2CjDk+lYKCfzqjH6yCw+huCXqDTLIBoDvycoPF uCjFHQeS76V0f3h9cHNMNuSeAC5yMd/SPol20YWBTUXba6vIr0jFgnbFF4CXUclnoEIK ufKg== X-Gm-Message-State: AOJu0YxavF7yknOsS4v2XanHp5ux3/vu1ikF5oD54QxG7F7h5ieOfSE1 iQaxaHEF9nRFsdT3sPSx97bZ8lVFelQNdZhTWm8D0YwTZThMBxNezYXo X-Gm-Gg: ASbGncvAfsQFvOVOueOb/EIaWPGbkHLfFoJE24YMqVuXR4kD7/VbBIM1uMbRovJroDt tY1fJIRTYar/NjUpmxkqNitN/dEAARgN5AlK7eG4d4XyfEkO12xo7Y+35Q2F5IbFn9C0gG/QVCs b69247v4SXZj/hiuD3jY2iv7zzxeRpGFZbdj7kggHuc6fD0cPTWAwsXVsNcZDQ1N9w7STVjHE30 F1xAV0DoHkZDKCL0gQQfz1Z8AvSmJjA2kHYp+kBj67/KiUTC8bkUDhRMsn6gZHQ6r5i9qK8peI8 BrtIo9yZTx3i/5R3TrzP8zV3O92Wh7bSRH4X2YAA1LWkCs8wS84lM7jcdYZLhbR/Udz77AndApq Z++ymU7wLAfZ2qlo= X-Google-Smtp-Source: AGHT+IFj9S+Fx0WGqU+h/+2EUe4iTujac5xzUy8L36JCmyRv8r5DxDrUoDq6sz1S8Iu3CG0JGYTd9Q== X-Received: by 2002:a05:6a20:2588:b0:218:17a2:4421 with SMTP id adf61e73a8af0-22482a34a8dmr816405637.10.1751510415118; Wed, 02 Jul 2025 19:40:15 -0700 (PDT) Received: from localhost.localdomain ([210.184.73.204]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b362cef26dfsm4709952a12.46.2025.07.02.19.40.08 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 02 Jul 2025 19:40:14 -0700 (PDT) From: Hao Jia To: akpm@linux-foundation.org, yuzhao@google.com, yuanchu@google.com, shakeel.butt@linux.dev, mhocko@kernel.org, lorenzo.stoakes@oracle.com, kinseyho@google.com, hannes@cmpxchg.org, gthelen@google.com, david@redhat.com, axelrasmussen@google.com, zhengqi.arch@bytedance.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hao Jia Subject: [PATCH v2] mm/mglru: Stop try_to_inc_min_seq() if min_seq[type] has not increased Date: Thu, 3 Jul 2025 10:39:46 +0800 Message-Id: <20250703023946.65315-1-jiahao.kernel@gmail.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 824FDC0006 X-Stat-Signature: mtwq571patqmpprgqpmkbpmj5sm3rhep X-HE-Tag: 1751510416-569859 X-HE-Meta: U2FsdGVkX18V7kVDNe7A/VxtpnLRvtJh7ZyewaehMMaZ2GFqYi0XVWh7k61aRc36m6XEzjYyKt4EOUuNhJSNtk76E583Q6uUN9AgiJDW7blWZ7A7mLZr5KmZOWYhQxTjoXS+nLqQbvJajgCbH38+qIOaMBgsbuOL4gqacMkoISgCDDGDZr6UqwAHp969XVvpYyBFoZkGY3JHVY4iR3zIpcdIITOZgrJPktZ8/Qpu81vc+4TNXay2HJqWjcxw5xPezzubDyyNtl44JnAavCb8oCngt6y45CbI5wUomO+uedGHwfZV40isoQ1dxPDgJ+v5dkAccuSBRepamQ/2ybUwjsNaG9he2C+ixzV+qxmmxEw3kyfwLytP5rAV4N+lxKXcMUIZx5gNADqOKdKHLcVZ0ZFXZdJcG/hNpDTrCQY/sp8c4hcziJxK8Ga7C9jus+fowIT0vVPpFP14OVD9d8YhfBi8eGOfVK3UqOSh+DhWCnO7xtBvjsDUnVGa/8NT+DcLF5/gUzUbUXr8nKvlvawPfAbFL1fw8cYOk5fbhiuhD/sN+poUyX17fCSF7EA5HvxmyXRy4LFf5TtMJSijXq4RwMVdxL6row3c9lu0luWRDnXR2VBid5EKq7E1Ch3W0B50gHIRhYrUtf4BNAL/TAxDum34baEm820E+IEvilh129ORLUj/fWtnlen3BCKwMCbcL+jziRL5qiOFUCDwrsbdnz55hSTBIfJwo26H0y3tgi0lq/sqEfwwiTjlkaTBGXE1/HXQP45qxa2j26bHegBejf7sEgomG3pvCflW44vCibeg4CvHWu6OZOGiJ0w23gnYyjGcinNlNlj5PTW4bssx2bZ8rmwEjXVWLbPdgfDeeOQOgG1z+NAFBbySDWHEfmck3GAQ+l9Wr9Du4ROVo4U1swWFKYdIw/m1ataSRDV6r2HYN6bTzwBr7yU/2sSQfR+kAeuwckcq9pd/AnCOmcO jfcvsolJ BEHLsLRLgHOd9PQs0hArEutlR/9oP0lOZFzxaNXbRmGccOGj6sk+pnbsvkHH6EhQdjMnpf1ohgUG34jWJjO2reoTD/lBaUO3WeGTwE7QGiDKoP9iRkuIQEwO10df3JntjutA625NCkAGUQlV0h2dhp6HwY4MAEOCP5iX8UHAbguMJkVqJKkDunwrVk329wcSPf8nlczP4kmk8HyzddOGQBOK6GeEYvMT9ll97b7O7vjI5QQ33gNLn4CMN/5Tv9z7sV1wu9n4ua5jpa8jIztmiESSJV9DbJnHiqZxTFuIXoG4Cwu5qcbgqqmgidrqcThtWTNhNoxZpoWm0+oVNfTeAt6RiVboti0WqSML7sjLJ1x0ZkgXX/4gcrvIpXMBscA/RYrxHq6r+XFCJOpUOz2Rbee4CivFrw8GB73Notj9qGz31dhBZouKZLdoF+aYHEEkmiDRUp6RmLWFKHMB8ME9r0TwH+yz2a4f+kFW6wyu+MSEQICxKvQp970jouMzUe1blb/y8HKGlJvYZGpI9aKQP/4wXSD28o2RZl3jvBBv1SrhAkfpgKemGN9xqvcz7vl8B4lAXPRCvi/pOqFzNWN9gYGOciTgfiMt088x4NEqFTcUD4a2Jejula9ZC4HdvJWhr96rc 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: From: Hao Jia In try_to_inc_min_seq(), if min_seq[type] has not increased. In other words, min_seq[type] == lrugen->min_seq[type]. Then we should return directly to avoid unnecessary overhead later. Corollary: If min_seq[type] of both anonymous and file is not increased, try_to_inc_min_seq() will fail. Proof: It is known that min_seq[type] has not increased, that is, min_seq[type] is equal to lrugen->min_seq[type], then the following: case 1: min_seq[type] has not been reassigned and changed before judgment min_seq[type] <= lrugen->min_seq[type]. Then the subsequent min_seq[type] <= lrugen->min_seq[type] judgment will always be true. case 2: min_seq[type] is reassigned to seq, before judgment min_seq[type] <= lrugen->min_seq[type]. Then at least the condition of min_seq[type] > seq must be met before min_seq[type] will be reassigned to seq. That is to say, before the reassignment, lrugen->min_seq[type] > seq is met, and then min_seq[type] = seq. Then the following min_seq[type](seq) <= lrugen->min_seq[type] judgment is always true. Therefore, in try_to_inc_min_seq(), If min_seq[type] of both anonymous and file is not increased, we can return false directly to avoid unnecessary overhead. Suggested-by: Yuanchu Xie Signed-off-by: Hao Jia --- v1 to v2: - Modify commit message to make proof clearer. - Use one bool to detect any increments in min_seq[type], suggested by Yuanchu Xie. Link to v1: https://lore.kernel.org/all/20250630080603.36171-1-jiahao.kernel@gmail.com mm/vmscan.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mm/vmscan.c b/mm/vmscan.c index d48e8d365502..d5b6924aeb8f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3919,6 +3919,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec, int swappiness) { int gen, type, zone; bool success = false; + bool seq_inc_flag = false; struct lru_gen_folio *lrugen = &lruvec->lrugen; DEFINE_MIN_SEQ(lruvec); @@ -3935,11 +3936,20 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec, int swappiness) } min_seq[type]++; + seq_inc_flag = true; } next: ; } + /* + * If min_seq[type] of both anonymous and file is not increased, + * we can directly return false to avoid unnecessary checking + * overhead later. + */ + if (!seq_inc_flag) + return success; + /* see the comment on lru_gen_folio */ if (swappiness && swappiness <= MAX_SWAPPINESS) { unsigned long seq = lrugen->max_seq - MIN_NR_GENS; -- 2.34.1