2.0 ready
diff --git a/wally/suits/io/ceph.cfg b/wally/suits/io/ceph.cfg
index 48c1ec6..4093b06 100644
--- a/wally/suits/io/ceph.cfg
+++ b/wally/suits/io/ceph.cfg
@@ -1,12 +1,12 @@
[global]
include defaults.cfg
-NUMJOBS_R={% 1, 5, 10, 15, 25, 40, 80 %}
-NUMJOBS_W={% 1, 5, 10, 15, 25 %}
+NUMJOBS_R={% 1, 5, 10, 15, 25, 40, 80, 120 %}
+NUMJOBS_W={% 1, 5, 10, 15, 25, 40 %}
NUMJOBS_SEQ_OPS={% 1, 3, 10 %}
ramp_time=60
-runtime=240
+runtime=180
# ---------------------------------------------------------------------
# check different thread count, sync mode. (latency, iops) = func(th_count)
diff --git a/wally/suits/io/cinder_iscsi.cfg b/wally/suits/io/cinder_iscsi.cfg
index 01439b3..b0f575b 100644
--- a/wally/suits/io/cinder_iscsi.cfg
+++ b/wally/suits/io/cinder_iscsi.cfg
@@ -45,5 +45,6 @@
# ---------------------------------------------------------------------
[cinder_iscsi_{TEST_SUMM}]
ramp_time=240
+runtime=240
blocksize=4k
rw=randwrite
diff --git a/wally/suits/io/fio.py b/wally/suits/io/fio.py
index f9f1d1b..777ae5f 100644
--- a/wally/suits/io/fio.py
+++ b/wally/suits/io/fio.py
@@ -67,7 +67,7 @@
return TimeSeriesValue(vals)
-def load_test_results(cls, folder, run_num):
+def load_test_results(folder, run_num):
res = {}
params = None
@@ -101,17 +101,6 @@
mm_res[key] = MeasurementMatrix(matr, conn_ids)
- # iops_from_lat_matr = []
- # for node_ts in mm_res['lat'].data:
- # iops_from_lat_matr.append([])
- # for thread_ts in node_ts:
- # ndt = [(start + ln, 1000000. / val)
- # for (start, ln, val) in thread_ts.data]
- # new_ts = TimeSeriesValue(ndt)
- # iops_from_lat_matr[-1].append(new_ts)
-
- # mm_res['iops_from_lat'] = MeasurementMatrix(iops_from_lat_matr, conn_ids)
-
raw_res = {}
for conn_id in conn_ids:
fn = os.path.join(folder, "{0}_{1}_rawres.json".format(run_num, conn_id_s))
@@ -124,7 +113,7 @@
fio_task.vals.update(params['vals'])
config = TestConfig('io', params, None, params['nodes'], folder, None)
- return cls(config, fio_task, mm_res, raw_res, params['intervals'])
+ return FioRunResult(config, fio_task, mm_res, raw_res, params['intervals'], run_num)
class Attrmapper(object):
@@ -192,7 +181,24 @@
return perc_50 / 1000., perc_95 / 1000.
-class IOTestResult(TestResults):
+class IOTestResults(object):
+ def __init__(self, suite_name, fio_results, log_directory):
+ self.suite_name = suite_name
+ self.fio_results = fio_results
+ self.log_directory = log_directory
+
+ def __iter__(self):
+ return iter(self.fio_results)
+
+ def __len__(self):
+ return len(self.fio_results)
+
+ def get_yamable(self):
+ items = [(fio_res.summary(), fio_res.idx) for fio_res in self]
+ return {self.suite_name: [self.log_directory] + items}
+
+
+class FioRunResult(TestResults):
"""
Fio run results
config: TestConfig
@@ -201,18 +207,15 @@
raw_result: ????
run_interval:(float, float) - test tun time, used for sensors
"""
- def __init__(self, config, fio_task, ts_results, raw_result, run_interval):
+ def __init__(self, config, fio_task, ts_results, raw_result, run_interval, idx):
self.name = fio_task.name.rsplit("_", 1)[0]
self.fio_task = fio_task
+ self.idx = idx
self.bw = ts_results.get('bw')
self.lat = ts_results.get('lat')
self.iops = ts_results.get('iops')
- # self.iops_from_lat = ts_results.get('iops_from_lat')
-
- # self.slat = drop_warmup(res.get('clat', None), self.params)
- # self.clat = drop_warmup(res.get('slat', None), self.params)
res = {"bw": self.bw, "lat": self.lat, "iops": self.iops}
@@ -243,9 +246,6 @@
def summary_tpl(self):
return get_test_summary_tuple(self.fio_task, len(self.config.nodes))
- def get_yamable(self):
- return self.summary()
-
def get_lat_perc_50_95_multy(self):
lat_mks = collections.defaultdict(lambda: 0)
num_res = 0
@@ -278,23 +278,18 @@
self.params,
testnodes_count)
- # ramp_time = self.fio_task.vals.get('ramp_time', 0)
-
def prepare(data, drop=1):
if data is None:
return data
res = []
for ts_data in data:
- # if ramp_time > 0:
- # ts_data = ts_data.skip(ramp_time)
-
if ts_data.average_interval() < avg_interval:
ts_data = ts_data.derived(avg_interval)
# drop last value on bounds
# as they may contains ranges without activities
- assert len(ts_data.values) >= drop + 1
+ assert len(ts_data.values) >= drop + 1, str(drop) + " " + str(ts_data.values)
if drop > 0:
res.append(ts_data.values[:-drop])
@@ -412,11 +407,13 @@
self.fio_configs = list(self.fio_configs)
@classmethod
- def load(cls, folder):
+ def load(cls, suite_name, folder):
+ res = []
for fname in os.listdir(folder):
if re.match("\d+_params.yaml$", fname):
num = int(fname.split('_')[0])
- yield load_test_results(IOTestResult, folder, num)
+ res.append(load_test_results(folder, num))
+ return IOTestResults(suite_name, res, folder)
def cleanup(self):
# delete_file(conn, self.io_py_remote)
@@ -685,7 +682,7 @@
with open(os.path.join(self.config.log_directory, fname), "w") as fd:
fd.write(dumps(params))
- res = load_test_results(IOTestResult, self.config.log_directory, pos)
+ res = load_test_results(self.config.log_directory, pos)
results.append(res)
if self.max_latency is not None:
@@ -702,7 +699,8 @@
if self.min_bw_per_thread > average(test_res['bw']):
lat_bw_limit_reached.add(test_descr)
- return results
+ return IOTestResults(self.config.params['cfg'],
+ results, self.config.log_directory)
def do_run(self, node, barrier, fio_cfg, pos, nolog=False):
if self.use_sudo:
@@ -938,7 +936,6 @@
tab.set_cols_align([f.allign for f in cls.fiels_and_header])
sep = ["-" * f.size for f in cls.fiels_and_header]
tab.header([f.header for f in cls.fiels_and_header])
-
prev_k = None
for item in cls.prepare_data(results):
if prev_k is not None:
diff --git a/wally/suits/io/hdd.cfg b/wally/suits/io/hdd.cfg
index b3c6293..95c8cec 100644
--- a/wally/suits/io/hdd.cfg
+++ b/wally/suits/io/hdd.cfg
@@ -7,6 +7,7 @@
ramp_time=30
runtime=120
+
direct=1
# ---------------------------------------------------------------------
@@ -39,6 +40,5 @@
# check IOPS randwrite.
# ---------------------------------------------------------------------
[hdd_{TEST_SUMM}]
-ramp_time=240
blocksize=4k
rw=randwrite
diff --git a/wally/suits/io/rrd.cfg b/wally/suits/io/rrd.cfg
index 86a73c5..27cb1a0 100644
--- a/wally/suits/io/rrd.cfg
+++ b/wally/suits/io/rrd.cfg
@@ -20,15 +20,16 @@
# ---------------------------------------------------------------------
[test_{TEST_SUMM}]
-blocksize=64m
-rw=randread
-numjobs=1
+blocksize=4k
+rw=randwrite
+sync=1
+numjobs={% 10,50,100 %}
# ---------------------------------------------------------------------
-[test_{TEST_SUMM}]
-blocksize=4m
-rw=write
-numjobs=1
+# [test_{TEST_SUMM}]
+# blocksize=4m
+# rw=write
+# numjobs=1
# ---------------------------------------------------------------------
# [rws_{TEST_SUMM}]
diff --git a/wally/suits/io/verify.cfg b/wally/suits/io/verify.cfg
index 35cf48a..7882633 100644
--- a/wally/suits/io/verify.cfg
+++ b/wally/suits/io/verify.cfg
@@ -2,24 +2,17 @@
include defaults.cfg
size={TEST_FILE_SIZE}
-ramp_time=90
-runtime=600
+ramp_time=0
+runtime=15
# ---------------------------------------------------------------------
[verify_{TEST_SUMM}]
blocksize=4k
rw=randwrite
direct=1
-# numjobs=5
-# ---------------------------------------------------------------------
[verify_{TEST_SUMM}]
blocksize=4k
rw=randwrite
+direct=1
sync=1
-
-# ---------------------------------------------------------------------
-# [verify_{TEST_SUMM}]
-# blocksize=4k
-# rw=randread
-# direct=1