summaryrefslogtreecommitdiffstats
path: root/docker/storperf-master/storperf
diff options
context:
space:
mode:
Diffstat (limited to 'docker/storperf-master/storperf')
-rw-r--r--docker/storperf-master/storperf/utilities/data_handler.py7
-rw-r--r--docker/storperf-master/storperf/utilities/math.py58
-rw-r--r--docker/storperf-master/storperf/utilities/steady_state.py15
3 files changed, 75 insertions, 5 deletions
diff --git a/docker/storperf-master/storperf/utilities/data_handler.py b/docker/storperf-master/storperf/utilities/data_handler.py
index c7d70a7..cb662f5 100644
--- a/docker/storperf-master/storperf/utilities/data_handler.py
+++ b/docker/storperf-master/storperf/utilities/data_handler.py
@@ -59,6 +59,8 @@ class DataHandler(object):
metrics[metric][io_type]['series'] = series
metrics[metric][io_type]['steady_state'] = steady
+ metrics[metric][io_type]['series_slope'] = \
+ math.slope_series(series)
treated_data = DataTreatment.data_treatment(series)
metrics[metric][io_type]['slope'] = \
@@ -68,6 +70,11 @@ class DataHandler(object):
average = math.average(treated_data['average_data'])
metrics[metric][io_type]['average'] = average
+ metrics[metric][io_type]['series_min'] = \
+ math.min_series(treated_data['range_data'])
+ metrics[metric][io_type]['series_max'] = \
+ math.max_series(treated_data['range_data'])
+
metrics_key = '%s.%s.%s' % (workload, io_type, metric)
executor.metadata['details']['metrics'][metrics_key] = \
average
diff --git a/docker/storperf-master/storperf/utilities/math.py b/docker/storperf-master/storperf/utilities/math.py
index 8e04134..2e78c9d 100644
--- a/docker/storperf-master/storperf/utilities/math.py
+++ b/docker/storperf-master/storperf/utilities/math.py
@@ -8,6 +8,9 @@
##############################################################################
import copy
+RANGE_DEVIATION = 0.20
+SLOPE_DEVIATION = 0.10
+
def slope(data_series):
"""
@@ -114,3 +117,58 @@ def average(data_series):
average = data_sum / float(m)
return average
+
+
+def slope_series(data_series):
+ """
+ This function returns an adjusted series based on the average
+ for the supplied series and the slope of the series.
+ """
+
+ new_series = []
+ average_series = []
+ for l in data_series:
+ average_series.append(l[1])
+
+ avg = average(average_series)
+ slp = slope(data_series)
+
+ multiplier = float(len(data_series) + 1) / 2.0 - len(data_series)
+ for index, _ in data_series:
+ new_value = avg + (slp * multiplier)
+ new_series.append([index, new_value])
+ multiplier += 1
+
+ return new_series
+
+
+def min_series(data_series):
+ """
+ This function returns an copy of the series with only the
+ minimum allowed deviation as its values
+ """
+
+ new_series = []
+ avg = average(data_series)
+ low = avg - (avg * RANGE_DEVIATION)
+
+ for _ in data_series:
+ new_series.append(low)
+
+ return new_series
+
+
+def max_series(data_series):
+ """
+ This function returns an copy of the series with only the
+ maximum allowed deviation as its values
+ """
+
+ new_series = []
+ avg = average(data_series)
+ high = avg + (avg * RANGE_DEVIATION)
+
+ for _ in data_series:
+ new_series.append(high)
+
+ return new_series
diff --git a/docker/storperf-master/storperf/utilities/steady_state.py b/docker/storperf-master/storperf/utilities/steady_state.py
index 13f609d..23a74d7 100644
--- a/docker/storperf-master/storperf/utilities/steady_state.py
+++ b/docker/storperf-master/storperf/utilities/steady_state.py
@@ -9,7 +9,8 @@
import logging
from storperf.utilities import data_treatment as DataTreatment
-from storperf.utilities import math as math
+from storperf.utilities import math
+from storperf.utilities.math import RANGE_DEVIATION, SLOPE_DEVIATION
def steady_state(data_series):
@@ -38,15 +39,19 @@ def steady_state(data_series):
average_value is not None):
# Verification of the Steady State conditions following the SNIA
# definition
- range_condition = abs(range_value) <= 0.20 * abs(average_value)
- slope_condition = abs(slope_value) <= 0.10 * abs(average_value)
+ range_condition = abs(range_value) <= RANGE_DEVIATION * \
+ abs(average_value)
+ slope_condition = abs(slope_value) <= SLOPE_DEVIATION * \
+ abs(average_value)
steady_state = range_condition and slope_condition
logger.debug("Range %s <= %s?" % (abs(range_value),
- (0.20 * abs(average_value))))
+ (RANGE_DEVIATION *
+ abs(average_value))))
logger.debug("Slope %s <= %s?" % (abs(slope_value),
- (0.10 * abs(average_value))))
+ (SLOPE_DEVIATION *
+ abs(average_value))))
logger.debug("Steady State? %s" % steady_state)
else:
steady_state = False