Re: [v5] mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged

From: Vijay Balakrishna
Date: Wed Sep 30 2020 - 16:47:58 EST




On 9/30/2020 11:20 AM, Mike Kravetz wrote:
On 9/29/20 9:49 AM, Vijay Balakrishna wrote:
When memory is hotplug added or removed the min_free_kbytes should be
recalculated based on what is expected by khugepaged. Currently
after hotplug, min_free_kbytes will be set to a lower default and higher
default set when THP enabled is lost. This change restores min_free_kbytes
as expected for THP consumers.

Fixes: f000565adb77 ("thp: set recommended min free kbytes")

Signed-off-by: Vijay Balakrishna <vijayb@xxxxxxxxxxxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
Reviewed-by: Pavel Tatashin <pasha.tatashin@xxxxxxxxxx>
Acked-by: Michal Hocko <mhocko@xxxxxxxx>

Sorry for jumping in so late. Should we use this as an opportunity to
also fix up the messages logged when (re)calculating mfk? They are wrong
and could be quite confusing.


Sure. Please share your thoughts regarding appropriate message. Here is what I'm thinking

pr_warn("min_free_kbytes is not updated to %d because current value %d is preferred\n", new_min_free_kbytes, min_free_kbytes);

If above message is reasonable I can post a new revision (v6).

Thanks,
Vijay

For example consider the following sequence
of operations and corresponding log messages produced.

Freshly booted VM with 2 nodes and 8GB memory:
# cat /proc/sys/vm/min_free_kbytes
90112
# echo 90000 > /proc/sys/vm/min_free_kbytes
# cat /proc/sys/vm/min_free_kbytes
90000
# echo 0 > /sys/devices/system/node/node1/memory56/online
[ 135.099947] Offlined Pages 32768
[ 135.102362] min_free_kbytes is not updated to 11241 because user defined value 90000 is preferred
[ 135.109070] khugepaged: raising min_free_kbytes from 90000 to 90112 to help t
ransparent hugepage allocations
# cat /proc/sys/vm/min_free_kbytes
90112
# echo 1 > /sys/devices/system/node/node1/memory56/online
[ 231.656075] min_free_kbytes is not updated to 11334 because user defined value 90000 is preferred
# cat /proc/sys/vm/min_free_kbytes
90112