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 528D0C8303C for ; Fri, 11 Jul 2025 05:27:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAB716B009A; Fri, 11 Jul 2025 01:27:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C5C6B6B009B; Fri, 11 Jul 2025 01:27:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B4AEC6B009D; Fri, 11 Jul 2025 01:27:43 -0400 (EDT) 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 A2BEF6B009A for ; Fri, 11 Jul 2025 01:27:43 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 28846E7794 for ; Fri, 11 Jul 2025 05:27:43 +0000 (UTC) X-FDA: 83650851606.02.7474A18 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf05.hostedemail.com (Postfix) with ESMTP id 3DEE310000B for ; Fri, 11 Jul 2025 05:27:41 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UkpDHNS1; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of jiahao.kernel@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=jiahao.kernel@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752211661; 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=TEGAwmchIcAI8RRmUq1fpR/mb7uxORFOkM7RcXyqrs4=; b=SS/QMnLEaCTN/Yk3QzW0ITkaNytGafeXTs3lEXZrYPtviiTbj/XVJsOmLZT4C6xDzcOcLf scduuemfW2td+wRZPMahXHBw8psgm5dCnRmOFDr3R94DWZFAqg6HMBuxr4OsPziejU1Icf mo3cQL+bk+oH6Hz4cW0hrnfrLzsrloY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752211661; a=rsa-sha256; cv=none; b=RY+N29FMhhfnV1Ut6codbH+SLmmDR8khzVvKxC/GQc9Sgh4IX5OYW59b6qLYVVDoC4+m/P Ah0pzA9PqebICDhafncxw4IxZqDSXCZtkKTVNPFxnTM+70ZuXDNG7pLS/5f6ggrVkPOH+v vAsJgbn0uf/Ji7/lNIw0eMc4FJjVSfU= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UkpDHNS1; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of jiahao.kernel@gmail.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=jiahao.kernel@gmail.com Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-234b9dfb842so16517725ad.1 for ; Thu, 10 Jul 2025 22:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752211660; x=1752816460; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=TEGAwmchIcAI8RRmUq1fpR/mb7uxORFOkM7RcXyqrs4=; b=UkpDHNS1EGKG/m1QW7g8z9c/rq0ocQORK5e5r1R70Xs6UOQzNUSy+HQ1LVEQpuUXjg PcvZaaOo6pcZl/4fG4bdnh9QEWnN3uOxMom5JXPJCEX1WMwwqXraQBw6+YQu9eZrRx9b PJNDyq6blcpmpVjlJzxeTFcEdJfQo+ZyFaGQLCB5gLweqdOugElEGim7BWvUDdXZDNtF QTVsipzRpgLRo288MnuTY0Rqnb/oNsi7vwczcc9gat4jr9kyHfsoWHHzVecwvBd5uAgS w/Ye+Q9DSs0hPcQnhX2PlxfXtOmWW/xYGVRAnonbkONOkKrwlXVBaL52vr3rdnx2PCEr HnFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752211660; x=1752816460; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TEGAwmchIcAI8RRmUq1fpR/mb7uxORFOkM7RcXyqrs4=; b=X8kPEYIBUgZHbD/cmUbD1PEPEqSTGH7jKaKTuL0wp6TQwxHQXd8Ftxf3DiqsjOVXI6 DVrXJJBsHh3Yr8STqRHKYK8Zl94ROAfKwVGHvxkJ64LHo8tNrtlIe5rZH+yUr+BjiYzD GRXk2gz5EPPLV35/avK0TM/dUujfzUfnfhDgJYncsJQ72DygR6TfHFxdvDlIaHEEOttr MafKV0IBs3qmf3EvvZ2B/uqLuKuTs8roG0cvbg6jZLiEXGStxhMQiNw4geDOp1BNHl6H yP8LlQRzxAY6ZNdK3c1oB4A/dzgAyDr+77PF5u5qSRDaPo75QJpBwTLuWCHfqk46uN4T OS6g== X-Forwarded-Encrypted: i=1; AJvYcCWA9/mvq6gz8JSWTa3Kbf9FrGj9TxsXOciQPWwfu5o/D/nNQaqbkEBfbq4al4WwQqNp2CGtuWsc2A==@kvack.org X-Gm-Message-State: AOJu0YwgcoveTaIM/tNZBL9csxzvdSXx78rSCkKeKpf5Ent0GZBuCp3K 4GP+b8RpXlJ4S7FVYGA0mGUsR7GxfTOIYPMHsNQWFFg2oG1GbGgdsdRW X-Gm-Gg: ASbGncvVdu3mKMi3MrTn7D8ozm19ZUC6dVxK4LZIlTNRquIWCPhSFwWWbp3mkHkgHPE wiG3FtRYYx7WNandjA13gUvk89OTXCSc2solukN2TkgJPyVcw8LTDnPMz0TfMp0C2+Kq1xFHQkY 5hnLlK3mdg2iEa5v6e0kOfApqejAwfRCC570WCBpE2xwbdpGcSAqu/wPzNYvpnmwhwdzwF+fir6 dJap5+l8HFYr2J0hzMxj5bsDXg+1RrLkn/Mxj8JFdp+ELp2LgoFSkQ130dHDu446+z2QbH4zt3a CZsCJPg4gVW58dfV32pvNvKSuj3M/bj2ecXaBW+j0b59p1O8KHrISVJ3YProYMZ1BVBvr3FAPiI 1ffwRQ3K0TAZDd9HBl5bpmG6BOla95i4jPcN+c7wBnFyfNRG9cyT5WYo= X-Google-Smtp-Source: AGHT+IEmtUKg1mllhmFUS5+13NYo4pEn9kSfQjbzR6Ad9DGhMQuXzMOVxx4xpdsZRvDRWjC+6n0cUQ== X-Received: by 2002:a17:903:11c3:b0:234:98eb:8eda with SMTP id d9443c01a7336-23dee26dd48mr27454625ad.28.1752211659840; Thu, 10 Jul 2025 22:27:39 -0700 (PDT) Received: from [10.127.192.248] ([210.184.73.204]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23de435f371sm35675855ad.237.2025.07.10.22.27.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 10 Jul 2025 22:27:39 -0700 (PDT) Message-ID: Date: Fri, 11 Jul 2025 13:27:30 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH v2] mm/mglru: Stop try_to_inc_min_seq() if min_seq[type] has not increased To: akpm@linux-foundation.org Cc: 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, zhengqi.arch@bytedance.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hao Jia , Axel Rasmussen References: <20250703023946.65315-1-jiahao.kernel@gmail.com> From: Hao Jia In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 3DEE310000B X-Rspamd-Server: rspam03 X-Stat-Signature: t4rec7fneu5eint6ad34ogwx6igq1mzq X-HE-Tag: 1752211661-76601 X-HE-Meta: U2FsdGVkX19psP6aTUMu+7Z4ypvQ5WJ+6St1r7rlhGuwb+SJ/ei0kNhdHaT6GbH0aMVWs/mmgRkit7D+VYSA6lzUBMhBbPNnK8yENetpSn8pKlBgcNq5oVJmgEOgAXWCWQhB2+wbJ41SQDfCi7IsXhdI5lpRpspduBPwZHilZIt9+YSHC23he2aKr6JTkbdK1QYMRPBtRT8rVyPPyax+e58VgS14b203iSfJUX5eMZOXg03gkicTuJGFb+QOHqhxV+o7ZhgQbTHE4rQ5eCcL9v42GEd188HxgWgJi9EA5cZgXfeucZ7PQCWiQuTDKM/8T/Q9RvDZsTbEwJor7Yyz9/9Maj/UTwmcrJEKuLbMKBFQaH5IHaQKRoAIRXkvaNgSrPSzbEuVM24+ZAQ/ehFY2omAG6jXsZIDXl0t1eL4Y1wUAR5J932yryf2/Uty84KREzqM4TUAQHhqE6yBJvxmKPPleLFqa5zKbqW0czOI/zcKKAcHjQjFWyHLbySZDVes8BNAmr12hQZSEnui0VZx6E6cpDzdc70U+yKFSw5zUJ1N2jDlNWgZxaLKTtuq6CLB82G/WE3HOThwYUAJCeKLsfximZZrFOAatOvm0Xdkm/d328wLl4NHXpG872hnU/eMxVYInyEJcSubh2CsBIRHZIba+H9EiVi9rDmRG45YQ5bBiAhZ7WG/K3O5tlKp8iZp3vmOPrEU2bk+QzBrB3mcF3O0gx3Zl2s9P1DPM0roNQ5DkLzXyySb/gKbxHOrwTEmX2qY4toRijAlZsnmmaA5oS7VS/q0a2byiigsOCJUR8VaSUBWHGtE9USBDXjZDm7YJrHPFXhz+5T3NnT5RZlu46hbp+c6u4Y2p/83ydmT3FIsLvcoJuGXn3ZXIbxNfOFQMP6fOGne+9kV6wM8P+B/ZzJUJulsnpdvbmurhIbLWbXADUJpIgSxllQmpm1/kDMQraroR3v4LU+tpkwAG3a lib3kph2 KHseT5jjOFNeP1ebsdEmSXWG10FqPNsBWTXZ2CxUggLhDcZz+xh8t31dh0vBC7VOUYKblLgQkhyw1pGoPLpoDMeyUkqPxrIlyIEXIcfMCj7cAIjR0+R56iPxLxjccZoc1q4yYesPpDnS0BRlGtNmECwoAy1CWn+Mo4GWpjNxEFtv2e7pgrJ18blQ7+coolGtm1C7nIJJe+jjTB7kVd1XI2F5wRYK79VXhdaH8w0DHrMSQ6ugdJTlf4eRsfjiJQfXK7ML69nJ5NohmEVIEcWNggmUTVdNuYJKWAAAgT5gXDIHvUzSqTAInFrT0HK/IBqKk/txOgT+quYgUrKzaMgD6LUg9m32/WvSulC9ozZL/LMOezycLPJpPUw43ld7bgH+7i3bmkdpCbeYppMbnNG1A6oWMihNvQob2BGehm1DBDZSfPctUnyodCcvRGlssrDxFheZWdv3uBqz1NVNXSy5Ms4TYYJFBSKrP2XVJKyNBE5SaYNwug2v0EFU29KP614RNUb7YbYh/PulHP+qnjfF3Xk8J491AMwaYhqmXO9gOvxU9pgyHbVzqHULdUA== 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 2025/7/11 06:49, Axel Rasmussen wrote: > On Wed, Jul 2, 2025 at 7:40 PM Hao Jia wrote: >> >> 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. >> + */ > > I think we can make this comment (and probably the commit message) even simpler. > > try_to_inc_min_seq (and inc_min_seq) are both called under lru_lock, > so I don't think there can be any concurrent modifications going on. > (Note readers don't necessarily take the lock though.) So I think we > can simply state it like: > > "If we didn't change any min_seq, we can return immediately." > > This patch had caused me to think we can do even more to make this > function simpler, but I spent an hour fiddling with it and I don't > have any concrete suggestions. So, I see no reason to hold up this > patch, it seems straightforwardly correct to me. Any further > simplification could just be a follow up patch later. > > You can take: > Reviewed-by: Axel Rasmussen > Hi, Andrew Could you please replace the V1 version in mm-unstable branch with this patch v2? https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?h=mm-unstable&id=0163463f9dcc965060c5f51de69727d1b21d2b2b Patch v2 looks more reasonable. Thanks, Hao >> + 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 >>