Reviewed-by: Rik van Riel <riel@xxxxxxxxxx>On 12/01/2009 09:55 PM, KOSAKI Motohiro wrote:Ah, yes. /me was slept. thanks correct me.
Shrink_page_list ignores the referenced bit on pagesbtw, current shrink_active_list() have unnecessary page_mapping_inuse() call.How about this?
it prevent to drop page reference bit from unmapped cache page. it mean
we protect unmapped cache page than mapped page. it is strange.
---------------------------------
SplitLRU VM replacement algorithm assume shrink_active_list() clear
the page's reference bit. but unnecessary page_mapping_inuse() test
prevent it.
This patch remove it.
that are !page_mapping_inuse().
if (sc->order<= PAGE_ALLOC_COSTLY_ORDER&&
referenced&&
page_mapping_inuse(page)
&& !(vm_flags& VM_LOCKED))
goto activate_locked;
The reason we leave the referenced bit on unmapped
pages is that we want the next reference to a deactivated
page cache page to move that page back to the active
list. We do not want to require that such a page gets
accessed twice before being reactivated while on the
inactive list, because (1) we know it was a frequently
accessed page already and (2) ongoing streaming IO
might evict it from the inactive list before it gets accessed
twice.
Arguably, we should just replace the page_mapping_inuse()
in both places with page_mapped() to simplify things.
From 61340720e6e66b645db8d5410e89fd3b67eda907 Mon Sep 17 00:00:00 2001
From: KOSAKI Motohiro<kosaki.motohiro@xxxxxxxxxxxxxx>
Date: Wed, 2 Dec 2009 12:05:26 +0900
Subject: [PATCH] Replace page_mapping_inuse() with page_mapped()
page reclaim logic need to distingish mapped and unmapped pages.
However page_mapping_inuse() don't provide proper test way. it test
the address space (i.e. file) is mmpad(). Why `page' reclaim need
care unrelated page's mapped state? it's unrelated.
Thus, This patch replace page_mapping_inuse() with page_mapped()
Signed-off-by: KOSAKI Motohiro<kosaki.motohiro@xxxxxxxxxxxxxx>