Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 164388
b: refs/heads/master
c: 35cd781
h: refs/heads/master
v: v3
  • Loading branch information
Rik van Riel authored and Linus Torvalds committed Sep 22, 2009
1 parent 6cf4869 commit dbfeb12
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a731286de62294b63d8ceb3c5914ac52cc17e690
refs/heads/master: 35cd78156c499ef83f60605e4643d5a98fef14fd
33 changes: 33 additions & 0 deletions trunk/mm/vmscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1033,6 +1033,31 @@ int isolate_lru_page(struct page *page)
return ret;
}

/*
* Are there way too many processes in the direct reclaim path already?
*/
static int too_many_isolated(struct zone *zone, int file,
struct scan_control *sc)
{
unsigned long inactive, isolated;

if (current_is_kswapd())
return 0;

if (!scanning_global_lru(sc))
return 0;

if (file) {
inactive = zone_page_state(zone, NR_INACTIVE_FILE);
isolated = zone_page_state(zone, NR_ISOLATED_FILE);
} else {
inactive = zone_page_state(zone, NR_INACTIVE_ANON);
isolated = zone_page_state(zone, NR_ISOLATED_ANON);
}

return isolated > inactive;
}

/*
* shrink_inactive_list() is a helper for shrink_zone(). It returns the number
* of reclaimed pages
Expand All @@ -1048,6 +1073,14 @@ static unsigned long shrink_inactive_list(unsigned long max_scan,
struct zone_reclaim_stat *reclaim_stat = get_reclaim_stat(zone, sc);
int lumpy_reclaim = 0;

while (unlikely(too_many_isolated(zone, file, sc))) {
congestion_wait(WRITE, HZ/10);

/* We are about to die and free our memory. Return now. */
if (fatal_signal_pending(current))
return SWAP_CLUSTER_MAX;
}

/*
* If we need a large contiguous chunk of memory, or have
* trouble getting a small set of contiguous pages, we
Expand Down

0 comments on commit dbfeb12

Please sign in to comment.