Messages in this thread |  | | | Date | Fri, 29 Oct 2010 20:17:26 +0900 | | From | KAMEZAWA Hiroyuki <> | | Subject | Re: [PATCH v4 06/11] memcg: add dirty page accounting infrastructure |
| |
On Fri, 29 Oct 2010 19:13:00 +0800 Wu Fengguang <fengguang.wu@intel.com> wrote:
> On Fri, Oct 29, 2010 at 03:09:09PM +0800, Greg Thelen wrote: > > > + > > + case MEMCG_NR_FILE_DIRTY: > > + /* Use Test{Set,Clear} to only un/charge the memcg once. */ > > + if (val > 0) { > > + if (TestSetPageCgroupFileDirty(pc)) > > + val = 0; > > + } else { > > + if (!TestClearPageCgroupFileDirty(pc)) > > + val = 0; > > + } > > I'm wondering why TestSet/TestClear and even the cgroup page flags for > dirty/writeback/unstable pages are necessary at all (it helps to > document in changelog if there are any). For example, VFS will call > TestSetPageDirty() before calling > mem_cgroup_inc_page_stat(MEMCG_NR_FILE_DIRTY), so there should be no > chance of false double counting. >
1. flag is necessary for moving accounting information between cgroups when account_move() occurs.
2. TestSet... is required because there are always race with page_cgroup_lock()'s lock bit.
Thanks, -Kame
|  |