lkml.org 
[lkml]   [2013]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[RFC 0/4] free reclaimed pages by paging out instantly
Date
Normally, I/O completed pages for reclaim would be rotated into 
inactive LRU tail. IMHO, the why we did is we can't remove the page
from page cache and (swap cache, swap slot) by locking problem.

So for reclaiming the I/O completed pages, we need one more iteration
of reclaim and it could make unnecessary CPU overhead(ex,
acitve->inactive deactivation, isolation, shrink_page_list).

Another concern is related to per process reclaim, which smart platform
can reclaim some of the process's pages forcely without OOM kill before
VM reaches a latency trouble. Assuming that people does per process
reclaim on some processes before even kswapd runs(ie, free pages > high
watermark).

And they believe nr_free_pages in vmstat should be increased but it's
not true because reclaimed pages caused by paging out(ex, swap page,
dirty pages) will be not freed until kswapd runs in the future so that
the platform confused and discard more workingset unnecessary or
reclaims more processes until the nr_free_pages is increased by
our goal.

This patch makes swap cache free logic being aware of irq context
so we can free reclaimed pages asap without rotating them back into
LRU's tail so that it can reduce unnecessary CPU overhead and LRU
churning and makes VM more intuitive.

Big problem of this patch is how to handle for memcg.
I hope please memcg guys look at description [3/4] and get feedback.

Minchan Kim (4):
[1] mm: Don't hide spin_lock in swap_info_get
[2] mm: introduce __swapcache_free
[3] mm: support remove_mapping in irqcontext
[4] mm: free reclaimed pages instantly without depending next reclaim

fs/splice.c | 2 +-
include/linux/swap.h | 12 ++++++++++-
mm/filemap.c | 6 +++---
mm/swap.c | 14 ++++++++++++-
mm/swapfile.c | 22 +++++++++++++++------
mm/truncate.c | 2 +-
mm/vmscan.c | 56 +++++++++++++++++++++++++++++++++++++++++++---------
7 files changed, 92 insertions(+), 22 deletions(-)

--
1.8.2.1



\
 
 \ /
  Last update: 2013-05-13 05:01    [W:0.130 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site