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] This patch is to make xentop able to print vcpu usage fo

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] This patch is to make xentop able to print vcpu usage for out of order
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 22 Oct 2005 09:26:07 +0000
Delivery-date: Sat, 22 Oct 2005 09:23:47 +0000
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/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 kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 37050ba0e35c7321bab0b628f95f6e036241c75c
# Parent  3951b5b01cfdbdd3157d40cc7c764853d0594690
This patch is to make xentop able to print vcpu usage for out of order
enabled vcpus in a domain. This really isn't an issue anymore with the
changes made to dom0 ops and xm/xend. 

But, I provide it because:

- Josh noticed my previous patch called getvcpuinfo twice for each vpcu,
which was completely silly.

- this patch would be useful in the remote chance that domain vpcus are
enabled out of order. 

Signed-off-by: Daniel Stekloff <dsteklof@xxxxxxxxxx>

diff -r 3951b5b01cfd -r 37050ba0e35c 
tools/xenstat/libxenstat/src/xen-interface.c
--- a/tools/xenstat/libxenstat/src/xen-interface.c      Sat Oct 22 06:35:36 2005
+++ b/tools/xenstat/libxenstat/src/xen-interface.c      Sat Oct 22 06:37:15 2005
@@ -173,9 +173,9 @@
        return op.u.getdomaininfolist.num_domains;
 }
 
-/* Returns cpu usage data from dom0 */
-long long xi_get_vcpu_usage(xi_handle *handle, unsigned int domain,
-                            unsigned int vcpu)
+/* Get vcpu info from a domain */
+int xi_get_domain_vcpu_info(xi_handle *handle, unsigned int domain, 
+                            unsigned int vcpu, dom0_getvcpuinfo_t *info)
 {
        dom0_op_t op;
        op.u.getvcpuinfo.domain = domain;
@@ -186,7 +186,9 @@
                return -1;
        }
 
-       return op.u.getvcpuinfo.cpu_time;
+       memcpy(info, &op.u.getvcpuinfo, sizeof(dom0_getvcpuinfo_t));
+
+       return 0;
 }
 
 /* gets xen version information from hypervisor */
diff -r 3951b5b01cfd -r 37050ba0e35c 
tools/xenstat/libxenstat/src/xen-interface.h
--- a/tools/xenstat/libxenstat/src/xen-interface.h      Sat Oct 22 06:35:36 2005
+++ b/tools/xenstat/libxenstat/src/xen-interface.h      Sat Oct 22 06:37:15 2005
@@ -41,5 +41,6 @@
 int xi_get_domaininfolist(xi_handle *, dom0_getdomaininfo_t *, unsigned int,
                           unsigned int);
 
-/* Returns cpu usage data from dom0 */
-long long xi_get_vcpu_usage(xi_handle *, unsigned int, unsigned int);
+/* Get vcpu info from a domain */
+int xi_get_domain_vcpu_info(xi_handle *, unsigned int, unsigned int,
+                            dom0_getvcpuinfo_t *);
diff -r 3951b5b01cfd -r 37050ba0e35c tools/xenstat/libxenstat/src/xenstat.c
--- a/tools/xenstat/libxenstat/src/xenstat.c    Sat Oct 22 06:35:36 2005
+++ b/tools/xenstat/libxenstat/src/xenstat.c    Sat Oct 22 06:37:15 2005
@@ -51,7 +51,7 @@
        unsigned int id;
        unsigned int state;
        unsigned long long cpu_ns;
-       unsigned int num_vcpus;
+       unsigned int num_vcpus;         /* No. vcpus configured for domain */
        xenstat_vcpu *vcpus;            /* Array of length num_vcpus */
        unsigned long long cur_mem;     /* Current memory reservation */
        unsigned long long max_mem;     /* Total memory allowed */
@@ -61,6 +61,7 @@
 };
 
 struct xenstat_vcpu {
+       unsigned int online;
        unsigned long long ns;
 };
 
@@ -229,7 +230,7 @@
                        domain->id = domaininfo[i].domain;
                        domain->state = domaininfo[i].flags;
                        domain->cpu_ns = domaininfo[i].cpu_time;
-                       domain->num_vcpus = domaininfo[i].nr_online_vcpus;
+                       domain->num_vcpus = (domaininfo[i].max_vcpu_id+1);
                        domain->vcpus = NULL;
                        domain->cur_mem =
                            ((unsigned long long)domaininfo[i].tot_pages)
@@ -344,7 +345,7 @@
        return domain->cpu_ns;
 }
 
-/* Find the number of VCPUs allocated to a domain */
+/* Find the number of VCPUs for a domain */
 unsigned int xenstat_domain_num_vcpus(xenstat_domain * domain)
 {
        return domain->num_vcpus;
@@ -432,22 +433,24 @@
 static int xenstat_collect_vcpus(xenstat_node * node)
 {
        unsigned int i, vcpu;
+
        /* Fill in VCPU information */
        for (i = 0; i < node->num_domains; i++) {
                node->domains[i].vcpus = malloc(node->domains[i].num_vcpus
                                                * sizeof(xenstat_vcpu));
                if (node->domains[i].vcpus == NULL)
                        return 0;
-
+       
                for (vcpu = 0; vcpu < node->domains[i].num_vcpus; vcpu++) {
                        /* FIXME: need to be using a more efficient mechanism*/
-                       long long vcpu_time;
-                       vcpu_time = xi_get_vcpu_usage(node->handle->xihandle,
-                                                     node->domains[i].id,
-                                                     vcpu);
-                       if (vcpu_time < 0)
+                       dom0_getvcpuinfo_t info;
+
+                       if (xi_get_domain_vcpu_info(node->handle->xihandle,
+                           node->domains[i].id, vcpu, &info) != 0)
                                return 0;
-                       node->domains[i].vcpus[vcpu].ns = vcpu_time;
+
+                       node->domains[i].vcpus[vcpu].online = info.online;
+                       node->domains[i].vcpus[vcpu].ns = info.cpu_time;
                }
        }
        return 1;
@@ -464,6 +467,12 @@
 /* Free VCPU information in handle - nothing to do */
 static void xenstat_uninit_vcpus(xenstat_handle * handle)
 {
+}
+
+/* Get VCPU online status */
+unsigned int xenstat_vcpu_online(xenstat_vcpu * vcpu)
+{
+       return vcpu->online;
 }
 
 /* Get VCPU usage */
diff -r 3951b5b01cfd -r 37050ba0e35c tools/xenstat/libxenstat/src/xenstat.h
--- a/tools/xenstat/libxenstat/src/xenstat.h    Sat Oct 22 06:35:36 2005
+++ b/tools/xenstat/libxenstat/src/xenstat.h    Sat Oct 22 06:37:15 2005
@@ -119,6 +119,7 @@
  */
 
 /* Get VCPU usage */
+unsigned int xenstat_vcpu_online(xenstat_vcpu * vcpu);
 unsigned long long xenstat_vcpu_ns(xenstat_vcpu * vcpu);
 
 
diff -r 3951b5b01cfd -r 37050ba0e35c tools/xenstat/xentop/xentop.c
--- a/tools/xenstat/xentop/xentop.c     Sat Oct 22 06:35:36 2005
+++ b/tools/xenstat/xentop/xentop.c     Sat Oct 22 06:37:15 2005
@@ -713,13 +713,16 @@
 
        num_vcpus = xenstat_domain_num_vcpus(domain);
 
-       /* for all vcpus dump out values */
+       /* for all online vcpus dump out values */
        for (i=0; i< num_vcpus; i++) {
                vcpu = xenstat_domain_vcpu(domain,i);
 
-               if (i != 0 && (i%5)==0)
-                       print("\n        ");
-               print(" %2u: %10llus", i, xenstat_vcpu_ns(vcpu)/1000000000);
+               if (xenstat_vcpu_online(vcpu) > 0) {
+                       if (i != 0 && (i%5)==0)
+                               print("\n        ");
+                       print(" %2u: %10llus", i, 
+                                       xenstat_vcpu_ns(vcpu)/1000000000);
+               }
        }
        print("\n");
 }

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] This patch is to make xentop able to print vcpu usage for out of order, Xen patchbot -unstable <=