When min_free_kbytes is user-configured, increasing system memory via memory hotplug may trigger multiple recalculations of min_free_kbytes. This results in excessive warning messages flooding the kernel log if several memory blocks are added in a short period. Sample dmesg output before optimization: ... [ 1303.897214] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1303.960498] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1303.970116] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1303.979709] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1303.989254] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1303.999122] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1304.008644] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1304.018537] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1304.028054] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred [ 1304.037615] min_free_kbytes is not updated to 126529 because user defined value 1048576 is preferred ... Replace pr_warn() with pr_warn_once() to ensure only one warning is printed, preventing large volumes of repeated log entries and improving log readability. Signed-off-by: Weilin Tong --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index baead29b3e67..774723150e5b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6412,7 +6412,7 @@ void calculate_min_free_kbytes(void) if (new_min_free_kbytes > user_min_free_kbytes) min_free_kbytes = clamp(new_min_free_kbytes, 128, 262144); else - pr_warn("min_free_kbytes is not updated to %d because user defined value %d is preferred\n", + pr_warn_once("min_free_kbytes is not updated to %d because user defined value %d is preferred\n", new_min_free_kbytes, user_min_free_kbytes); } -- 2.43.7