linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] Misc cleanups and improvements for compaction
@ 2023-05-25 12:53 Baolin Wang
  2023-05-25 12:53 ` [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip() Baolin Wang
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:53 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

Hi,

This series cantains some cleanups and improvements for compaction.
Please help to review. Thanks.

Baolin Wang (6):
  mm: compaction: drop the redundant page validation in
    update_pageblock_skip()
  mm: compaction: change fast_isolate_freepages() to void type
  mm: compaction: skip more fully scanned pageblock
  mm: compaction: only set skip flag if cc->no_set_skip_hint is false
  mm: compaction: add trace event for fast freepages isolation
  mm: compaction: skip fast freepages isolation if enough freepages are
    isolated

 include/trace/events/compaction.h | 11 +++++++++++
 mm/compaction.c                   | 25 ++++++++++++++-----------
 2 files changed, 25 insertions(+), 11 deletions(-)

-- 
2.27.0


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip()
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
@ 2023-05-25 12:53 ` Baolin Wang
  2023-05-30  7:27   ` Vlastimil Babka
  2023-05-25 12:53 ` [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type Baolin Wang
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:53 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

The caller has validated the page before calling pdate_pageblock_skip(),
thus drop the redundant page validation in update_pageblock_skip().

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 mm/compaction.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 163e2ec70aff..426bb6ce070b 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -436,9 +436,6 @@ static void update_pageblock_skip(struct compact_control *cc,
 	if (cc->no_set_skip_hint)
 		return;
 
-	if (!page)
-		return;
-
 	set_pageblock_skip(page);
 
 	/* Update where async and sync compaction should restart */
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
  2023-05-25 12:53 ` [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip() Baolin Wang
@ 2023-05-25 12:53 ` Baolin Wang
  2023-05-30  7:29   ` Vlastimil Babka
  2023-05-25 12:53 ` [PATCH 3/6] mm: compaction: skip more fully scanned pageblock Baolin Wang
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:53 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

No caller cares about the return value of fast_isolate_freepages(),
void it.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 mm/compaction.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 426bb6ce070b..3737c6591bfb 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1435,8 +1435,7 @@ static int next_search_order(struct compact_control *cc, int order)
 	return order;
 }
 
-static unsigned long
-fast_isolate_freepages(struct compact_control *cc)
+static void fast_isolate_freepages(struct compact_control *cc)
 {
 	unsigned int limit = max(1U, freelist_scan_limit(cc) >> 1);
 	unsigned int nr_scanned = 0;
@@ -1449,7 +1448,7 @@ fast_isolate_freepages(struct compact_control *cc)
 
 	/* Full compaction passes in a negative order */
 	if (cc->order <= 0)
-		return cc->free_pfn;
+		return;
 
 	/*
 	 * If starting the scan, use a deeper search and use the highest
@@ -1588,11 +1587,10 @@ fast_isolate_freepages(struct compact_control *cc)
 
 	cc->total_free_scanned += nr_scanned;
 	if (!page)
-		return cc->free_pfn;
+		return;
 
 	low_pfn = page_to_pfn(page);
 	fast_isolate_around(cc, low_pfn);
-	return low_pfn;
 }
 
 /*
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/6] mm: compaction: skip more fully scanned pageblock
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
  2023-05-25 12:53 ` [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip() Baolin Wang
  2023-05-25 12:53 ` [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type Baolin Wang
@ 2023-05-25 12:53 ` Baolin Wang
  2023-05-30  7:59   ` Vlastimil Babka
  2023-05-25 12:53 ` [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false Baolin Wang
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:53 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

In fast_isolate_around(), it assumes the pageblock is fully scanned if
cc->nr_freepages < cc->nr_migratepages after trying to isolate some free
pages, and will set skip flag to avoid scanning in future. However this
can miss setting the skip flag for a fully scanned pageblock (returned
'start_pfn' is equal to 'end_pfn') in the case where cc->nr_freepages
is larger than cc->nr_migratepages.

So using the returned 'start_pfn' from isolate_freepages_block() and
'end_pfn' to decide if a pageblock is fully scanned makes more sense.
It can also cover the case where cc->nr_freepages < cc->nr_migratepages,
which means the 'start_pfn' is usually equal to 'end_pfn' except some
uncommon fatal error occurs after non-strict mode isolation.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 mm/compaction.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 3737c6591bfb..1e5183f39ca9 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1411,7 +1411,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn)
 	isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false);
 
 	/* Skip this pageblock in the future as it's full or nearly full */
-	if (cc->nr_freepages < cc->nr_migratepages)
+	if (start_pfn == end_pfn)
 		set_pageblock_skip(page);
 
 	return;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
                   ` (2 preceding siblings ...)
  2023-05-25 12:53 ` [PATCH 3/6] mm: compaction: skip more fully scanned pageblock Baolin Wang
@ 2023-05-25 12:53 ` Baolin Wang
  2023-05-30  8:03   ` Vlastimil Babka
  2023-05-25 12:54 ` [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation Baolin Wang
  2023-05-25 12:54 ` [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated Baolin Wang
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:53 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

To keep the same logic as test_and_set_skip(), only set the skip flag
if cc->no_set_skip_hint is false, which makes code more reasonable.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 mm/compaction.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 1e5183f39ca9..65d8d9223acc 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1223,7 +1223,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
 	 * rescanned twice in a row.
 	 */
 	if (low_pfn == end_pfn && (!nr_isolated || cc->finish_pageblock)) {
-		if (valid_page && !skip_updated)
+		if (!cc->no_set_skip_hint && valid_page && !skip_updated)
 			set_pageblock_skip(valid_page);
 		update_cached_migrate(cc, low_pfn);
 	}
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
                   ` (3 preceding siblings ...)
  2023-05-25 12:53 ` [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false Baolin Wang
@ 2023-05-25 12:54 ` Baolin Wang
  2023-05-30  8:24   ` Vlastimil Babka
  2023-05-25 12:54 ` [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated Baolin Wang
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:54 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

The fast_isolate_freepages() can also isolate freepages, but we can not
know the fast isolation efficiency to understand the fast isolation pressure.
So add a trace event to show some numbers to help to understand the efficiency
for fast freepages isolation.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 include/trace/events/compaction.h | 11 +++++++++++
 mm/compaction.c                   |  6 +++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/include/trace/events/compaction.h b/include/trace/events/compaction.h
index 3313eb83c117..2b2a975efd20 100644
--- a/include/trace/events/compaction.h
+++ b/include/trace/events/compaction.h
@@ -64,6 +64,17 @@ DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_freepages,
 	TP_ARGS(start_pfn, end_pfn, nr_scanned, nr_taken)
 );
 
+DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_fast_isolate_freepages,
+
+	TP_PROTO(
+		unsigned long start_pfn,
+		unsigned long end_pfn,
+		unsigned long nr_scanned,
+		unsigned long nr_taken),
+
+	TP_ARGS(start_pfn, end_pfn, nr_scanned, nr_taken)
+);
+
 #ifdef CONFIG_COMPACTION
 TRACE_EVENT(mm_compaction_migratepages,
 
diff --git a/mm/compaction.c b/mm/compaction.c
index 65d8d9223acc..eccec84dae82 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1438,7 +1438,7 @@ static int next_search_order(struct compact_control *cc, int order)
 static void fast_isolate_freepages(struct compact_control *cc)
 {
 	unsigned int limit = max(1U, freelist_scan_limit(cc) >> 1);
-	unsigned int nr_scanned = 0;
+	unsigned int nr_scanned = 0, total_isolated = 0;
 	unsigned long low_pfn, min_pfn, highest = 0;
 	unsigned long nr_isolated = 0;
 	unsigned long distance;
@@ -1537,6 +1537,7 @@ static void fast_isolate_freepages(struct compact_control *cc)
 				set_page_private(page, order);
 				nr_isolated = 1 << order;
 				nr_scanned += nr_isolated - 1;
+				total_isolated += nr_isolated;
 				cc->nr_freepages += nr_isolated;
 				list_add_tail(&page->lru, &cc->freepages);
 				count_compact_events(COMPACTISOLATED, nr_isolated);
@@ -1557,6 +1558,9 @@ static void fast_isolate_freepages(struct compact_control *cc)
 			limit = max(1U, limit >> 1);
 	}
 
+	trace_mm_compaction_fast_isolate_freepages(min_pfn, cc->free_pfn,
+						   nr_scanned, total_isolated);
+
 	if (!page) {
 		cc->fast_search_fail++;
 		if (scan_start) {
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated
  2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
                   ` (4 preceding siblings ...)
  2023-05-25 12:54 ` [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation Baolin Wang
@ 2023-05-25 12:54 ` Baolin Wang
  2023-05-30  8:32   ` Vlastimil Babka
  5 siblings, 1 reply; 14+ messages in thread
From: Baolin Wang @ 2023-05-25 12:54 UTC (permalink / raw)
  To: akpm; +Cc: mgorman, vbabka, baolin.wang, linux-mm, linux-kernel

I've observed that fast isolation often isolates more pages than
cc->migratepages, and the excess freepages will be released back to the
buddy system. So skip fast freepages isolation if enough freepages are
isolated to save some CPU cycles.

Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
---
 mm/compaction.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mm/compaction.c b/mm/compaction.c
index eccec84dae82..3ade4c095ed2 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1550,6 +1550,10 @@ static void fast_isolate_freepages(struct compact_control *cc)
 
 		spin_unlock_irqrestore(&cc->zone->lock, flags);
 
+		/* Skip fast search if enough freepages isolated */
+		if (cc->nr_freepages >= cc->nr_migratepages)
+			break;
+
 		/*
 		 * Smaller scan on next order so the total scan is related
 		 * to freelist_scan_limit.
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip()
  2023-05-25 12:53 ` [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip() Baolin Wang
@ 2023-05-30  7:27   ` Vlastimil Babka
  2023-05-31  1:44     ` Baolin Wang
  0 siblings, 1 reply; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  7:27 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:53, Baolin Wang wrote:
> The caller has validated the page before calling pdate_pageblock_skip(),
                                                   ^ u

> thus drop the redundant page validation in update_pageblock_skip().
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/compaction.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 163e2ec70aff..426bb6ce070b 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -436,9 +436,6 @@ static void update_pageblock_skip(struct compact_control *cc,
>  	if (cc->no_set_skip_hint)
>  		return;
>  
> -	if (!page)
> -		return;
> -
>  	set_pageblock_skip(page);
>  
>  	/* Update where async and sync compaction should restart */


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type
  2023-05-25 12:53 ` [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type Baolin Wang
@ 2023-05-30  7:29   ` Vlastimil Babka
  0 siblings, 0 replies; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  7:29 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:53, Baolin Wang wrote:
> No caller cares about the return value of fast_isolate_freepages(),
> void it.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] mm: compaction: skip more fully scanned pageblock
  2023-05-25 12:53 ` [PATCH 3/6] mm: compaction: skip more fully scanned pageblock Baolin Wang
@ 2023-05-30  7:59   ` Vlastimil Babka
  0 siblings, 0 replies; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  7:59 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:53, Baolin Wang wrote:
> In fast_isolate_around(), it assumes the pageblock is fully scanned if
> cc->nr_freepages < cc->nr_migratepages after trying to isolate some free
> pages, and will set skip flag to avoid scanning in future. However this
> can miss setting the skip flag for a fully scanned pageblock (returned
> 'start_pfn' is equal to 'end_pfn') in the case where cc->nr_freepages
> is larger than cc->nr_migratepages.
> 
> So using the returned 'start_pfn' from isolate_freepages_block() and
> 'end_pfn' to decide if a pageblock is fully scanned makes more sense.
> It can also cover the case where cc->nr_freepages < cc->nr_migratepages,
> which means the 'start_pfn' is usually equal to 'end_pfn' except some
> uncommon fatal error occurs after non-strict mode isolation.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/compaction.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 3737c6591bfb..1e5183f39ca9 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -1411,7 +1411,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn)
>  	isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false);
>  
>  	/* Skip this pageblock in the future as it's full or nearly full */
> -	if (cc->nr_freepages < cc->nr_migratepages)
> +	if (start_pfn == end_pfn)
>  		set_pageblock_skip(page);
>  
>  	return;


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false
  2023-05-25 12:53 ` [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false Baolin Wang
@ 2023-05-30  8:03   ` Vlastimil Babka
  0 siblings, 0 replies; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  8:03 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:53, Baolin Wang wrote:
> To keep the same logic as test_and_set_skip(), only set the skip flag
> if cc->no_set_skip_hint is false, which makes code more reasonable.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/compaction.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/compaction.c b/mm/compaction.c
> index 1e5183f39ca9..65d8d9223acc 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -1223,7 +1223,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn,
>  	 * rescanned twice in a row.
>  	 */
>  	if (low_pfn == end_pfn && (!nr_isolated || cc->finish_pageblock)) {
> -		if (valid_page && !skip_updated)
> +		if (!cc->no_set_skip_hint && valid_page && !skip_updated)
>  			set_pageblock_skip(valid_page);
>  		update_cached_migrate(cc, low_pfn);
>  	}


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation
  2023-05-25 12:54 ` [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation Baolin Wang
@ 2023-05-30  8:24   ` Vlastimil Babka
  0 siblings, 0 replies; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  8:24 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:54, Baolin Wang wrote:
> The fast_isolate_freepages() can also isolate freepages, but we can not
> know the fast isolation efficiency to understand the fast isolation pressure.
> So add a trace event to show some numbers to help to understand the efficiency
> for fast freepages isolation.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated
  2023-05-25 12:54 ` [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated Baolin Wang
@ 2023-05-30  8:32   ` Vlastimil Babka
  0 siblings, 0 replies; 14+ messages in thread
From: Vlastimil Babka @ 2023-05-30  8:32 UTC (permalink / raw)
  To: Baolin Wang, akpm; +Cc: mgorman, linux-mm, linux-kernel

On 5/25/23 14:54, Baolin Wang wrote:
> I've observed that fast isolation often isolates more pages than
> cc->migratepages, and the excess freepages will be released back to the
> buddy system. So skip fast freepages isolation if enough freepages are
> isolated to save some CPU cycles.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/compaction.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/mm/compaction.c b/mm/compaction.c
> index eccec84dae82..3ade4c095ed2 100644
> --- a/mm/compaction.c
> +++ b/mm/compaction.c
> @@ -1550,6 +1550,10 @@ static void fast_isolate_freepages(struct compact_control *cc)
>  
>  		spin_unlock_irqrestore(&cc->zone->lock, flags);
>  
> +		/* Skip fast search if enough freepages isolated */
> +		if (cc->nr_freepages >= cc->nr_migratepages)
> +			break;
> +
>  		/*
>  		 * Smaller scan on next order so the total scan is related
>  		 * to freelist_scan_limit.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip()
  2023-05-30  7:27   ` Vlastimil Babka
@ 2023-05-31  1:44     ` Baolin Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Baolin Wang @ 2023-05-31  1:44 UTC (permalink / raw)
  To: Vlastimil Babka, akpm; +Cc: mgorman, linux-mm, linux-kernel



On 5/30/2023 3:27 PM, Vlastimil Babka wrote:
> On 5/25/23 14:53, Baolin Wang wrote:
>> The caller has validated the page before calling pdate_pageblock_skip(),
>                                                     ^ u

Ah, sorry for typos. And I see Andrew has already helped to correct this 
typo. Thanks Andrew :)

>> thus drop the redundant page validation in update_pageblock_skip().
>>
>> Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> 
> Acked-by: Vlastimil Babka <vbabka@suse.cz>

Thanks for your reviewing.

>> ---
>>   mm/compaction.c | 3 ---
>>   1 file changed, 3 deletions(-)
>>
>> diff --git a/mm/compaction.c b/mm/compaction.c
>> index 163e2ec70aff..426bb6ce070b 100644
>> --- a/mm/compaction.c
>> +++ b/mm/compaction.c
>> @@ -436,9 +436,6 @@ static void update_pageblock_skip(struct compact_control *cc,
>>   	if (cc->no_set_skip_hint)
>>   		return;
>>   
>> -	if (!page)
>> -		return;
>> -
>>   	set_pageblock_skip(page);
>>   
>>   	/* Update where async and sync compaction should restart */

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-05-31  1:44 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-25 12:53 [PATCH 0/6] Misc cleanups and improvements for compaction Baolin Wang
2023-05-25 12:53 ` [PATCH 1/6] mm: compaction: drop the redundant page validation in update_pageblock_skip() Baolin Wang
2023-05-30  7:27   ` Vlastimil Babka
2023-05-31  1:44     ` Baolin Wang
2023-05-25 12:53 ` [PATCH 2/6] mm: compaction: change fast_isolate_freepages() to void type Baolin Wang
2023-05-30  7:29   ` Vlastimil Babka
2023-05-25 12:53 ` [PATCH 3/6] mm: compaction: skip more fully scanned pageblock Baolin Wang
2023-05-30  7:59   ` Vlastimil Babka
2023-05-25 12:53 ` [PATCH 4/6] mm: compaction: only set skip flag if cc->no_set_skip_hint is false Baolin Wang
2023-05-30  8:03   ` Vlastimil Babka
2023-05-25 12:54 ` [PATCH 5/6] mm: compaction: add trace event for fast freepages isolation Baolin Wang
2023-05-30  8:24   ` Vlastimil Babka
2023-05-25 12:54 ` [PATCH 6/6] mm: compaction: skip fast freepages isolation if enough freepages are isolated Baolin Wang
2023-05-30  8:32   ` Vlastimil Babka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).