The patch titled Subject: mm: swap out anonymous page regardless of laptop_mode has been removed from the -mm tree. Its filename was mm-swap-out-anonymous-page-regardless-of-laptop_mode.patch This patch was dropped because an updated version will be merged ------------------------------------------------------ From: Minchan Kim <minchan@xxxxxxxxxx> Subject: mm: swap out anonymous page regardless of laptop_mode Recently, Luigi reported there are lots of free swap space when OOM happens. It's easily reproduced on zram-over-swap, where many instance of memory hogs are running and laptop_mode is enabled. Luigi reported there was no problem when he disabled laptop_mode. The problem when I investigate problem is following as. try_to_free_pages disable may_writepage if laptop_mode is enabled. shrink_page_list adds lots of anon pages in swap cache by add_to_swap, which makes pages Dirty and rotate them to head of inactive LRU without pageout. If it is repeated, inactive anon LRU is full of Dirty and SwapCache pages. In case of that, isolate_lru_pages fails because it try to isolate clean page due to may_writepage == 0. may_writepage could be 1 only if total_scanned is higher than writeback_threshold in do_try_to_free_pages but unfortunately, VM can't isolate anon pages from inactive anon lru list by above reason and we already reclaimed all file-backed pages. So it ends up OOM killing. This patch makes may_writepage could be set when shrink_inactive_list encounters SwapCachePage from tail of inactive anon LRU. What it means that anon LRU list is short and memory pressure is severe so it would be better to swap out that pages by sacrificing the power rather than OOM killing. Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> Reported-by: Luigi Semenzato <semenzato@xxxxxxxxxx> Cc: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> Cc: Sonny Rao <sonnyrao@xxxxxxxxxx> Cc: Bryan Freed <bfreed@xxxxxxxxxx> Cc: Hugh Dickins <hughd@xxxxxxxxxx> Cc: Rik van Riel <riel@xxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Johannes Weiner <hannes@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff -puN mm/vmscan.c~mm-swap-out-anonymous-page-regardless-of-laptop_mode mm/vmscan.c --- a/mm/vmscan.c~mm-swap-out-anonymous-page-regardless-of-laptop_mode +++ a/mm/vmscan.c @@ -1102,7 +1102,7 @@ static unsigned long isolate_lru_pages(u prefetchw_prev_lru_page(page, src, flags); VM_BUG_ON(!PageLRU(page)); - +retry: switch (__isolate_lru_page(page, mode)) { case 0: nr_pages = hpage_nr_pages(page); @@ -1112,6 +1112,17 @@ static unsigned long isolate_lru_pages(u break; case -EBUSY: + /* + * If VM encounters PageSwapCache from inactive LRU, + * it means we havd to swap out those pages regardless + * of laptop_mode for preventing OOM kill. + */ + if ((mode & ISOLATE_CLEAN) && PageSwapCache(page) && + !PageActive(page)) { + mode &= ~ISOLATE_CLEAN; + sc->may_writepage = 1; + goto retry; + } /* else it is being freed elsewhere */ list_move(&page->lru, src); continue; _ Patches currently in -mm which might be from minchan@xxxxxxxxxx are origin.patch mm-compaction-fix-echo-1-compact_memory-return-error-issue.patch mm-compaction-make-__compact_pgdat-and-compact_pgdat-return-void.patch mm-add-vm-event-counters-for-balloon-pages-compaction.patch block-aio-batch-completion-for-bios-kiocbs-fix-fix-fix-fix-fix.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html