[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tools/xentop: Display '-' when stats are not available.
On Wed, Feb 20, 2019 at 04:19:25PM +0000, Ronan Abhamon wrote: > From: Pritha Srivastava <pritha.srivastava@xxxxxxxxxx> > > Displaying 0 is misleading. > > Signed-off-by: Pritha Srivastava <pritha.srivastava@xxxxxxxxxx> > Signed-off-by: Ronan Abhamon <ronan.abhamon@xxxxxxxx> > --- > tools/xenstat/libxenstat/src/xenstat.c | 6 + > tools/xenstat/libxenstat/src/xenstat.h | 3 + > tools/xenstat/libxenstat/src/xenstat_linux.c | 47 +++--- > tools/xenstat/libxenstat/src/xenstat_priv.h | 1 + > tools/xenstat/xentop/xentop.c | 159 +++++++++++++++---- > 5 files changed, 158 insertions(+), 58 deletions(-) > > diff --git a/tools/xenstat/libxenstat/src/xenstat.c > b/tools/xenstat/libxenstat/src/xenstat.c > index fbe44f3c56..8fa12d7bc0 100644 > --- a/tools/xenstat/libxenstat/src/xenstat.c > +++ b/tools/xenstat/libxenstat/src/xenstat.c > @@ -729,6 +729,12 @@ unsigned long long xenstat_vbd_wr_sects(xenstat_vbd * > vbd) > return vbd->wr_sects; > } > > +/* Returns error while getting stats (1 if error happened, 0 otherwise) */ > +unsigned int xenstat_vbd_error(xenstat_vbd * vbd) > +{ > + return vbd->error; > +} > + You can do away with this function by accessing vbd->error directly in code. > /* > * Tmem functions > */ > diff --git a/tools/xenstat/libxenstat/src/xenstat.h > b/tools/xenstat/libxenstat/src/xenstat.h > index 47ec60e14d..fe13b65727 100644 > --- a/tools/xenstat/libxenstat/src/xenstat.h > +++ b/tools/xenstat/libxenstat/src/xenstat.h > @@ -193,6 +193,9 @@ 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); > > +/* Returns error while getting stats (1 if error happened, 0 otherwise) */ > +unsigned int xenstat_vbd_error(xenstat_vbd * vbd); > + > /* > * Tmem functions - extract tmem information > */ > diff --git a/tools/xenstat/libxenstat/src/xenstat_linux.c > b/tools/xenstat/libxenstat/src/xenstat_linux.c > index 7cdd3bf91f..9421ca43c8 100644 > --- a/tools/xenstat/libxenstat/src/xenstat_linux.c > +++ b/tools/xenstat/libxenstat/src/xenstat_linux.c > @@ -436,13 +436,15 @@ int xenstat_collect_vbds(xenstat_node * node) > ret = sscanf(dp->d_name, "%3s-%u-%u", buf, &domid, &vbd.dev); > if (ret != 3) > continue; > + if (!(strstr(buf, "vbd")) && !(strstr(buf, "tap"))) > + continue; > > if (strcmp(buf,"vbd") == 0) > vbd.back_type = 1; > else if (strcmp(buf,"tap") == 0) > vbd.back_type = 2; > else > - continue; > + vbd.back_type = 0; > > domain = xenstat_node_domain(node, domid); > if (domain == NULL) { > @@ -453,36 +455,29 @@ int xenstat_collect_vbds(xenstat_node * node) > continue; > } > > - if((read_attributes_vbd(dp->d_name, "statistics/oo_req", buf, > 256)<=0) > - || ((ret = sscanf(buf, "%llu", &vbd.oo_reqs)) != 1)) > - { > - continue; > - } > - > - if((read_attributes_vbd(dp->d_name, "statistics/rd_req", buf, > 256)<=0) > - || ((ret = sscanf(buf, "%llu", &vbd.rd_reqs)) != 1)) > + if (vbd.back_type == 1 || vbd.back_type == 2) > { > - continue; > - } > > - if((read_attributes_vbd(dp->d_name, "statistics/wr_req", buf, > 256)<=0) > - || ((ret = sscanf(buf, "%llu", &vbd.wr_reqs)) != 1)) > - { > - continue; > - } > - > - if((read_attributes_vbd(dp->d_name, "statistics/rd_sect", buf, > 256)<=0) > - || ((ret = sscanf(buf, "%llu", &vbd.rd_sects)) != 1)) > - { > - continue; > + vbd.error = 0; > + > + if ((read_attributes_vbd(dp->d_name, > "statistics/oo_req", buf, 256)<=0) || > + ((ret = sscanf(buf, "%llu", &vbd.oo_reqs)) != > 1) || > + (read_attributes_vbd(dp->d_name, > "statistics/rd_req", buf, 256)<=0) || > + ((ret = sscanf(buf, "%llu", &vbd.rd_reqs)) != > 1) || > + (read_attributes_vbd(dp->d_name, > "statistics/wr_req", buf, 256)<=0) || > + ((ret = sscanf(buf, "%llu", &vbd.wr_reqs)) != > 1) || > + (read_attributes_vbd(dp->d_name, > "statistics/rd_sect", buf, 256)<=0) || > + ((ret = sscanf(buf, "%llu", &vbd.wr_sects)) != > 1) || > + (read_attributes_vbd(dp->d_name, > "statistics/wr_sect", buf, 256)<=0) || > + ((ret = sscanf(buf, "%llu", &vbd.wr_sects)) != > 1)) > + { > + vbd.error = 1; > + } > } > - > - if((read_attributes_vbd(dp->d_name, "statistics/wr_sect", buf, > 256)<=0) > - || ((ret = sscanf(buf, "%llu", &vbd.wr_sects)) != 1)) > + else > { > - continue; > + vbd.error = 1; > } > - > if ((xenstat_save_vbd(domain, &vbd)) == NULL) { > perror("Allocation error"); > return 0; > diff --git a/tools/xenstat/libxenstat/src/xenstat_priv.h > b/tools/xenstat/libxenstat/src/xenstat_priv.h > index 74e0774a5e..ebfcd0fff6 100644 > --- a/tools/xenstat/libxenstat/src/xenstat_priv.h > +++ b/tools/xenstat/libxenstat/src/xenstat_priv.h > @@ -98,6 +98,7 @@ struct xenstat_network { > struct xenstat_vbd { > unsigned int back_type; > unsigned int dev; > + unsigned int error; > unsigned long long oo_reqs; > unsigned long long rd_reqs; > unsigned long long wr_reqs; > diff --git a/tools/xenstat/xentop/xentop.c b/tools/xenstat/xentop/xentop.c > index c46581062b..8ef6f49ff9 100644 > --- a/tools/xenstat/xentop/xentop.c > +++ b/tools/xenstat/xentop/xentop.c > @@ -32,6 +32,7 @@ > #include <time.h> > #include <unistd.h> > #include <signal.h> > +#include <stdbool.h> > #if defined(__linux__) > #include <linux/kdev_t.h> > #endif > @@ -87,7 +88,7 @@ static int handle_key(int); > static int compare(unsigned long long, unsigned long long); > static int compare_domains(xenstat_domain **, xenstat_domain **); > static unsigned long long tot_net_bytes( xenstat_domain *, int); > -static unsigned long long tot_vbd_reqs( xenstat_domain *, int); > +static bool tot_vbd_reqs( xenstat_domain *, int, unsigned long long *); Since you're touching this anyway, I would like to request the extraneous space be removed. > > /* Field functions */ > static int compare_state(xenstat_domain *domain1, xenstat_domain *domain2); > @@ -685,70 +686,140 @@ static void print_vbds(xenstat_domain *domain) > returning -1,0,1 * for <,=,> */ > static int compare_vbd_oo(xenstat_domain *domain1, xenstat_domain *domain2) > { > - return -compare(tot_vbd_reqs(domain1, FIELD_VBD_OO), > - tot_vbd_reqs(domain2, FIELD_VBD_OO)); > + unsigned long long dom1_vbd_oo = 0, dom2_vbd_oo = 0; > + > + tot_vbd_reqs(domain1, FIELD_VBD_OO, &dom1_vbd_oo); > + tot_vbd_reqs(domain1, FIELD_VBD_OO, &dom2_vbd_oo); > + > + return -compare(dom1_vbd_oo, > + dom2_vbd_oo); This now fits into one line. There are other instances as well. Please fix them in the next version. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |