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
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:
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.