WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] tmem, xentop: Report a few key per-domain

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] tmem, xentop: Report a few key per-domain tmem statistics in xentop.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 09 Dec 2009 03:25:15 -0800
Delivery-date: Wed, 09 Dec 2009 03:25:48 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1260355571 0
# Node ID 9e9746e635f9ec1ef1a3e0cbb425e89112f8e63b
# Parent  18342df0f9dcf3a0a5a7ce05ea0218cf94335157
tmem, xentop: Report a few key per-domain tmem statistics in xentop.

Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx>
---
 tools/xenstat/libxenstat/src/xenstat.c      |   62 ++++++++++++++++++++++++++++
 tools/xenstat/libxenstat/src/xenstat.h      |   12 +++++
 tools/xenstat/libxenstat/src/xenstat_priv.h |    8 +++
 tools/xenstat/xentop/xentop.c               |   31 ++++++++++++++
 4 files changed, 113 insertions(+)

diff -r 18342df0f9dc -r 9e9746e635f9 tools/xenstat/libxenstat/src/xenstat.c
--- a/tools/xenstat/libxenstat/src/xenstat.c    Wed Dec 09 10:44:56 2009 +0000
+++ b/tools/xenstat/libxenstat/src/xenstat.c    Wed Dec 09 10:46:11 2009 +0000
@@ -129,6 +129,32 @@ void xenstat_uninit(xenstat_handle * han
                free(handle->priv);
                free(handle);
        }
+}
+
+static inline unsigned long long parse(char *s, char *match)
+{
+       char *s1 = strstr(s,match);
+       unsigned long long ret;
+
+       if ( s1 == NULL )
+               return 0LL;
+       s1 += 2;
+       if ( *s1++ != ':' )
+               return 0LL;
+       sscanf(s1,"%llu",&ret);
+       return ret;
+}
+
+void domain_get_tmem_stats(xenstat_handle * handle, xenstat_domain * domain)
+{
+       char buffer[4096];
+
+       xc_tmem_control(handle->xc_handle,-1,TMEMC_LIST,domain->id,
+                        sizeof(buffer),-1,-1,buffer);
+       domain->tmem_stats.curr_eph_pages = parse(buffer,"Ec");
+       domain->tmem_stats.succ_eph_gets = parse(buffer,"Ge");
+       domain->tmem_stats.succ_pers_puts = parse(buffer,"Pp");
+       domain->tmem_stats.succ_pers_gets = parse(buffer,"Gp");
 }
 
 xenstat_node *xenstat_get_node(xenstat_handle * handle, unsigned int flags)
@@ -232,11 +258,13 @@ xenstat_node *xenstat_get_node(xenstat_h
                        domain->networks = NULL;
                        domain->num_vbds = 0;
                        domain->vbds = NULL;
+                       domain_get_tmem_stats(handle,domain);
 
                        domain++;
                        node->num_domains++;
                }
        } while (new_domains == DOMAIN_CHUNK_SIZE);
+
 
        /* Run all the extra data collectors requested */
        node->flags = 0;
@@ -674,6 +702,40 @@ unsigned long long xenstat_vbd_wr_sects(
        return vbd->wr_sects;
 }
 
+/*
+ * Tmem functions
+ */
+
+xenstat_tmem *xenstat_domain_tmem(xenstat_domain * domain)
+{
+       return &domain->tmem_stats;
+}
+
+/* Get the current number of ephemeral pages */
+unsigned long long xenstat_tmem_curr_eph_pages(xenstat_tmem *tmem)
+{
+       return tmem->curr_eph_pages;
+}
+
+/* Get the number of successful ephemeral gets */
+unsigned long long xenstat_tmem_succ_eph_gets(xenstat_tmem *tmem)
+{
+       return tmem->succ_eph_gets;
+}
+
+/* Get the number of successful persistent puts */
+unsigned long long xenstat_tmem_succ_pers_puts(xenstat_tmem *tmem)
+{
+       return tmem->succ_pers_puts;
+}
+
+/* Get the number of successful persistent gets */
+unsigned long long xenstat_tmem_succ_pers_gets(xenstat_tmem *tmem)
+{
+       return tmem->succ_pers_gets;
+}
+
+
 static char *xenstat_get_domain_name(xenstat_handle *handle, unsigned int 
domain_id)
 {
        char path[80], *vmpath;
diff -r 18342df0f9dc -r 9e9746e635f9 tools/xenstat/libxenstat/src/xenstat.h
--- a/tools/xenstat/libxenstat/src/xenstat.h    Wed Dec 09 10:44:56 2009 +0000
+++ b/tools/xenstat/libxenstat/src/xenstat.h    Wed Dec 09 10:46:11 2009 +0000
@@ -27,6 +27,7 @@ typedef struct xenstat_vcpu xenstat_vcpu
 typedef struct xenstat_vcpu xenstat_vcpu;
 typedef struct xenstat_network xenstat_network;
 typedef struct xenstat_vbd xenstat_vbd;
+typedef struct xenstat_tmem xenstat_tmem;
 
 /* Initialize the xenstat library.  Returns a handle to be used with
  * subsequent calls to the xenstat library, or NULL if an error occurs. */
@@ -132,6 +133,9 @@ xenstat_vbd *xenstat_domain_vbd(xenstat_
 xenstat_vbd *xenstat_domain_vbd(xenstat_domain * domain,
                                    unsigned int vbd);
 
+/* Get the tmem information for a given domain */
+xenstat_tmem *xenstat_domain_tmem(xenstat_domain * domain);
+
 /*
  * VCPU functions - extract information from a xenstat_vcpu
  */
@@ -189,4 +193,12 @@ unsigned long long xenstat_vbd_rd_sects(
 unsigned long long xenstat_vbd_rd_sects(xenstat_vbd * vbd);
 unsigned long long xenstat_vbd_wr_sects(xenstat_vbd * vbd);
 
+/*
+ * Tmem functions - extract tmem information
+ */
+unsigned long long xenstat_tmem_curr_eph_pages(xenstat_tmem *tmem);
+unsigned long long xenstat_tmem_succ_eph_gets(xenstat_tmem *tmem);
+unsigned long long xenstat_tmem_succ_pers_puts(xenstat_tmem *tmem);
+unsigned long long xenstat_tmem_succ_pers_gets(xenstat_tmem *tmem);
+
 #endif /* XENSTAT_H */
diff -r 18342df0f9dc -r 9e9746e635f9 tools/xenstat/libxenstat/src/xenstat_priv.h
--- a/tools/xenstat/libxenstat/src/xenstat_priv.h       Wed Dec 09 10:44:56 
2009 +0000
+++ b/tools/xenstat/libxenstat/src/xenstat_priv.h       Wed Dec 09 10:46:11 
2009 +0000
@@ -52,6 +52,13 @@ struct xenstat_node {
        long freeable_mb;
 };
 
+struct xenstat_tmem {
+       unsigned long long curr_eph_pages;
+       unsigned long long succ_eph_gets;
+       unsigned long long succ_pers_puts;
+       unsigned long long succ_pers_gets;
+};
+
 struct xenstat_domain {
        unsigned int id;
        char *name;
@@ -66,6 +73,7 @@ struct xenstat_domain {
        xenstat_network *networks;      /* Array of length num_networks */
        unsigned int num_vbds;
        xenstat_vbd *vbds;
+       xenstat_tmem tmem_stats;
 };
 
 struct xenstat_vcpu {
diff -r 18342df0f9dc -r 9e9746e635f9 tools/xenstat/xentop/xentop.c
--- a/tools/xenstat/xentop/xentop.c     Wed Dec 09 10:44:56 2009 +0000
+++ b/tools/xenstat/xentop/xentop.c     Wed Dec 09 10:46:11 2009 +0000
@@ -202,6 +202,7 @@ int show_vcpus = 0;
 int show_vcpus = 0;
 int show_networks = 0;
 int show_vbds = 0;
+int show_tmem = 0;
 int repeat_header = 0;
 int show_full_name = 0;
 #define PROMPT_VAL_LEN 80
@@ -354,6 +355,9 @@ static int handle_key(int ch)
                case 'b': case 'B':
                        show_vbds ^= 1;
                        break;
+               case 't': case 'T':
+                       show_tmem ^= 1;
+                       break;
                case 'r': case 'R':
                        repeat_header ^= 1;
                        break;
@@ -889,6 +893,11 @@ void do_bottom_line(void)
                attr_addstr(show_vbds ? COLOR_PAIR(1) : 0, "ds");
                addstr("  ");
 
+               /* tmem */
+               addch(A_REVERSE | 'T');
+               attr_addstr(show_tmem ? COLOR_PAIR(1) : 0, "mem");
+               addstr("  ");
+
 
                /* vcpus */
                addch(A_REVERSE | 'V');
@@ -1018,6 +1027,23 @@ void do_vbd(xenstat_domain *domain)
        }
 }
 
+/* Output all tmem information */
+void do_tmem(xenstat_domain *domain)
+{
+       xenstat_tmem *tmem = xenstat_domain_tmem(domain);
+       unsigned long long curr_eph_pages = xenstat_tmem_curr_eph_pages(tmem);
+       unsigned long long succ_eph_gets = xenstat_tmem_succ_eph_gets(tmem);
+       unsigned long long succ_pers_puts = xenstat_tmem_succ_pers_puts(tmem);
+       unsigned long long succ_pers_gets = xenstat_tmem_succ_pers_gets(tmem);
+
+       if (curr_eph_pages | succ_eph_gets | succ_pers_puts | succ_pers_gets)
+               print("Tmem:  Curr eph pages: %8llu   Succ eph gets: %8llu   "
+                     "Succ pers puts: %8llu   Succ pers gets: %8llu\n",
+                       curr_eph_pages, succ_eph_gets,
+                       succ_pers_puts, succ_pers_gets);
+
+}
+
 static void top(void)
 {
        xenstat_domain **domains;
@@ -1064,6 +1090,8 @@ static void top(void)
                        do_network(domains[i]);
                if (show_vbds)
                        do_vbd(domains[i]);
+               if (show_tmem)
+                       do_tmem(domains[i]);
        }
 
        if (!batch)
@@ -1138,6 +1166,9 @@ int main(int argc, char **argv)
                        break;
                case 'f':
                        show_full_name = 1;
+                       break;
+               case 't':
+                       show_tmem = 1;
                        break;
                }
        }

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] tmem, xentop: Report a few key per-domain tmem statistics in xentop., Xen patchbot-unstable <=