ANDROID: lowmemorykiller: account for unevictable pages
authorTim Murray <timmurray@google.com>
Fri, 2 Sep 2016 23:04:41 +0000 (16:04 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Thu, 25 May 2017 11:07:25 +0000 (16:37 +0530)
lowmemorykiller was not taking into account unevictable pages when
deciding what level to kill. If significant amounts of memory were
pinned, this caused lowmemorykiller to effectively stop at a much higher
level than it should.

bug 31255977

Change-Id: I763ecbfef8c56d65bb8f6147ae810692bd81b6e2
Signed-off-by: Tim Murray <timmurray@google.com>
drivers/staging/android/lowmemorykiller.c

index af49af0cca01ba4231ee0fc564cf56987371959d..606d13a1ea741c0997a5323c2bd709d7bba2a91f 100644 (file)
@@ -94,6 +94,7 @@ static unsigned long lowmem_scan(struct shrinker *s, struct shrink_control *sc)
        int other_free = global_page_state(NR_FREE_PAGES) - totalreserve_pages;
        int other_file = global_page_state(NR_FILE_PAGES) -
                                                global_page_state(NR_SHMEM) -
+                                               global_page_state(NR_UNEVICTABLE) -
                                                total_swapcache_pages();
 
        if (lowmem_adj_size < array_size)