On Tue, Apr 25, 2023 at 11:52:35PM +0800, wenyang.linux@xxxxxxxxxxx wrote: > From: Wen Yang <wenyang.linux@xxxxxxxxxxx> > > For the /proc/sys/vm/compact_memory file, the admin-guide states: > When 1 is written to the file, all zones are compacted such that free > memory is available in contiguous blocks where possible. This can be > important for example in the allocation of huge pages although processes > will also directly compact memory as required > > But it was not strictly followed, writing any value would cause all > zones to be compacted. > It has been slightly optimized to comply with the admin-guide. > Enforce the 1 on the unlikely chance that the sysctl handler is ever > extended to do something different. > > Commit ef4984384172 ("mm/compaction: remove unused variable sysctl_compact_memory") > has also been optimized a bit here, as the declaration in the external header > file has been eliminated, and sysctl_compact_memory also needs to be verified. > > Signed-off-by: Wen Yang <wenyang.linux@xxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Cc: Oscar Salvador <osalvador@xxxxxxx> > Cc: William Lam <william.lam@xxxxxxxxxxxxx> > Cc: Pintu Kumar <pintu@xxxxxxxxxxxxxx> > Cc: Fu Wei <wefu@xxxxxxxxxx> > Cc: linux-mm@xxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > --- > mm/compaction.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index c8bcdea15f5f..ba57d4178866 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1736,6 +1736,7 @@ static int sysctl_compact_unevictable_allowed __read_mostly = CONFIG_COMPACT_UNE > */ > static unsigned int __read_mostly sysctl_compaction_proactiveness = 20; > static int sysctl_extfrag_threshold = 500; > +static int sysctl_compact_memory; > __read_mostly but that aside, it's only used in sysctl_compaction_handler so could also be declared as static within that function. That way if CONFIG_SYSCTL is not set, it should be guaranteed that the compiler does not save storage for it. It's minor enough that With or without another version; Acked-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> -- Mel Gorman SUSE Labs