2012-06-23 06:17:55

by Wanpeng Li

[permalink] [raw]
Subject: [PATCH 4/6] memcg: move recent_rotated and recent_scanned informations

From: Wanpeng Li <[email protected]>

Move recent_rotated and recent_scanned prints next to inactive_anon,
ative_anon, inactive_file, active_file, and unevictable prints to
save developers' time. Since they have to go a long way(when cat memory.stat)
to find recent_rotated and recent_scanned prints which has relationship
with the memory cgroup we care. These prints are behind total_* which
not just focus on the memory cgroup we care currently.

Signed-off-by: Wanpeng Li <[email protected]>
---
mm/memcontrol.c | 50 +++++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 2e81328..c821e36 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4080,6 +4080,31 @@ static int mem_cgroup_stat_show(struct cgroup *cont, struct cftype *cft,
seq_printf(m, "%s %lu\n", mem_cgroup_lru_names[i],
mem_cgroup_nr_lru_pages(memcg, BIT(i)) * PAGE_SIZE);

+#ifdef CONFIG_DEBUG_VM
+ {
+ int nid, zid;
+ struct mem_cgroup_per_zone *mz;
+ struct zone_reclaim_stat *rstat;
+ 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(memcg, nid, zid);
+ rstat = &mz->lruvec.reclaim_stat;
+
+ recent_rotated[0] += rstat->recent_rotated[0];
+ recent_rotated[1] += rstat->recent_rotated[1];
+ recent_scanned[0] += rstat->recent_scanned[0];
+ recent_scanned[1] += rstat->recent_scanned[1];
+ }
+ seq_printf(m, "recent_rotated_anon %lu\n", recent_rotated[0]);
+ seq_printf(m, "recent_rotated_file %lu\n", recent_rotated[1]);
+ seq_printf(m, "recent_scanned_anon %lu\n", recent_scanned[0]);
+ seq_printf(m, "recent_scanned_file %lu\n", recent_scanned[1]);
+ }
+#endif
+
/* Hierarchical information */
{
unsigned long long limit, memsw_limit;
@@ -4117,31 +4142,6 @@ static int mem_cgroup_stat_show(struct cgroup *cont, struct cftype *cft,
seq_printf(m, "total_%s %llu\n", mem_cgroup_lru_names[i], val);
}

-#ifdef CONFIG_DEBUG_VM
- {
- int nid, zid;
- struct mem_cgroup_per_zone *mz;
- struct zone_reclaim_stat *rstat;
- 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(memcg, nid, zid);
- rstat = &mz->lruvec.reclaim_stat;
-
- recent_rotated[0] += rstat->recent_rotated[0];
- recent_rotated[1] += rstat->recent_rotated[1];
- recent_scanned[0] += rstat->recent_scanned[0];
- recent_scanned[1] += rstat->recent_scanned[1];
- }
- seq_printf(m, "recent_rotated_anon %lu\n", recent_rotated[0]);
- seq_printf(m, "recent_rotated_file %lu\n", recent_rotated[1]);
- seq_printf(m, "recent_scanned_anon %lu\n", recent_scanned[0]);
- seq_printf(m, "recent_scanned_file %lu\n", recent_scanned[1]);
- }
-#endif
-
return 0;
}

--
1.7.9.5


2012-06-23 09:52:01

by Johannes Weiner

[permalink] [raw]
Subject: Re: [PATCH 4/6] memcg: move recent_rotated and recent_scanned informations

On Sat, Jun 23, 2012 at 02:17:39PM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <[email protected]>
>
> Move recent_rotated and recent_scanned prints next to inactive_anon,
> ative_anon, inactive_file, active_file, and unevictable prints to
> save developers' time. Since they have to go a long way(when cat memory.stat)
> to find recent_rotated and recent_scanned prints which has relationship
> with the memory cgroup we care. These prints are behind total_* which
> not just focus on the memory cgroup we care currently.

The hierarchical stats are about that memcg, too. And I don't want to
turn on debugging and then look for the extra information hiding in
the middle of regular stats.

2012-06-23 10:13:46

by Wanpeng Li

[permalink] [raw]
Subject: Re: [PATCH 4/6] memcg: move recent_rotated and recent_scanned informations

On Sat, Jun 23, 2012 at 11:51:13AM +0200, Johannes Weiner wrote:
>On Sat, Jun 23, 2012 at 02:17:39PM +0800, Wanpeng Li wrote:
>> From: Wanpeng Li <[email protected]>
>>
>> Move recent_rotated and recent_scanned prints next to inactive_anon,
>> ative_anon, inactive_file, active_file, and unevictable prints to
>> save developers' time. Since they have to go a long way(when cat memory.stat)
>> to find recent_rotated and recent_scanned prints which has relationship
>> with the memory cgroup we care. These prints are behind total_* which
>> not just focus on the memory cgroup we care currently.
>
>The hierarchical stats are about that memcg, too. And I don't want to

Move recent_rotated and recent_scanned prints next to file lru lists
just because the pageout code in vmscan.c keeps track of how many of
the mem/swap backed and file backed pages are referenced, and the
higher the rotated/scanned ratio, the more valuable that cache is.
Move five lru lists and associated debug informations together can
make things convenience. :-)

Regards,
Wanpeng Li

>turn on debugging and then look for the extra information hiding in
>the middle of regular stats.