Patch 2 : Add pages counter per ckrm zone and a counter of call to
shrink_atlimit.
Applies to 2.6.13+ckrm.e19+memory_controller.
Signed-off-by: Patrick Le Dot <[EMAIL PROTECTED]>
Signed-off-by: Chandra Seetharaman <[EMAIL PROTECTED]>
include/linux/ckrm_mem.h | 3 +++
kernel/ckrm/ckrm_memcore.c | 23 ++++++++++++++++++++++-
kernel/ckrm/ckrm_memctlr.c | 3 +++
3 files changed, 28 insertions(+), 1 deletion(-)
===================================================================
--- 2.6.13+ckrm.e19/include/linux/ckrm_mem.h 2005-10-03 13:13:44.000000000
+0200
+++ 2.6.13+ckrm.e19+numa/include/linux/ckrm_mem.h 2005-10-03
13:19:59.000000000 +0200
@@ -42,6 +42,7 @@ struct ckrm_zone {
int pg_total; /* # of pages used by a class in this
czone */
int pg_borrowed; /* # of pages borrowed from parent */
int pg_lent; /* # of pages lent to children */
+ int max_pg_per_czone; /* max of pages ever used in this czone
*/
};
struct ckrm_mem_res {
@@ -51,6 +52,8 @@ struct ckrm_mem_res {
struct ckrm_shares shares;
struct list_head mcls_list; /* list of all 1-level classes */
struct kref nr_users; /* ref count */
+ int max_pg_per_class; /* max of pages ever used by this class
*/
+ int max_shrink_atlimit; /* max of shrink_class ever called */
int pg_guar; /* absolute # of guarantee */
int pg_limit; /* absolute # of limit */
int pg_unused; /* # of pages left to this class
diff -Naurp 2.6.13+ckrm.e19/kernel/ckrm/ckrm_memcore.c
2.6.13+ckrm.e19+numa/kernel/ckrm/ckrm_memcore.c
--- 2.6.13+ckrm.e19/kernel/ckrm/ckrm_memcore.c 2005-10-03 13:13:44.000000000
+0200
+++ 2.6.13+ckrm.e19+numa/kernel/ckrm/ckrm_memcore.c 2005-10-06
14:53:07.000000000 +0200
@@ -446,12 +446,20 @@ mem_get_stats(void *my_res, struct seq_f
if (!res)
return -EINVAL;
+ seq_printf(sfile, "--------- Memory Resource stats start ---------\n");
+ seq_printf(sfile,"Maximum of shrink ever called by the class = %d\n",
+ res->max_shrink_atlimit);
+ seq_printf(sfile,"Maximum of pages ever used by the class = %d\n",
+ res->max_pg_per_class);
+
for (i = 0; i < ckrm_nr_czones; i++) {
+ seq_printf(sfile,"Maximum of pages ever used into the"
+ " ckrm zone index %d = %d \n",
+ i, res->ckrm_zone[i].max_pg_per_czone);
pg_lent += res->ckrm_zone[i].pg_lent;
pg_total += res->ckrm_zone[i].pg_total;
pg_borrowed += res->ckrm_zone[i].pg_borrowed;
}
- seq_printf(sfile, "--------- Memory Resource stats start ---------\n");
if (res == ckrm_mem_root_class) {
for_each_zone(zone) {
if (zone->present_pages == 0)
@@ -650,8 +658,14 @@ static int
mem_reset_stats(void *my_res)
{
struct ckrm_mem_res *res = my_res;
+ int i;
+
printk(KERN_INFO "MEM_RC: reset stats called for class %s\n",
res->core->name);
+ res->max_shrink_atlimit = 0;
+ res->max_pg_per_class = 0;
+ for (i = 0; i < ckrm_nr_czones; i++)
+ res->ckrm_zone[i].max_pg_per_czone = 0;
return 0;
}
@@ -689,6 +703,13 @@ init_ckrm_mem_res(void)
ckrm_czindex[zindex] = ckrm_nr_czones++;
else
ckrm_czindex[zindex] = -1;
+
+ /* ckrm stats are displayed per ckrm zone index
+ * this trace is to match czindex with numa topology.
+ */
+ printk(KERN_INFO "%2d: ckrm zone index = %2d for node %2d zone
%s\n",
+ zindex, ckrm_czindex[zindex],
+ zone_to_node_id(zone), zone->name);
zindex++;
}
diff -Naurp 2.6.13+ckrm.e19/kernel/ckrm/ckrm_memctlr.c
2.6.13+ckrm.e19+numa/kernel/ckrm/ckrm_memctlr.c
--- 2.6.13+ckrm.e19/kernel/ckrm/ckrm_memctlr.c 2005-10-03 13:13:44.000000000
+0200
+++ 2.6.13+ckrm.e19+numa/kernel/ckrm/ckrm_memctlr.c 2005-10-03
13:19:59.000000000 +0200
@@ -73,8 +73,10 @@ add_use_count(struct ckrm_mem_res *cls,
return;
czone = &cls->ckrm_zone[czindex];
czone->pg_total += cnt;
+ czone->max_pg_per_czone = max(czone->max_pg_per_czone, czone->pg_total);
for (i = 0; i < ckrm_nr_czones; i++)
pg_total += cls->ckrm_zone[i].pg_total;
+ cls->max_pg_per_class = max(cls->max_pg_per_class, pg_total);
if (borrow)
czone->pg_lent += cnt;
@@ -446,6 +448,7 @@ ckrm_shrink_atlimit(struct ckrm_mem_res
clear_bit(CLS_AT_LIMIT, &cls->flags);
return;
}
+ cls->max_shrink_atlimit++;
spin_lock_irqsave(&ckrm_mem_lock, flags);
list_add(&cls->shrink_list, &ckrm_shrink_list);
spin_unlock_irqrestore(&ckrm_mem_lock, flags);
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
ckrm-tech mailing list
https://lists.sourceforge.net/lists/listinfo/ckrm-tech