Re: [PATCH v3 4/6] mm: Demote warning message in vmemmap_verify() to debug level

From: Kefeng Wang
Date: Fri Jun 10 2022 - 05:36:03 EST



On 2022/6/9 16:13, mawupeng wrote:


在 2022/6/8 18:00, Anshuman Khandual 写道:


On 6/8/22 06:56, mawupeng wrote:


在 2022/6/7 20:25, David Hildenbrand 写道:
On 07.06.22 11:38, Wupeng Ma wrote:
From: Ma Wupeng <mawupeng1@xxxxxxxxxx>

For a system only have limited mirrored memory or some numa node without
mirrored memory, the per node vmemmap page_structs prefer to allocate
memory from mirrored region, which will lead to vmemmap_verify() in
vmemmap_populate_basepages() report lots of warning message.

This patch demote the "potential offnode page_structs" warning messages
to debug level to avoid a very long print during bootup.

Signed-off-by: Ma Wupeng <mawupeng1@xxxxxxxxxx>
---
   mm/sparse-vmemmap.c | 2 +-
   1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index f4fa61dbbee3..78debdb89eb1 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -528,7 +528,7 @@ void __meminit vmemmap_verify(pte_t *pte, int node,
       int actual_node = early_pfn_to_nid(pfn);
         if (node_distance(actual_node, node) > LOCAL_DISTANCE)
-        pr_warn("[%lx-%lx] potential offnode page_structs\n",
+        pr_debug("[%lx-%lx] potential offnode page_structs\n",
               start, end - 1);
   }

This will possibly hide it in environments where this might indeed
indicate performance issues.

What about a pr_warn_once()?


Sure.

This will works. We can certainly use a pr_warn_once().

Why not pr_warn_ratelimited() like in the previous patch ?

Function vmemmap_populate_basepages() is used to populate base pages.
System with huge memory will produce lots lots of warning message
during this populate process even with ratelimited. This may lead to slow
startup.

I think pr_warn_once is better, the memblock_alloc fallback is not frequent,

but vmemmap_verify will verify each memory and print a lot.


Thanks for reviewing.

.
.