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 1B16EC3600C for ; Thu, 27 Mar 2025 09:32:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA8EA2800D4; Thu, 27 Mar 2025 05:32:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B575D2800C9; Thu, 27 Mar 2025 05:32:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A23EB2800D4; Thu, 27 Mar 2025 05:32:35 -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 843E22800C9 for ; Thu, 27 Mar 2025 05:32:35 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 05D2BAA44D for ; Thu, 27 Mar 2025 09:32:37 +0000 (UTC) X-FDA: 83266815954.30.5865F1E Received: from out-182.mta0.migadu.com (out-182.mta0.migadu.com [91.218.175.182]) by imf19.hostedemail.com (Postfix) with ESMTP id 381A61A0007 for ; Thu, 27 Mar 2025 09:32:34 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=saiXuoxs; spf=pass (imf19.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.182 as permitted sender) smtp.mailfrom=ye.liu@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743067955; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=brJ1F9IQwgIS+SuMiM9Occg6pKG8/bRPwJ2zoUDP/X4=; b=Vqle7GAK5sUtVkEuGuFkWjfNXZ1Qb0WTV79uxZfuSXYneOUl6gRdlfFsQSGYTX83PoZBdi WhBFVzs7QmJMiOHCsoB+7OzgmWrjHJkAZhboGz3OzT52RAvNgVGMrOxALJivJlWsw2YZnN JanS2ioeR3yQNoVFOb/YzBZz6v7ti5E= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=saiXuoxs; spf=pass (imf19.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.182 as permitted sender) smtp.mailfrom=ye.liu@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743067955; a=rsa-sha256; cv=none; b=Kc7C1DgGm1zjfr9TiuXzPp3bWnghmcBvFRFLE9UqiSCiBclzUHW7ZkgqV6QwRLHsCJZWB/ pfP/sqSBI5+HkaXQ5wh6Dp9UxZJU0Tqt28R58+vdkiZ2DxPLItO1ijukI563ZvEZMelMya HpdeTJdm4uaFKcQZW6XopG54TCNzdpc= Content-Type: multipart/alternative; boundary="------------ntvcb9x3EAFw7cHEaksWO0iV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1743067952; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=brJ1F9IQwgIS+SuMiM9Occg6pKG8/bRPwJ2zoUDP/X4=; b=saiXuoxsChYh6bubZ8PCtD8kTKrFjDLThiUrV2cz6Nk7oHGht9ud5UNTCE/6E3Z15uf6xG LAAj/QX5Yq/u9JeD2LIu/bbNFHecmHCssB1fvwuv6fB2hi6AnMtL/7fMbltvOTDIDW03wa JFmILD02811avpT765II2UOV+f2MdHI= Message-ID: <9d48bfef-11b1-469f-bbf6-7693cb4a2c0a@linux.dev> Date: Thu, 27 Mar 2025 17:32:14 +0800 MIME-Version: 1.0 Subject: Re: [PATCH] mm/show_mem: Optimize si_meminfo_node by reducing redundant code To: Mike Rapoport Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ye Liu References: <20250325073803.852594-1-ye.liu@linux.dev> Content-Language: en-US X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Ye Liu In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 381A61A0007 X-Stat-Signature: om57bnyhwqfgb8uy9qomejm7st9nxhzo X-HE-Tag: 1743067954-348867 X-HE-Meta: U2FsdGVkX19VetXmY0t920CbgmHamEPbNxDH5SwoTW0GsiH/wzEdXAMz6crREoiC0j4l7HMoeeGto4S7lB0J+NOetPqRJc49Q/0n9P7jQwmBT3vRqVsHu0RLe90xNfhZpvPCLOhsseI/hHnQ7Q5tt/+QJpyfNstlbu7U+s2qyaqp4ocbUnnXjdYhX5KDMYlio3Sd2myGliEcPHqXV8xd8iQt4rSUn8CgXFKeNH7PUaVOfdjkZzbX9GZRWEosZeBtfaukRrI/JqhH5WIfkofkcGabc36j0qsc59P5HtZ0TmyjfF4C+ZSgnQcds7/WsV+L/MrFzFfHbnQVkwZF7Zb8FrSr7TK+Y7+ZJiXT7UsvWHxy5YEHMmWqfK4VG0gugyzEbZhIzJUFn8oR5sJ8bqyxa3xoiPDTovCm4Nx/3+QXqrUa4TD8yTbJocQEw/tQAGheHaYEW5VPbRSuqAaotKZRToKbR1j/jgkv+lJp3YMucJ3kaxAK+hv9NJ2ylx1c9qgwhmiBOp68R4kprzn93bDX7DUs2SHHIlI6WOnp29oYviucavEV4gb7J9OQVMRFotYnWbWiaRCOJqCLJkb7Q7ttK7tOxEt/RL4LgJ27qLt+LBaQDOn0itp+Xp7b70+Eqxycmi9ew5+TxZtCj0IVkMCYWSLSVMWFcosmh0QP9ODu5qUdQ9JscCLPdWlXdi6mvmZr/rBhDvWoIqlBmqYC+TMZVC3HOC5iuncX/WS/szyMKmjRNR0irNdhKc/QpIxzBZuDwhxYi5U/QlHFjGB45qma3vW8TJVsjfgMXLZRZYMLBMdzpiJa6GYX1kRm+oIZjvkT0BC8vG+TCvaSfeo11MVf21+yDXUs0BgFwcGKvlSWgjtSOrtRU7X06C/jf1bYN0PEtQojIGD3EgtFD39fKi4z8F/O3jZm0m4b4Eb/qA6QSvsN6iIjCn+rvknJo9f012QHuydTfntmlv54Bq2/DV0 Oh85ezwl 2xp2e6cmuM4xY+h3smvaKnSgquxjW6u89skFcG8X1a+5LbZOlVUpxzp7xUJ8tGsFHtYIu62UwAtcmeXUURvVdOExtrUD6z1Izhdd57w1LKuEH8KjkA2NI1Wxv0cLp5ZBoaP+6GVWJd1HUF4gWfTCisEHQMLKBXcbKkNQvFZy92uMlcKB8n/Sa5Is+cuZ/C4uMLn/Wp/AxvxfhT8FdWG0G8zV5i0cOb8SkCojmZMtl9liHSCsVz61dPh0vd4foJl8lL/jOW4FFb5nLfhDZSeVZ+gAVeq/AASRaEnz5ulRiwCyJeZ0LlVyu3euRsN00CQ91CD3GRmTELhnph+ZcxJumKBjoWUSpC5nGjNTEFj5Z+FpY2kmXmLkSnwFWtAQC68W1AGT6O6vlVTurYiKz9gfTtTI+SY4bMZ/MNwk5WrK/I2ps7+hWu/vIXX+DM1vYl6BPWiaN 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: This is a multi-part message in MIME format. --------------ntvcb9x3EAFw7cHEaksWO0iV Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 2025/3/27 03:29, Mike Rapoport 写道: > On Tue, Mar 25, 2025 at 03:38:03PM +0800, Ye Liu wrote: >> From: Ye Liu >> >> Refactors the si_meminfo_node() function by reducing redundant code and >> improving readability. >> >> Moved the calculation of managed_pages inside the existing loop that >> processes pgdat->node_zones, eliminating the need for a separate loop. >> >> Simplified the logic by removing unnecessary preprocessor conditionals. >> >> Ensured that both totalram, totalhigh, and other memory statistics are >> consistently set without duplication. >> >> This change results in cleaner and more efficient code without altering >> functionality. >> >> Signed-off-by: Ye Liu >> --- >> mm/show_mem.c | 16 +++++----------- >> 1 file changed, 5 insertions(+), 11 deletions(-) >> >> diff --git a/mm/show_mem.c b/mm/show_mem.c >> index 6af13bcd2ab3..ad373b4b6e39 100644 >> --- a/mm/show_mem.c >> +++ b/mm/show_mem.c >> @@ -94,26 +94,20 @@ void si_meminfo_node(struct sysinfo *val, int nid) >> unsigned long free_highpages = 0; >> pg_data_t *pgdat = NODE_DATA(nid); >> >> - for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) >> - managed_pages += zone_managed_pages(&pgdat->node_zones[zone_type]); >> - val->totalram = managed_pages; >> - val->sharedram = node_page_state(pgdat, NR_SHMEM); >> - val->freeram = sum_zone_node_page_state(nid, NR_FREE_PAGES); >> -#ifdef CONFIG_HIGHMEM >> for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) { >> struct zone *zone = &pgdat->node_zones[zone_type]; >> - >> + managed_pages += zone_managed_pages(zone); > nit: don't remove the empty line after the declaration Agree. > >> if (is_highmem(zone)) { >> managed_highpages += zone_managed_pages(zone); > Looks like highmem pages get counted twice, no? twice? The original logic has not been changed. managed_highpages is just high memory, managed_pages is all. I don't understand what you mean. Thanks, Ye Liu > >> free_highpages += zone_page_state(zone, NR_FREE_PAGES); >> } >> } >> + >> + val->totalram = managed_pages; >> + val->sharedram = node_page_state(pgdat, NR_SHMEM); >> + val->freeram = sum_zone_node_page_state(nid, NR_FREE_PAGES); >> val->totalhigh = managed_highpages; >> val->freehigh = free_highpages; >> -#else >> - val->totalhigh = managed_highpages; >> - val->freehigh = free_highpages; >> -#endif >> val->mem_unit = PAGE_SIZE; >> } >> #endif >> -- >> 2.25.1 >> >> --------------ntvcb9x3EAFw7cHEaksWO0iV Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


在 2025/3/27 03:29, Mike Rapoport 写道:
On Tue, Mar 25, 2025 at 03:38:03PM +0800, Ye Liu wrote:
From: Ye Liu <liuye@kylinos.cn>

Refactors the si_meminfo_node() function by reducing redundant code and
improving readability.

Moved the calculation of managed_pages inside the existing loop that
processes pgdat->node_zones, eliminating the need for a separate loop.

Simplified the logic by removing unnecessary preprocessor conditionals.

Ensured that both totalram, totalhigh, and other memory statistics are
consistently set without duplication.

This change results in cleaner and more efficient code without altering
functionality.

Signed-off-by: Ye Liu <liuye@kylinos.cn>
---
 mm/show_mem.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/mm/show_mem.c b/mm/show_mem.c
index 6af13bcd2ab3..ad373b4b6e39 100644
--- a/mm/show_mem.c
+++ b/mm/show_mem.c
@@ -94,26 +94,20 @@ void si_meminfo_node(struct sysinfo *val, int nid)
 	unsigned long free_highpages = 0;
 	pg_data_t *pgdat = NODE_DATA(nid);
 
-	for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++)
-		managed_pages += zone_managed_pages(&pgdat->node_zones[zone_type]);
-	val->totalram = managed_pages;
-	val->sharedram = node_page_state(pgdat, NR_SHMEM);
-	val->freeram = sum_zone_node_page_state(nid, NR_FREE_PAGES);
-#ifdef CONFIG_HIGHMEM
 	for (zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) {
 		struct zone *zone = &pgdat->node_zones[zone_type];
-
+		managed_pages += zone_managed_pages(zone);
nit: don't remove the empty line after the declaration
Agree.

 		if (is_highmem(zone)) {
 			managed_highpages += zone_managed_pages(zone);
Looks like highmem pages get counted twice, no?


twice? The original logic has not been changed.

managed_highpages is just high memory, managed_pages is all.

I don't understand what you mean.


Thanks,

Ye Liu


 			free_highpages += zone_page_state(zone, NR_FREE_PAGES);
 		}
 	}
+
+	val->totalram = managed_pages;
+	val->sharedram = node_page_state(pgdat, NR_SHMEM);
+	val->freeram = sum_zone_node_page_state(nid, NR_FREE_PAGES);
 	val->totalhigh = managed_highpages;
 	val->freehigh = free_highpages;
-#else
-	val->totalhigh = managed_highpages;
-	val->freehigh = free_highpages;
-#endif
 	val->mem_unit = PAGE_SIZE;
 }
 #endif
-- 
2.25.1



    
--------------ntvcb9x3EAFw7cHEaksWO0iV--