summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9515f60)
raw | patch | inline | side by side (parent: 9515f60)
author | Pavel Rochnyack <pavel2000@ngs.ru> | |
Sat, 7 May 2016 16:09:09 +0000 (22:09 +0600) | ||
committer | Florian Forster <octo@collectd.org> | |
Sun, 27 Nov 2016 06:54:39 +0000 (07:54 +0100) |
src/utils_latency.c | patch | blob | history | |
src/utils_latency.h | patch | blob | history |
diff --git a/src/utils_latency.c b/src/utils_latency.c
index 71707ada83fdaa6f970510f803733ba446f64411..1275f8909ca1f46f8341066daac0eac1915f3422 100644 (file)
--- a/src/utils_latency.c
+++ b/src/utils_latency.c
@@ -302,8 +302,18 @@ cdtime_t latency_counter_get_start_time (const latency_counter_t *lc) /* {{{ */
return lc->start_time;
} /* }}} cdtime_t latency_counter_get_start_time */
+/*
+ * NAME
+ * latency_counter_get_rate(counter,lower,upper,now)
+ *
+ * DESCRIPTION
+ * Calculates rate of latency values fall within requested interval.
+ * Interval specified as [lower,upper] (including boundaries).
+ * When upper value is equal to 0 then interval is [lower, infinity).
+ */
+
double latency_counter_get_rate (const latency_counter_t *lc, /* {{{ */
- const cdtime_t lower, cdtime_t upper, const cdtime_t now)
+ cdtime_t lower, cdtime_t upper, const cdtime_t now)
{
cdtime_t lower_bin;
cdtime_t upper_bin;
upper = 0;
}
- ERROR("get_rate (%.3f, %.3f): bin_width = %.3f; "
- "lower_bin = %"PRIu64" (%.3f); upper_bin = %"PRIu64" (%.3f);",
- CDTIME_T_TO_DOUBLE (lower),
- CDTIME_T_TO_DOUBLE (upper),
- CDTIME_T_TO_DOUBLE (lc->bin_width),
- lower_bin,
- CDTIME_T_TO_DOUBLE (lc->bin_width * lower_bin),
- upper_bin,
- CDTIME_T_TO_DOUBLE (lc->bin_width * upper_bin)
- );
-
sum = 0;
for (i = lower_bin; i <= upper_bin; i++)
{
- ERROR("SUMM, bin: %d (%.3f), v: %d", i, CDTIME_T_TO_DOUBLE(i * lc->bin_width), lc->histogram[i]);
sum += lc->histogram[i];
}
- ERROR("sum before interpolations: %.3f", sum);
- //v1//p = ((double)lower - (double)(lower_bin + 1) * (double)lc->bin_width) / (double)lc->bin_width;
p = ((double)lower - (double)(lower_bin + 0) * (double)lc->bin_width - (double)DOUBLE_TO_CDTIME_T(0.001)) / (double)lc->bin_width;
- ERROR("interpolation 1: p=%lf, 1=%"PRIu64" (%.3f), 2=%"PRIu64" (%.3f), 3=%"PRIu64" (%.3f); lower_bin: %"PRIu64"",
- p,
- //1
- lower - DOUBLE_TO_CDTIME_T(0.001),
- CDTIME_T_TO_DOUBLE (lower - (double)DOUBLE_TO_CDTIME_T(0.001)),
- //2
- (lower_bin + 0) * lc->bin_width,
- CDTIME_T_TO_DOUBLE ((lower_bin + 0) * lc->bin_width),
- //3
- lc->bin_width,
- CDTIME_T_TO_DOUBLE (lc->bin_width),
- lower_bin
- );
sum -= p * lc->histogram[lower_bin];
-/*
- if (upper && upper_bin == lower_bin) {
- //p = ((double)(upper_bin + 1) * (double)lc->bin_width - (double)upper) / (double)lc->bin_width;
- p = (double)(upper_bin + 1) - (double)upper / (double)lc->bin_width;
- ERROR("interpolation 2: p=%lf, 1=%"PRIu64" (%.3f), 2=%"PRIu64" (%.3f), 3=%.3f (%.3f); upper_bin: %"PRIu64"",
- p,
- //1
- (upper_bin + 1) * lc->bin_width,
- CDTIME_T_TO_DOUBLE ((upper_bin + 1) * lc->bin_width),
- //2
- upper,
- CDTIME_T_TO_DOUBLE (upper),
- //3
- (double)lc->bin_width,
- CDTIME_T_TO_DOUBLE (lc->bin_width),
- upper_bin
- );
- sum -= p * lc->histogram[upper_bin];
- }
- else
- */
+
if (upper && upper < (upper_bin + 1) * lc->bin_width)
{
// p = ((upper_bin + 1) * bin_width - upper ) / bin_width;
-
- //p = ((double)upper - (double)(upper_bin + 0) * (double)lc->bin_width) / (double)lc->bin_width;
p = ((double)(upper_bin + 1) * (double)lc->bin_width - (double)upper) / (double)lc->bin_width;
- ERROR("interpolation 3: p=%lf, 1=%"PRIu64" (%.3f), 2=%"PRIu64" (%.3f), 3=%"PRIu64" (%.3f); upper_bin: %"PRIu64"",
- p,
- //1
- (upper_bin + 1) * lc->bin_width,
- CDTIME_T_TO_DOUBLE ((upper_bin + 1) * lc->bin_width),
- //2
- upper,
- CDTIME_T_TO_DOUBLE (upper),
- //3
- lc->bin_width,
- CDTIME_T_TO_DOUBLE (lc->bin_width),
- upper_bin
- );
sum -= p * lc->histogram[upper_bin];
}
return sum / (CDTIME_T_TO_DOUBLE (now - lc->start_time));
diff --git a/src/utils_latency.h b/src/utils_latency.h
index 3e768e2ecf368c85dde9e3b0eefbd438ea2607ec..bb456f511afb35af4f25927dfaf2f5fe3399bf19 100644 (file)
--- a/src/utils_latency.h
+++ b/src/utils_latency.h
double percent);
cdtime_t latency_counter_get_start_time (const latency_counter_t *lc);
double latency_counter_get_rate (const latency_counter_t *lc,
- const cdtime_t lower, cdtime_t upper, const cdtime_t now);
+ cdtime_t lower, cdtime_t upper, const cdtime_t now);
/* vim: set sw=2 sts=2 et : */