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 02A14C83F20 for ; Thu, 10 Jul 2025 22:50:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 81C626B009D; Thu, 10 Jul 2025 18:50:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7C5EC6B009E; Thu, 10 Jul 2025 18:50:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6B4486B00A0; Thu, 10 Jul 2025 18:50:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 5C6166B009D for ; Thu, 10 Jul 2025 18:50:16 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E100F10E169 for ; Thu, 10 Jul 2025 22:50:15 +0000 (UTC) X-FDA: 83649849990.24.16FEE46 Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by imf28.hostedemail.com (Postfix) with ESMTP id 13C45C0012 for ; Thu, 10 Jul 2025 22:50:13 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=LSqNszZm; spf=pass (imf28.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.160.171 as permitted sender) smtp.mailfrom=axelrasmussen@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752187814; 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=kYpjEn88cxKSZZ/B6NkChJLl7t99A1EwGgw5xpGtDAU=; b=rl0Cl+0N+MclY/fnbY/NTY0Lz3NuptkJLrH3qc9CaYkHFvIQvl3x0jXy0guWHmS92AGVpW QMn73aooGtvjkBgACNRyqP1SSIA3BHGlJ3kpGZi4s3IZzS0NpFcvEvXhTDw0cCmwrOFLkj 7X0Mlys7n3lAAFw17i6exAVDuyd6CJU= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=LSqNszZm; spf=pass (imf28.hostedemail.com: domain of axelrasmussen@google.com designates 209.85.160.171 as permitted sender) smtp.mailfrom=axelrasmussen@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752187814; a=rsa-sha256; cv=none; b=moLyWRJGWL5sbjU0Fky7yJpdGJG2Myg4C4fEBVDDywvT7xX35uf2n0bSfEWi+VbNISAMDg w2x6Hazp1ZASYn/6ourxvE03jWafxXom/bgShbftH4hNanbZ6yWY/odBjvKze0JJCTvk58 R+7mmekwvt7I/H+XdWWXFJhm7Ryaj3Y= Received: by mail-qt1-f171.google.com with SMTP id d75a77b69052e-4a9e8459f28so128271cf.0 for ; Thu, 10 Jul 2025 15:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1752187813; x=1752792613; 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=kYpjEn88cxKSZZ/B6NkChJLl7t99A1EwGgw5xpGtDAU=; b=LSqNszZmAZXeFmX3JsbO7q2jip8qieZ872dHh9lJ4Exyc3E1QITdDeRBV0TLVEzkML kl28m82rSkpOD5IDf2knUO9PH3Qm18UaeVPt7BHVB7PFx/LV0ReO/i7/ITXEoWPJCT6i 284AVMoXvdiT+96vmQ1S4QqpKRfbYaNyjQytwfUSMew7+PhuUvTdmlU280RSl0vlTeoX VWxQQF2ALMgEVwxs87Vp3rsE2AvuJLdSf4y23tgwQ7zwAq2rHzAjexhzwBucBf6AaKfN Zd4qH/e90+VgHR2hdMp89m3YwNCp+9O9ijmnBnC23f9yl3EY53PCsoWhIk2S61QkRVo6 HOAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752187813; x=1752792613; 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=kYpjEn88cxKSZZ/B6NkChJLl7t99A1EwGgw5xpGtDAU=; b=npSJgG4CY0++mb9cxd5DIVd5ALhe3DwERvzZOdpNgGriKd5UOPZiXzxCmtiupwxY9M rXpwedfxN3+TFkz4eIxmjek6nhNdMzuwLQ71oZONyvk6yXZ0qNusRjc2GRmdPbzgues9 Rd075vg24wRKNRrkFRIfK0Zp0xXDNZ/5agq/fBiTj/ovYdKtSJ9miJJAqbFbxldPBM6P qaBsF8DzYneFVdgXfQ4jVakRqAtcwzQwVb4jSI4IoNP0yniNNUFUtAd6gjlB/JmZVuIT yWdom/8P/egOTWsb1Z/3At4pK5X8my8m6/pM+GHeB/dlKwVFB7eU9H8ifFRwelBCSbCd Og/Q== X-Forwarded-Encrypted: i=1; AJvYcCU6prqUo/vg4IacZb7M/BxZ7pqRkdnnX+sgyPQhKU1iEhaAyzV+sfZyuEMZgmGBt1mg4jl9k2jLeQ==@kvack.org X-Gm-Message-State: AOJu0YxI+8v3h+tYj2wVQJ/6PcYnefyVIsinUR6fgOw6/p8SzyaOAOf0 OzwER3s8a9/I44IeQv5YvRNhQe/9K1uOEnevJqrnmdV41EhDrmSoO+dOGkzA5+KKChy5i8NIDKv xt4UcLC5VSkRgIXJdAVlTozgOqCx85yk7pQwMti7B X-Gm-Gg: ASbGncuBmr4Tdw1/a6LPLLzBJmdzaRqOKd5rFVY7w93zH8q0T0uw6/vH9FgcWf+5OlW nX+EXvkoKDkcRy7ww1zOUuqbAUew799A28+o62aBOE5MkHGHcOhBuI5BMI5SoW+4FdlTZGwZox4 IdAy/WAflDe+IhonBeaVDJrhXLzBYWtMgJbR+mgORaUujS9bZOidv8aNWVOmohyZhskjfzuHO8x PRhgQ== X-Google-Smtp-Source: AGHT+IFJ+GIH08Q93yw1aKv49aCnim80ePlY0qR39QylTSlZvdcHTY6+wZL5hmQgDEnMuTrMcArJu7TwqGrnC3LprT8= X-Received: by 2002:a05:622a:7d8c:b0:4a5:a9f4:b7c2 with SMTP id d75a77b69052e-4aa35e062e4mr477031cf.17.1752187812532; Thu, 10 Jul 2025 15:50:12 -0700 (PDT) MIME-Version: 1.0 References: <20250703023946.65315-1-jiahao.kernel@gmail.com> In-Reply-To: <20250703023946.65315-1-jiahao.kernel@gmail.com> From: Axel Rasmussen Date: Thu, 10 Jul 2025 15:49:36 -0700 X-Gm-Features: Ac12FXzTGOYUKLnZHR8owxernOgT6vdMzRe_1JRpV9KHcx557604Zy1xnBC1seQ Message-ID: Subject: Re: [PATCH v2] mm/mglru: Stop try_to_inc_min_seq() if min_seq[type] has not increased To: Hao Jia Cc: 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, zhengqi.arch@bytedance.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hao Jia Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 13C45C0012 X-Rspamd-Server: rspam09 X-Stat-Signature: umigxu6a4mhs1cwwnjjnhcr1yeouuzmi X-HE-Tag: 1752187813-329312 X-HE-Meta: U2FsdGVkX1+6E96Xiusr0rVgcYqh9lRerZ6qzXuatEICfC3uLbwFP/GLOAfOIciPajbctlodp/eroQdmo+vLB6WPbNokGwD18D7ZtwwGJdeOjQpWx1IrN1puEGFAGlUSQaNCBWMFgbXiYLhbaFxefCHtSPx2IEQNSRKV+bSwcWJ4Ty5jD4KeIQciBzLEv/M1JaNq0NBtmWjjds44yveeAX586c/02pzf0r7KzGTvDjX2pzJfqXSmubtkWUu9lpKWyvDdk3UTGkWOnbZytwNOTTMWPRPoUAlJnNHSixk51gDaq/dNc38Squbv8WsXL7OUzmQjFx9x4xhlsmykui7PwVUj/Xv4p08+LiqwbIOykFXCUv3pLlkrSM8fUBHZwzIZYTAHlFM4bROJT+Z4sXSnm9bU0A3ZFWQ9nTpIObT+uadzEy7i4R022fktEzuNuHARrlmX7GbXEbaoXbX2X0ehhULFvvN/XMHRlpR2TU8Xz+Ukq1e1bQzeOjm6gL+CPcKiZVcr4UvReopptQd+XW5t8vEY/jGcJrNKeKaJtFABWYAkhZJGzrsa5EP23bORhJi9w6wZzAzZYQKA35Qvk1vyA0sXplPM4SusjmHTBUdJWHQapSnf2f1RrjtZLcXxjvjQGuvvTf95XsLG8BDYna5XGe8REmPNBXB7beajNgVbBOvra1TUN92Ij/4jXqC0OZAPTSbLwY6yaTbcCij6Q8H/fpuShnxHjfRP4oHEBI3JimVdFwrd/x9GUyUHMIr1u8A5p3nVNyTIQtRbzBenctjEFQdPEzwx57utr1jhWMJTJZkubz/f945pnkNqVZjPC8dgnpsv6oGHTiRPjHfKluoM2bMQZFkj6TQ90MnsleENDeAjShhdTK/k6iBBUjDn+UlfZpoDxHVMDs7RwLLVHc774WErtuWV/X5WXcBs/gyIDV/s6G3fxVCJhBFCvNtF1CHLQeBnp7YXhVUvpViyBwh lRaNTZAi 3eFeuiV+FkbMwoQv88eoAZ+QaSgiNURcoPwfEZq5cinvggQgEayKMSn2BsubstmoWxiky1uz8KVGKOpCcdn7cQQ6QfEOKLoeMMCRXN1gFepvBDtk7IJgFxxVWdfffciB6DF2Q224rQ9jj9Bvp6iCK9E7VlBTQNcwRrDSRNJs3pxwZDPiVUGpRKrzUv9KZ/ZtcZ5opP4ZY4qook/0UzzAD0uXscvX74y/jDLUNB8kyHGYIQXUImHjinBofBernYah7M0eGVJJXhDNU6qpVjphUZmK+KmtJ48VVPVzaAhg7eVfN681U6PiA5ZK+/25G6bCNfkI2Jlxaz6+JvqNIrhGzW8jwwbg+H3Pj0aR9Jpi26vPOgWBkvY2J8Ja4e3Ir58tLj4KnoNdfAzPiYLAuZI71of99ow== 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 Wed, Jul 2, 2025 at 7:40=E2=80=AFPM Hao Jia wr= ote: > > From: Hao Jia > > In try_to_inc_min_seq(), if min_seq[type] has not increased. In other > words, min_seq[type] =3D=3D 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] <=3D lrugen->min_seq[type]. > Then the subsequent min_seq[type] <=3D lrugen->min_seq[type] judgment > will always be true. > > case 2: min_seq[type] is reassigned to seq, before judgment > min_seq[type] <=3D 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] =3D seq. > Then the following min_seq[type](seq) <=3D 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 Y= uanchu Xie. > > Link to v1: https://lore.kernel.org/all/20250630080603.36171-1-jiahao.ker= nel@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 *lruve= c, int swappiness) > { > int gen, type, zone; > bool success =3D false; > + bool seq_inc_flag =3D false; > struct lru_gen_folio *lrugen =3D &lruvec->lrugen; > DEFINE_MIN_SEQ(lruvec); > > @@ -3935,11 +3936,20 @@ static bool try_to_inc_min_seq(struct lruvec *lru= vec, int swappiness) > } > > min_seq[type]++; > + seq_inc_flag =3D 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 sim= pler. 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 > + if (!seq_inc_flag) > + return success; > + > /* see the comment on lru_gen_folio */ > if (swappiness && swappiness <=3D MAX_SWAPPINESS) { > unsigned long seq =3D lrugen->max_seq - MIN_NR_GENS; > -- > 2.34.1 >