Re: [PATCH V2 1/2] sysctl: Limit the value of interface compact_memory

From: Vlastimil Babka
Date: Wed Mar 08 2023 - 05:21:28 EST




On 3/6/23 07:07, ye.xingchen@xxxxxxxxxx wrote:
> From: Minghao Chi <chi.minghao@xxxxxxxxxx>
>
> In Documentation/admin-guide/sysctl/vm.rst:109 say: when 1 is written
> to the file, all zones are compacted such that free memory is available
> in contiguous blocks where possible.
> So limit the value of interface compact_memory to 1.
>
> Link: https://lore.kernel.org/all/ZAJwoXJCzfk1WIBx@xxxxxxxxxxxxxxxxxxxxxx/

I don't think the split to two patches you did, achieves Luis' request.

> Signed-off-by: Minghao Chi <chi.minghao@xxxxxxxxxx>
> Signed-off-by: Ye Xingchen <ye.xingchen@xxxxxxxxxx>
>
> ---
> include/linux/compaction.h | 1 +
> kernel/sysctl.c | 4 +++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/compaction.h b/include/linux/compaction.h
> index 52a9ff65faee..caa24e33eeb1 100644
> --- a/include/linux/compaction.h
> +++ b/include/linux/compaction.h
> @@ -81,6 +81,7 @@ static inline unsigned long compact_gap(unsigned int order)
> }
>
> #ifdef CONFIG_COMPACTION
> +extern int sysctl_compact_memory;
> extern unsigned int sysctl_compaction_proactiveness;
> extern int sysctl_compaction_handler(struct ctl_table *table, int write,
> void *buffer, size_t *length, loff_t *ppos);
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index c14552a662ae..67f70952f71a 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -2192,10 +2192,12 @@ static struct ctl_table vm_table[] = {
> #ifdef CONFIG_COMPACTION
> {
> .procname = "compact_memory",
> - .data = NULL,
> + .data = &sysctl_compact_memory,

I doubt this compiles/links without patch 2, as there's no definition
until patch 2.

> .maxlen = sizeof(int),
> .mode = 0200,
> .proc_handler = sysctl_compaction_handler,
> + .extra1 = SYSCTL_ONE,
> + .extra2 = SYSCTL_ONE,
> },
> {
> .procname = "compaction_proactiveness",

IIUC his request was to move the compaction entries out of sysctl.c?