aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstat/libxenstat
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-11-05 12:00:58 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-11-05 12:00:58 +0000
commit14ec087884b13aa9de838ab11fd4e67e255d4ded (patch)
treea605c5c028b9297194723c970dc02a514a8e3175 /tools/xenstat/libxenstat
parent397ade9be366651e55d3e3aee419cb8160790699 (diff)
downloadxen-14ec087884b13aa9de838ab11fd4e67e255d4ded.tar.gz
xen-14ec087884b13aa9de838ab11fd4e67e255d4ded.tar.bz2
xen-14ec087884b13aa9de838ab11fd4e67e255d4ded.zip
xentop: Add two more VBD statistics
In addition to VBD read/write request#, add VBD read/write sector# also. It makes VBD throughput observation easier. As the method to get such info is OS dependent, just Linux version code is added. Signed-off-by: Yang Xiaowei <xiaowei.yang@intel.com>
Diffstat (limited to 'tools/xenstat/libxenstat')
-rw-r--r--tools/xenstat/libxenstat/src/xenstat.c12
-rw-r--r--tools/xenstat/libxenstat/src/xenstat.h2
-rw-r--r--tools/xenstat/libxenstat/src/xenstat_linux.c12
-rw-r--r--tools/xenstat/libxenstat/src/xenstat_priv.h2
4 files changed, 28 insertions, 0 deletions
diff --git a/tools/xenstat/libxenstat/src/xenstat.c b/tools/xenstat/libxenstat/src/xenstat.c
index a5fbca1d5e..3332051363 100644
--- a/tools/xenstat/libxenstat/src/xenstat.c
+++ b/tools/xenstat/libxenstat/src/xenstat.c
@@ -653,6 +653,18 @@ unsigned long long xenstat_vbd_wr_reqs(xenstat_vbd * vbd)
return vbd->wr_reqs;
}
+/* Get the number of READ sectors */
+unsigned long long xenstat_vbd_rd_sects(xenstat_vbd * vbd)
+{
+ return vbd->rd_sects;
+}
+
+/* Get the number of WRITE sectors */
+unsigned long long xenstat_vbd_wr_sects(xenstat_vbd * vbd)
+{
+ return vbd->wr_sects;
+}
+
static char *xenstat_get_domain_name(xenstat_handle *handle, unsigned int domain_id)
{
char path[80], *vmpath;
diff --git a/tools/xenstat/libxenstat/src/xenstat.h b/tools/xenstat/libxenstat/src/xenstat.h
index e7bf3e130c..dfc27d4d2c 100644
--- a/tools/xenstat/libxenstat/src/xenstat.h
+++ b/tools/xenstat/libxenstat/src/xenstat.h
@@ -183,5 +183,7 @@ unsigned int xenstat_vbd_dev(xenstat_vbd * vbd);
unsigned long long xenstat_vbd_oo_reqs(xenstat_vbd * vbd);
unsigned long long xenstat_vbd_rd_reqs(xenstat_vbd * vbd);
unsigned long long xenstat_vbd_wr_reqs(xenstat_vbd * vbd);
+unsigned long long xenstat_vbd_rd_sects(xenstat_vbd * vbd);
+unsigned long long xenstat_vbd_wr_sects(xenstat_vbd * vbd);
#endif /* XENSTAT_H */
diff --git a/tools/xenstat/libxenstat/src/xenstat_linux.c b/tools/xenstat/libxenstat/src/xenstat_linux.c
index 5d0b976eec..a390ac8ed7 100644
--- a/tools/xenstat/libxenstat/src/xenstat_linux.c
+++ b/tools/xenstat/libxenstat/src/xenstat_linux.c
@@ -243,6 +243,18 @@ int xenstat_collect_vbds(xenstat_node * node)
continue;
}
+ if((read_attributes_vbd(dp->d_name, "statistics/rd_sect", buf, 256)<=0)
+ || ((ret = sscanf(buf, "%llu", &vbd.rd_sects)) != 1))
+ {
+ continue;
+ }
+
+ if((read_attributes_vbd(dp->d_name, "statistics/wr_sect", buf, 256)<=0)
+ || ((ret = sscanf(buf, "%llu", &vbd.wr_sects)) != 1))
+ {
+ continue;
+ }
+
if (domain->vbds == NULL) {
domain->num_vbds = 1;
domain->vbds = malloc(sizeof(xenstat_vbd));
diff --git a/tools/xenstat/libxenstat/src/xenstat_priv.h b/tools/xenstat/libxenstat/src/xenstat_priv.h
index 46607a61f2..ca11d1b3d0 100644
--- a/tools/xenstat/libxenstat/src/xenstat_priv.h
+++ b/tools/xenstat/libxenstat/src/xenstat_priv.h
@@ -92,6 +92,8 @@ struct xenstat_vbd {
unsigned long long oo_reqs;
unsigned long long rd_reqs;
unsigned long long wr_reqs;
+ unsigned long long rd_sects;
+ unsigned long long wr_sects;
};
extern int xenstat_collect_networks(xenstat_node * node);