staging: android: lowmemorykiller: neglect swap cached pages in other_file
authorVinayak Menon <vinayakm.list@gmail.com>
Wed, 26 Feb 2014 19:06:22 +0000 (00:36 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Feb 2014 22:51:27 +0000 (14:51 -0800)
With ZRAM enabled it is observed that lowmemory killer
doesn't trigger properly. swap cached pages are
accounted in NR_FILE, and lowmemorykiller considers
this as reclaimable and adds to other_file. But these
pages can't be reclaimed unless lowmemorykiller triggers.
So subtract swap pages from other_file.

Signed-off-by: Vinayak Menon <vinayakm.list@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/lowmemorykiller.c

index 4bcf00a872705927d8228ac33af82d06d19e6ec0..b545d3d1da3e5f6ccbd59f783e55ce30ff23479d 100644 (file)
@@ -88,7 +88,8 @@ static unsigned long lowmem_scan(struct shrinker *s, struct shrink_control *sc)
        int array_size = ARRAY_SIZE(lowmem_adj);
        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_SHMEM) -
+                                               total_swapcache_pages();
 
        if (lowmem_adj_size < array_size)
                array_size = lowmem_adj_size;