diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-11-05 12:00:58 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-11-05 12:00:58 +0000 |
commit | 14ec087884b13aa9de838ab11fd4e67e255d4ded (patch) | |
tree | a605c5c028b9297194723c970dc02a514a8e3175 /tools/xenstat/libxenstat | |
parent | 397ade9be366651e55d3e3aee419cb8160790699 (diff) | |
download | xen-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.c | 12 | ||||
-rw-r--r-- | tools/xenstat/libxenstat/src/xenstat.h | 2 | ||||
-rw-r--r-- | tools/xenstat/libxenstat/src/xenstat_linux.c | 12 | ||||
-rw-r--r-- | tools/xenstat/libxenstat/src/xenstat_priv.h | 2 |
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); |