aboutsummaryrefslogtreecommitdiffstats
path: root/mm/vmscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r--mm/vmscan.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 88ab53c9949a..d2f65c856350 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1930,11 +1930,6 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness,
1930 goto out; 1930 goto out;
1931 } 1931 }
1932 1932
1933 anon = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
1934 get_lru_size(lruvec, LRU_INACTIVE_ANON);
1935 file = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
1936 get_lru_size(lruvec, LRU_INACTIVE_FILE);
1937
1938 /* 1933 /*
1939 * Prevent the reclaimer from falling into the cache trap: as 1934 * Prevent the reclaimer from falling into the cache trap: as
1940 * cache pages start out inactive, every cache fault will tip 1935 * cache pages start out inactive, every cache fault will tip
@@ -1945,9 +1940,14 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness,
1945 * anon pages. Try to detect this based on file LRU size. 1940 * anon pages. Try to detect this based on file LRU size.
1946 */ 1941 */
1947 if (global_reclaim(sc)) { 1942 if (global_reclaim(sc)) {
1948 unsigned long free = zone_page_state(zone, NR_FREE_PAGES); 1943 unsigned long zonefile;
1944 unsigned long zonefree;
1945
1946 zonefree = zone_page_state(zone, NR_FREE_PAGES);
1947 zonefile = zone_page_state(zone, NR_ACTIVE_FILE) +
1948 zone_page_state(zone, NR_INACTIVE_FILE);
1949 1949
1950 if (unlikely(file + free <= high_wmark_pages(zone))) { 1950 if (unlikely(zonefile + zonefree <= high_wmark_pages(zone))) {
1951 scan_balance = SCAN_ANON; 1951 scan_balance = SCAN_ANON;
1952 goto out; 1952 goto out;
1953 } 1953 }
@@ -1982,6 +1982,12 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness,
1982 * 1982 *
1983 * anon in [0], file in [1] 1983 * anon in [0], file in [1]
1984 */ 1984 */
1985
1986 anon = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
1987 get_lru_size(lruvec, LRU_INACTIVE_ANON);
1988 file = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
1989 get_lru_size(lruvec, LRU_INACTIVE_FILE);
1990
1985 spin_lock_irq(&zone->lru_lock); 1991 spin_lock_irq(&zone->lru_lock);
1986 if (unlikely(reclaim_stat->recent_scanned[0] > anon / 4)) { 1992 if (unlikely(reclaim_stat->recent_scanned[0] > anon / 4)) {
1987 reclaim_stat->recent_scanned[0] /= 2; 1993 reclaim_stat->recent_scanned[0] /= 2;