summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTao Ma <boyu.mt@taobao.com>2011-01-14 09:06:03 +0100
committerJens Axboe <jaxboe@fusionio.com>2011-01-14 09:06:03 +0100
commitb7e74b0087fe5d687c6a43a01a2e02d60b618ae0 (patch)
tree03fdf748971e174e7a886840037627c8a862be5b
parent5480f591a58df0e873ab80ba21e7b81b9a6fa0c5 (diff)
downloadblktrace-b7e74b0087fe5d687c6a43a01a2e02d60b618ae0.tar.gz
blktrace-b7e74b0087fe5d687c6a43a01a2e02d60b618ae0.tar.bz2
blkiomon: Fix an output error
When we give out some statistics in blkiomon, we don't consider the situation that the device has no correspoinding action. See if there is no disk read during the interval, the output in my box is like: sizes read (bytes): num 0, min -1, max 0, sum 0, squ 0, avg nan, var nan With the fix, now it looks like: sizes read (bytes): num 0, min -1, max 0, sum 0, squ 0, avg 0.0, var 0.0 Cc: Martin Peschke <mpeschke@linux.vnet.ibm.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
-rw-r--r--stats.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/stats.h b/stats.h
index fdedf27..5b9a313 100644
--- a/stats.h
+++ b/stats.h
@@ -75,6 +75,9 @@ static inline void minmax_to_be(struct minmax *mm)
static inline double minmax_avg(struct minmax *mm)
{
+ if (!mm->num)
+ return 0;
+
return (mm->sum / (double)mm->num);
}
@@ -82,6 +85,9 @@ static inline double minmax_var(struct minmax *mm)
{
double num = (double)mm->num;
+ if (!mm->num)
+ return 0;
+
return ((mm->sos - ((mm->sum * mm->sum) / num)) / num);
}