[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20090115200545.EBE6.KOSAKI.MOTOHIRO@jp.fujitsu.com>
Date: Thu, 15 Jan 2009 20:08:36 +0900 (JST)
From: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>
Cc: kosaki.motohiro@...fujitsu.com, balbir@...ux.vnet.ibm.com,
Daisuke Nishimura <nishimura@....nes.nec.co.jp>,
linux-mm@...ck.org, linux-kernel@...r.kernel.org,
lizf@...fujitsu.com, menage@...gle.com,
Hugh Dickins <hugh@...itas.com>
Subject: [PATCH] mark_page_accessed() in do_swap_page() move latter than memcg charge
sorry for late responce.
> > In this case we've hit a case where the page is valid and the pc is
> > not. This does fix the problem, but won't this impact us getting
> > correct reclaim stats and thus indirectly impact the working of
> > pressure?
> >
> - If retruns NULL, only global LRU's status is updated.
>
> Because this page is not belongs to any memcg, we cannot update
> any counters. But yes, your point is a concern.
>
> Maybe moving acitvate_page() to
> ==
> do_swap_page()
> {
>
> - activate_page()
> mem_cgroup_try_charge()..
> ....
> mem_cgroup_commit_charge()....
> ....
> + activate_page()
> }
> ==
> is necessary. How do you think, kosaki ?
OK. it makes sense. and my test found no bug.
==
mark_page_accessed() update reclaim_stat statics.
but currently, memcg charge is called after mark_page_accessed().
then, mark_page_accessed() don't update memcg statics correctly.
fixing here.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>
Cc: Daisuke Nishimura <nishimura@....nes.nec.co.jp>
Cc: Balbir Singh <balbir@...ux.vnet.ibm.com>
---
mm/memory.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: b/mm/memory.c
===================================================================
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2426,8 +2426,6 @@ static int do_swap_page(struct mm_struct
count_vm_event(PGMAJFAULT);
}
- mark_page_accessed(page);
-
lock_page(page);
delayacct_clear_flag(DELAYACCT_PF_SWAPIN);
@@ -2480,6 +2478,8 @@ static int do_swap_page(struct mm_struct
try_to_free_swap(page);
unlock_page(page);
+ mark_page_accessed(page);
+
if (write_access) {
ret |= do_wp_page(mm, vma, address, page_table, pmd, ptl, pte);
if (ret & VM_FAULT_ERROR)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists