Messages in this thread Patch in this message |  | | | From | Mel Gorman <> | | Subject | [PATCH 5/6] mm: kswapd: Treat zone->all_unreclaimable in sleeping_prematurely similar to balance_pgdat() | | Date | Thu, 9 Dec 2010 11:18:19 +0000 |
| |
After DEF_PRIORITY, balance_pgdat() considers all_unreclaimable zones to be balanced but sleeping_prematurely does not. This can force kswapd to stay awake longer than it should. This patch fixes it.
Signed-off-by: Mel Gorman <mel@csn.ul.ie> --- mm/vmscan.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index bc233d8..d7b0a3c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2149,8 +2149,16 @@ static bool sleeping_prematurely(pg_data_t *pgdat, int order, long remaining) if (!populated_zone(zone)) continue; - if (zone->all_unreclaimable) + /* + * balance_pgdat() skips over all_unreclaimable after + * DEF_PRIORITY. Effectively, it considers them balanced so + * they must be considered balanced here as well if kswapd + * is to sleep + */ + if (zone->all_unreclaimable) { + balanced += zone->present_pages; continue; + } if (!zone_watermark_ok(zone, order, high_wmark_pages(zone), 0, 0)) -- 1.7.1
|  |