From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mta0.migadu.com (out-122.mta0.migadu.com [91.218.175.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 80AD6352022 for ; Tue, 15 Sep 2026 06:33:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.122 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789453987; cv=none; b=kpUdFsA8GlDPnqDAUTptvDTB7JRNeb3WVNevAR9t0+eK2q/6tqzZti9+RpzzDM99srKBk7PqqCBUt3K64fdheEnfnwxhH2eRDdrPJftjkw8jsPGP2Ltb5ficazqn8lHx8urT0vCnaDSheX8tcYmUzTCd2VM9Am54tY/moJAJBb0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789453987; c=relaxed/simple; bh=IPOCbVBUgdVnmtzzR7HtI43I8h8P7ryRrCKMwyBkjBY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Klj2emJzoWo9Eg1GQAhGQ1ICa9t0JZ+MXMzbcADJqDL/tSAdFOhtFK4jdFJbNqO6692BUEuxItV3OXo1eqYvSc1onxaWw7smNgct7rrAzjjEWTEK1/aJXeK42R6+dDewG0ZZPuXKPwMBlINBttRX5ewRwVSzM5ICScRQwjCHATw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hbsdzFZt; arc=none smtp.client-ip=91.218.175.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hbsdzFZt" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=IPOCbVBUgdVnmtzzR7HtI43I8h8P7ryRrCKMwyBkjBY=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1789453982; v=1; x=1790058782; b=hbsdzFZtGFX8VSpgDFGdiaKIfeyF+EbVmaUOZgEJcvsMF1K1mwOgQJ5K+XrRn8cDTFwuPHig IGmFReifd/8syYwSk198OsEQjQYZh9qM5nEnkhM0roHU69WHo3n4NzAdzHqhBYpD0vLFi2jzWna k6ZhKE2loEmn/XIbq1A7ptFM= X-Envelope-To: linux-kernel@vger.kernel.org Received: by mta12.migadu.com with ESMTPS id 3a2ca07b71f21ef2; Tue, 15 Sep 2026 06:32:52 +0000 X-Mizu-Trace-ID: 3a2ca07b71f21ef2 X-Migadu-Flow: FLOW_OUT Date: Tue, 15 Sep 2026 14:32:46 +0800 From: Baoquan He To: Ridong Chen Cc: Steven Rostedt , Masami Hiramatsu , Andrew Morton , Johannes Weiner , Mathieu Desnoyers , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baolin Wang , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, "open list:MEMORY MANAGEMENT - MGLRU (MULTI-GEN LRU)" , Ridong Chen Subject: Re: [PATCH v2 1/3] mm/mglru: factor out lru_gen_seq_nr_pages() Message-ID: References: <20260911102939.2485750-1-ridong.chen@linux.dev> <20260911102939.2485750-2-ridong.chen@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260911102939.2485750-2-ridong.chen@linux.dev> On 09/11/26 at 06:29pm, Ridong Chen wrote: > From: Ridong Chen > > Both lruvec_evictable_size() and the debugfs lru_gen_seq_show() compute > the number of pages in a generation the same way: sum lrugen->nr_pages > over all zones for a given (gen, type) and clamp each term to >= 0. > > Factor that out into lru_gen_seq_nr_pages() so the open-coded zone loop > lives in one place. No functional change. > > A follow-up patch adds a tracepoint that needs the same per-generation > page count, and will reuse this helper instead of open-coding it again. > > Assisted-by: Claude:claude-opus-4-8 > Signed-off-by: Ridong Chen > --- > mm/vmscan.c | 24 ++++++++++++++++-------- > 1 file changed, 16 insertions(+), 8 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 40d3f1b48a74..2554a6513aa8 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2813,6 +2813,18 @@ static int get_nr_gens(struct lruvec *lruvec, int type) > return lruvec->lrugen.max_seq - lruvec->lrugen.min_seq[type] + 1; > } > > +/* the number of pages in a generation, summed over zones and clamped to >= 0 */ ^ The first letter should be capitalized? Other than the nit, LGTM, Reviewed-by: Baoquan He > +static unsigned long lru_gen_seq_nr_pages(struct lru_gen_folio *lrugen, int gen, int type) > +{ > + int zone; > + unsigned long size = 0; > + > + for (zone = 0; zone < MAX_NR_ZONES; zone++) > + size += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L); > + > + return size; > +} > + > static bool __maybe_unused seq_is_valid(struct lruvec *lruvec) > { > int type; > @@ -4239,7 +4251,7 @@ static void set_initial_priority(struct pglist_data *pgdat, struct scan_control > > static unsigned long lruvec_evictable_size(struct lruvec *lruvec, int swappiness) > { > - int gen, type, zone; > + int gen, type; > unsigned long seq, total = 0; > struct lru_gen_folio *lrugen = &lruvec->lrugen; > DEFINE_MAX_SEQ(lruvec); > @@ -4248,8 +4260,7 @@ static unsigned long lruvec_evictable_size(struct lruvec *lruvec, int swappiness > for_each_evictable_type(type, swappiness) { > for (seq = min_seq[type]; seq <= max_seq; seq++) { > gen = lru_gen_from_seq(seq); > - for (zone = 0; zone < MAX_NR_ZONES; zone++) > - total += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L); > + total += lru_gen_seq_nr_pages(lrugen, gen, type); > } > } > > @@ -5738,19 +5749,16 @@ static int lru_gen_seq_show(struct seq_file *m, void *v) > seq = 0; > > for (; seq <= max_seq; seq++) { > - int type, zone; > + int type; > int gen = lru_gen_from_seq(seq); > unsigned long birth = READ_ONCE(lruvec->lrugen.timestamps[gen]); > > seq_printf(m, " %10lu %10u", seq, jiffies_to_msecs(jiffies - birth)); > > for (type = 0; type < ANON_AND_FILE; type++) { > - unsigned long size = 0; > + unsigned long size = lru_gen_seq_nr_pages(lrugen, gen, type); > char mark = full && seq < min_seq[type] ? 'x' : ' '; > > - for (zone = 0; zone < MAX_NR_ZONES; zone++) > - size += max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L); > - > seq_printf(m, " %10lu%c", size, mark); > } > > -- > 2.34.1 >