Thread (54 messages) 54 messages, 11 authors, 2011-05-20

Re: [PATCH 4/4] mm: vmscan: If kswapd has been running too long, allow it to sleep

From: KOSAKI Motohiro <hidden>
Date: 2011-05-15 10:27:12
Also in: linux-fsdevel, linux-mm, lkml

(2011/05/13 23:03), Mel Gorman wrote:
quoted hunk ↗ jump to hunk
Under constant allocation pressure, kswapd can be in the situation where
sleeping_prematurely() will always return true even if kswapd has been
running a long time. Check if kswapd needs to be scheduled.

Signed-off-by: Mel Gorman<mgorman@suse.de>
---
  mm/vmscan.c |    4 ++++
  1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index af24d1e..4d24828 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2251,6 +2251,10 @@ static bool sleeping_prematurely(pg_data_t *pgdat, int order, long remaining,
  	unsigned long balanced = 0;
  	bool all_zones_ok = true;

+	/* If kswapd has been running too long, just sleep */
+	if (need_resched())
+		return false;
+
Hmm... I don't like this patch so much. because this code does

- don't sleep if kswapd got context switch at shrink_inactive_list
- sleep if kswapd didn't

It seems to be semi random behavior.


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help