Re: [PATCH 1/3] mm: memcontrol: make tree_{stat,events} fetch all stats

From: Johannes Weiner
Date: Fri Feb 05 2016 - 10:37:40 EST


On Fri, Feb 05, 2016 at 12:58:21PM +0300, Vladimir Davydov wrote:
> @@ -2745,14 +2745,20 @@ static void tree_events(struct mem_cgroup *memcg, unsigned long *events)
>
> static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
> {
> - unsigned long stat[MEMCG_NR_STAT];
> - unsigned long val;
> + unsigned long val = 0;
>
> if (mem_cgroup_is_root(memcg)) {
> - tree_stat(memcg, stat);
> - val = stat[MEM_CGROUP_STAT_CACHE] + stat[MEM_CGROUP_STAT_RSS];
> - if (swap)
> - val += stat[MEM_CGROUP_STAT_SWAP];
> + struct mem_cgroup *iter;
> +
> + for_each_mem_cgroup_tree(iter, memcg) {
> + val += mem_cgroup_read_stat(iter,
> + MEM_CGROUP_STAT_CACHE);
> + val += mem_cgroup_read_stat(iter,
> + MEM_CGROUP_STAT_RSS);
> + if (swap)
> + val += mem_cgroup_read_stat(iter,
> + MEM_CGROUP_STAT_SWAP);
> + }
> } else {
> if (!swap)
> val = page_counter_read(&memcg->memory);

Looks good to me, thanks.