[PATCH v3 1/2] mm/compaction: remove low watermark cap for proactive compaction

Michal Clapinski posted 2 patches 1 year ago
There is a newer version of this series
[PATCH v3 1/2] mm/compaction: remove low watermark cap for proactive compaction
Posted by Michal Clapinski 1 year ago
Previously a min cap of 5 has been set in the commit introducing
proactive compaction. This was to make sure users don't hurt themselves
by setting the proactiveness to 100 and making their system
unresponsive. But the compaction mechanism has a backoff mechanism that
will sleep for 30s if no progress is made, so I don't see a significant
risk here. My system (20GB of memory) has been perfectly fine with
proactiveness set to 100 and leeway set to 0.

Signed-off-by: Michal Clapinski <mclapinski@google.com>
---
 mm/compaction.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index a2b16b08cbbff..29524242a16ef 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -2253,7 +2253,7 @@ static unsigned int fragmentation_score_wmark(bool low)
 	 * activity in case a user sets the proactiveness tunable
 	 * close to 100 (maximum).
 	 */
-	wmark_low = max(100U - sysctl_compaction_proactiveness, 5U);
+	wmark_low = 100U - sysctl_compaction_proactiveness;
 	return low ? wmark_low : min(wmark_low + 10, 100U);
 }
 
-- 
2.48.1.262.g85cc9f2d1e-goog
Re: [PATCH v3 1/2] mm/compaction: remove low watermark cap for proactive compaction
Posted by Andrew Morton 1 year ago
On Mon, 27 Jan 2025 22:50:19 +0100 Michal Clapinski <mclapinski@google.com> wrote:

> Previously a min cap of 5 has been set in the commit introducing
> proactive compaction. This was to make sure users don't hurt themselves
> by setting the proactiveness to 100 and making their system
> unresponsive. But the compaction mechanism has a backoff mechanism that
> will sleep for 30s if no progress is made, so I don't see a significant
> risk here. My system (20GB of memory) has been perfectly fine with
> proactiveness set to 100 and leeway set to 0.

Sure.  And if setting a particular value makes your system blow up then
Don't Do That - the kernel needn't care too much about protecting the
sysadmin from misguided configurations.

As long as we've actually documented what the thing does, which appears
to be the case this time.  Please do review
Documentation/admin-guide/sysctl/vm.rst:compaction_proactiveness for
accuracy and completeness?  From what you've said, that final paragraph
sounds too emphatic.


> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -2253,7 +2253,7 @@ static unsigned int fragmentation_score_wmark(bool low)
>  	 * activity in case a user sets the proactiveness tunable
>  	 * close to 100 (maximum).
>  	 */
> -	wmark_low = max(100U - sysctl_compaction_proactiveness, 5U);
> +	wmark_low = 100U - sysctl_compaction_proactiveness;
>  	return low ? wmark_low : min(wmark_low + 10, 100U);
>  }