Re: [PATCH 11/11] memcg: show reclaim_stat

From: Balbir Singh
Date: Wed Dec 03 2008 - 09:19:49 EST


* KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> [2008-12-02 18:05:25]:

> On Mon, 1 Dec 2008 21:19:49 +0900 (JST)
> KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> wrote:
>
> > added following four field to memory.stat file.
> >
> > - recent_rotated_anon
> > - recent_rotated_file
> > - recent_scanned_anon
> > - recent_scanned_file
> >
> > it is useful for memcg reclaim debugging.
> >
> I'll put this under CONFIG_DEBUG_VM.
>

I think they'll be useful even outside for tasks that need to take
decisions, it will be nice to see what sort of reclaim is going on. I
would like to see them outside, there is no cost associated with them
and assuming we'll not change the LRU logic very frequently, we don't
need to be afraid of breaking ABI either :)

> Thanks,
> -Kame
>
> >
> > Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
> > ---
> > mm/memcontrol.c | 25 +++++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > Index: b/mm/memcontrol.c
> > ===================================================================
> > --- a/mm/memcontrol.c
> > +++ b/mm/memcontrol.c
> > @@ -1799,6 +1799,31 @@ static int mem_control_stat_show(struct
> >
> > cb->fill(cb, "inactive_ratio", mem_cont->inactive_ratio);
> >
> > + {
> > + int nid, zid;
> > + struct mem_cgroup_per_zone *mz;
> > + unsigned long recent_rotated[2] = {0, 0};
> > + unsigned long recent_scanned[2] = {0, 0};
> > +
> > + for_each_online_node(nid)
> > + for (zid = 0; zid < MAX_NR_ZONES; zid++) {
> > + mz = mem_cgroup_zoneinfo(mem_cont, nid, zid);
> > +
> > + recent_rotated[0] +=
> > + mz->reclaim_stat.recent_rotated[0];
> > + recent_rotated[1] +=
> > + mz->reclaim_stat.recent_rotated[1];
> > + recent_scanned[0] +=
> > + mz->reclaim_stat.recent_scanned[0];
> > + recent_scanned[1] +=
> > + mz->reclaim_stat.recent_scanned[1];
> > + }
> > + cb->fill(cb, "recent_rotated_anon", recent_rotated[0]);
> > + cb->fill(cb, "recent_rotated_file", recent_rotated[1]);
> > + cb->fill(cb, "recent_scanned_anon", recent_scanned[0]);
> > + cb->fill(cb, "recent_scanned_file", recent_scanned[1]);
> > + }
> > +
> > return 0;
> > }
> >
> >
> >
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in
> > the body to majordomo@xxxxxxxxxx For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>
> >
>

--
Balbir
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/