2008-03-26 18:25:38

by Balaji Rao

[permalink] [raw]
Subject: [RFC][-mm] [2/2] Simple stats for memory resource controller

This patch implements trivial statistics for the memory resource controller.

Signed-off-by: Balaji Rao <[email protected]>
CC: Balbir Singh <[email protected]>
CC: Dhaval Giani <[email protected]>


diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index eb681a6..84f3fe5 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -45,6 +45,8 @@ enum mem_cgroup_stat_index {
*/
MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */
MEM_CGROUP_STAT_RSS, /* # of pages charged as rss */
+ MEM_CGROUP_STAT_PGIN_COUNT, /* # of pages paged in */
+ MEM_CGROUP_STAT_PGOUT_COUNT, /* # of pages paged out */

MEM_CGROUP_STAT_NSTATS,
};
@@ -196,6 +198,13 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *mem, int flags,
__mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val);
else
__mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val);
+
+ if (charge)
+ __mem_cgroup_stat_add_safe(stat,
+ MEM_CGROUP_STAT_PGIN_COUNT, 1);
+ else
+ __mem_cgroup_stat_add_safe(stat,
+ MEM_CGROUP_STAT_PGOUT_COUNT, 1);
}

static struct mem_cgroup_per_zone *
@@ -886,6 +895,8 @@ static const struct mem_cgroup_stat_desc {
} mem_cgroup_stat_desc[] = {
[MEM_CGROUP_STAT_CACHE] = { "cache", PAGE_SIZE, },
[MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, },
+ [MEM_CGROUP_STAT_PGIN_COUNT] = {"page_in_count", 1, },
+ [MEM_CGROUP_STAT_PGOUT_COUNT] = {"page_out_count", 1, },
};

static int mem_control_stat_show(struct cgroup *cont, struct cftype *cft,


2008-03-26 18:52:39

by Paul Menage

[permalink] [raw]
Subject: Re: [RFC][-mm] [2/2] Simple stats for memory resource controller

On Wed, Mar 26, 2008 at 11:18 AM, Balaji Rao <[email protected]> wrote:
> [MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, },
> + [MEM_CGROUP_STAT_PGIN_COUNT] = {"page_in_count", 1, },
> + [MEM_CGROUP_STAT_PGOUT_COUNT] = {"page_out_count", 1, },
> };
>

Should these be called "pgpgin" and "pgpgout" for consistency with /proc/vmstat?

Paul

2008-03-26 18:57:13

by Balbir Singh

[permalink] [raw]
Subject: Re: [RFC][-mm] [2/2] Simple stats for memory resource controller

Paul Menage wrote:
> On Wed, Mar 26, 2008 at 11:18 AM, Balaji Rao <[email protected]> wrote:
>> [MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, },
>> + [MEM_CGROUP_STAT_PGIN_COUNT] = {"page_in_count", 1, },
>> + [MEM_CGROUP_STAT_PGOUT_COUNT] = {"page_out_count", 1, },
>> };
>>
>
> Should these be called "pgpgin" and "pgpgout" for consistency with /proc/vmstat?
>
> Paul

Yes, that is a good name. We also want to instantaneous metrics like
page_in_count per second and page_out_count per second to help the administrator
monitor what is going on within the tasks in the cgroup w.r.t. memory.


--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL

2008-03-26 18:58:18

by Balbir Singh

[permalink] [raw]
Subject: Re: [RFC][-mm] [2/2] Simple stats for memory resource controller

Balaji Rao wrote:
> This patch implements trivial statistics for the memory resource controller.
>
> Signed-off-by: Balaji Rao <[email protected]>
> CC: Balbir Singh <[email protected]>
> CC: Dhaval Giani <[email protected]>
>
>
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index eb681a6..84f3fe5 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -45,6 +45,8 @@ enum mem_cgroup_stat_index {
> */
> MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */
> MEM_CGROUP_STAT_RSS, /* # of pages charged as rss */
> + MEM_CGROUP_STAT_PGIN_COUNT, /* # of pages paged in */
> + MEM_CGROUP_STAT_PGOUT_COUNT, /* # of pages paged out */
>
> MEM_CGROUP_STAT_NSTATS,
> };
> @@ -196,6 +198,13 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *mem, int flags,
> __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val);
> else
> __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val);
> +
> + if (charge)
> + __mem_cgroup_stat_add_safe(stat,
> + MEM_CGROUP_STAT_PGIN_COUNT, 1);
> + else
> + __mem_cgroup_stat_add_safe(stat,
> + MEM_CGROUP_STAT_PGOUT_COUNT, 1);
> }
>
> static struct mem_cgroup_per_zone *
> @@ -886,6 +895,8 @@ static const struct mem_cgroup_stat_desc {
> } mem_cgroup_stat_desc[] = {
> [MEM_CGROUP_STAT_CACHE] = { "cache", PAGE_SIZE, },
> [MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, },
> + [MEM_CGROUP_STAT_PGIN_COUNT] = {"page_in_count", 1, },
> + [MEM_CGROUP_STAT_PGOUT_COUNT] = {"page_out_count", 1, },
> };
>
> static int mem_control_stat_show(struct cgroup *cont, struct cftype *cft,

Looks simple and nice. Please see Paul's mail on the suggested name change as well

Acked-by: Balbir Singh <[email protected]>


--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL