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

Reply via email to