* [PATCH] stats: Fix computation of standard deviation
@ 2011-07-29 22:23 Yu-ju Hong
2011-07-30 7:19 ` Jens Axboe
0 siblings, 1 reply; 2+ messages in thread
From: Yu-ju Hong @ 2011-07-29 22:23 UTC (permalink / raw)
To: Jens Axboe; +Cc: fio, Nauman Rafique, Eric Gouriou, Yu-ju Hong
Fix the computation of standard deviation for a group
of jobs. Please see the below link for the
approximation formula used.
<http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
The formula was originally presented here:
<ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/79/773/
CS-TR-79-773.pdf>
Signed-off-by: Yu-ju Hong <yjhong@google.com>
---
stat.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/stat.c b/stat.c
index 9f22c6e..8be4be5 100644
--- a/stat.c
+++ b/stat.c
@@ -474,21 +474,28 @@ static void sum_stat(struct io_stat *dst, struct io_stat *src, int nr)
dst->min_val = min(dst->min_val, src->min_val);
dst->max_val = max(dst->max_val, src->max_val);
- dst->samples += src->samples;
/*
- * Needs a new method for calculating stddev, we cannot just
- * average them we do below for nr > 1
+ * Compute new mean and S after the merge
+ * <http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
+ * #Parallel_algorithm>
*/
if (nr == 1) {
mean = src->mean;
S = src->S;
} else {
- mean = ((src->mean * (double) (nr - 1))
- + dst->mean) / ((double) nr);
- S = ((src->S * (double) (nr - 1)) + dst->S) / ((double) nr);
+ double delta = src->mean - dst->mean;
+
+ mean = ((src->mean * src->samples) +
+ (dst->mean * dst->samples)) /
+ (dst->samples + src->samples);
+
+ S = src->S + dst->S + pow(delta, 2.0) *
+ (dst->samples * src->samples) /
+ (dst->samples + src->samples);
}
+ dst->samples += src->samples;
dst->mean = mean;
dst->S = S;
}
--
1.7.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-07-30 7:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-29 22:23 [PATCH] stats: Fix computation of standard deviation Yu-ju Hong
2011-07-30 7:19 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox