diff --git a/wally/assumptions_check.py b/wally/assumptions_check.py
index 41ae2e0..94297c3 100644
--- a/wally/assumptions_check.py
+++ b/wally/assumptions_check.py
@@ -10,54 +10,6 @@
 from .statistic import approximate_line, difference
 
 
-def linearity_plot(data, types, vals=None):
-    fields = 'blocksize_b', 'iops_mediana', 'iops_stddev'
-
-    names = {}
-    for tp1 in ('rand', 'seq'):
-        for oper in ('read', 'write'):
-            for sync in ('sync', 'direct', 'async'):
-                sq = (tp1, oper, sync)
-                name = "{0} {1} {2}".format(*sq)
-                names["".join(word[0] for word in sq)] = name
-
-    colors = ['red', 'green', 'blue', 'cyan',
-              'magenta', 'black', 'yellow', 'burlywood']
-    markers = ['*', '^', 'x', 'o', '+', '.']
-    color = 0
-    marker = 0
-
-    for tp in types:
-        filtered_data = filter_data('linearity_test_' + tp, fields)
-        x = []
-        y = []
-        e = []
-        # values to make line
-        ax = []
-        ay = []
-
-        for sz, med, dev in sorted(filtered_data(data)):
-            iotime_ms = 1000. // med
-            iotime_max = 1000. // (med - dev * 3)
-
-            x.append(sz / 1024.0)
-            y.append(iotime_ms)
-            e.append(iotime_max - iotime_ms)
-            if vals is None or sz in vals:
-                ax.append(sz / 1024.0)
-                ay.append(iotime_ms)
-
-        plt.errorbar(x, y, e, linestyle='None', label=names[tp],
-                     color=colors[color], ecolor="black",
-                     marker=markers[marker])
-        ynew = approximate_line(ax, ay, ax, True)
-        plt.plot(ax, ynew, color=colors[color])
-        color += 1
-        marker += 1
-    plt.legend(loc=2)
-    plt.title("Linearity test by %i dots" % (len(vals)))
-
-
 def linearity_table(data, types, vals):
     """ create table by pyplot with diferences
         between original and approximated
diff --git a/wally/report.py b/wally/report.py
index e24e7b6..e435a6a 100644
--- a/wally/report.py
+++ b/wally/report.py
@@ -2,6 +2,11 @@
 import bisect
 import logging
 
+try:
+    import matplotlib.pyplot as plt
+except ImportError:
+    plt = None
+
 import wally
 from wally import charts
 from wally.statistic import round_3_digit
@@ -24,6 +29,71 @@
         self.bw_read_max = 0
 
 
+report_funcs = []
+
+
+def report(name, required_fields):
+    def closure(func):
+        report_funcs.append((required_fields.split(","), name, func))
+        return func
+    return closure
+
+
+# def linearity_report(processed_results, path, lab_info):
+#     names = {}
+#     for tp1 in ('rand', 'seq'):
+#         for oper in ('read', 'write'):
+#             for sync in ('sync', 'direct', 'async'):
+#                 sq = (tp1, oper, sync)
+#                 name = "{0} {1} {2}".format(*sq)
+#                 names["".join(word[0] for word in sq)] = name
+
+#     colors = ['red', 'green', 'blue', 'cyan',
+#               'magenta', 'black', 'yellow', 'burlywood']
+#     markers = ['*', '^', 'x', 'o', '+', '.']
+#     color = 0
+#     marker = 0
+
+#     name_pref = 'linearity_test_'
+#     plot_data = []
+
+#     x = []
+#     y = []
+#     e = []
+#     # values to make line
+#     ax = []
+#     ay = []
+
+#     for res in processed_results.values():
+#         if res.name.startswith(name_pref):
+#             res
+
+#     for sz, med, dev in sorted(filtered_data(data)):
+#         iotime_ms = 1000. // med
+#         iotime_max = 1000. // (med - dev * 3)
+
+#         x.append(sz / 1024.0)
+#         y.append(iotime_ms)
+#         e.append(iotime_max - iotime_ms)
+#         if vals is None or sz in vals:
+#             ax.append(sz / 1024.0)
+#             ay.append(iotime_ms)
+
+#     plt.errorbar(x, y, e, linestyle='None', label=names[tp],
+#                  color=colors[color], ecolor="black",
+#                  marker=markers[marker])
+#     ynew = approximate_line(ax, ay, ax, True)
+#     plt.plot(ax, ynew, color=colors[color])
+#     color += 1
+#     marker += 1
+#     plt.legend(loc=2)
+#     plt.title("Linearity test by %i dots" % (len(vals)))
+
+
+# if plt:
+#     linearity_report = report('linearity', 'linearity_test')(linearity_report)
+
+
 def render_hdd_html(dest, info, lab_description):
     very_root_dir = os.path.dirname(os.path.dirname(wally.__file__))
     templ_dir = os.path.join(very_root_dir, 'report_templates')
@@ -200,19 +270,9 @@
     return hdi
 
 
-report_funcs = []
-
-
-def report(name, required_fields):
-    def closure(func):
-        report_funcs.append((required_fields.split(","), name, func))
-        return func
-    return closure
-
-
 @report('HDD', 'hdd_test_rrd4k,hdd_test_rws4k')
 def make_hdd_report(processed_results, path, lab_info):
-    make_plots(processed_results, path)
+    make_hdd_plots(processed_results, path)
     di = get_disk_info(processed_results)
     render_hdd_html(path, di, lab_info)
 
@@ -250,7 +310,7 @@
                 if pos == len(res_fields):
                     break
 
-                if not res_fields[pos + 1].startswith(field):
+                if not res_fields[pos].startswith(field):
                     break
             else:
                 hpath = path.format(name)
diff --git a/wally/suits/io/ceph.cfg b/wally/suits/io/ceph.cfg
index 7a84872..9e98dd6 100644
--- a/wally/suits/io/ceph.cfg
+++ b/wally/suits/io/ceph.cfg
@@ -8,8 +8,7 @@
 filename={FILENAME}
 NUM_ROUNDS=7
 
-NUMJOBS_LARGE={% 1, 5, 10, 15, 20, 30, 40, 80, 120 %}
-NUMJOBS_NORM={% 1, 5, 10, 15, 20, 30, 40 %}
+NUMJOBS={% 1, 5, 10, 15, 20, 30, 40 %}
 NUMJOBS_SHORT={% 1, 5, 10 %}
 
 size=30G
@@ -23,7 +22,7 @@
 blocksize=4k
 rw=randwrite
 sync=1
-numjobs={NUMJOBS_NORM}
+numjobs={NUMJOBS}
 
 # ---------------------------------------------------------------------
 # direct write
@@ -42,23 +41,15 @@
 blocksize=4k
 rw=randread
 direct=1
-numjobs={NUMJOBS_NORM}
+numjobs={NUMJOBS}
 
 # ---------------------------------------------------------------------
-# this is essentially sequential read openration
-# we can't use seq read with numjobs > 1 on clouds due to caching
+# this is essentially sequential write/read operations
+# we can't use sequential with numjobs > 1 due to caching and block merging
 # ---------------------------------------------------------------------
 [ceph_test_{TEST_SUMM} * {NUM_ROUNDS}]
 blocksize=16m
-rw=randread
+rw={% randread, randwrite %}
 direct=1
 numjobs={NUMJOBS_SHORT}
 
-# ---------------------------------------------------------------------
-# sequential write
-# ---------------------------------------------------------------------
-[ceph_test_{TEST_SUMM} * {NUM_ROUNDS}]
-blocksize=1m
-rw=write
-direct=1
-numjobs={NUMJOBS_NORM}
diff --git a/wally/suits/io/check_distribution.cfg b/wally/suits/io/check_distribution.cfg
index 6ba3f9f..d08e52b 100644
--- a/wally/suits/io/check_distribution.cfg
+++ b/wally/suits/io/check_distribution.cfg
@@ -1,3 +1,6 @@
+[defaults]
+NUM_ROUNDS=301
+
 [distrubution_test_{TEST_SUMM} * {NUM_ROUNDS}]
 blocksize=4k
 rw=randwrite
@@ -7,7 +10,7 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=10Gb
+size=10G
 time_based
 runtime=30
 group_reporting
diff --git a/wally/suits/io/check_linearity.cfg b/wally/suits/io/check_linearity.cfg
index 4017cf3..a75d937 100644
--- a/wally/suits/io/check_linearity.cfg
+++ b/wally/suits/io/check_linearity.cfg
@@ -6,7 +6,7 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=10Gb
+size=10G
 time_based
 runtime=30
 
diff --git a/wally/suits/io/check_th_count.cfg b/wally/suits/io/check_th_count.cfg
index 3d57154..3f9dd19 100644
--- a/wally/suits/io/check_th_count.cfg
+++ b/wally/suits/io/check_th_count.cfg
@@ -5,7 +5,7 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=10Gb
+size=10G
 time_based
 runtime=30
 group_reporting
diff --git a/wally/suits/io/check_warmup.cfg b/wally/suits/io/check_warmup.cfg
index 6a9c622..37ee083 100644
--- a/wally/suits/io/check_warmup.cfg
+++ b/wally/suits/io/check_warmup.cfg
@@ -6,7 +6,7 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=10Gb
+size=10G
 time_based
 runtime=30
 
diff --git a/wally/suits/io/formatter.py b/wally/suits/io/formatter.py
index 63c9408..7fbe70b 100644
--- a/wally/suits/io/formatter.py
+++ b/wally/suits/io/formatter.py
@@ -19,13 +19,15 @@
     create a table with io performance report
     for console
     """
-    tab = texttable.Texttable()
+    tab = texttable.Texttable(max_width=120)
     tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
-    tab.set_cols_align(["l", "r", "r", "r", "r"])
+    tab.set_cols_align(["l", "r", "r", "r", "r", "r", "r"])
 
     prev_k = None
-
+    vm_count = test_set['__test_meta__']['testnodes_count']
     items = sorted(test_set['res'].items(), key=key_func)
+    header = ["Description", "iops\ncum", "KiBps\ncum",
+              "iops\nper vm", "KiBps\nper vm", "Cnf\n%", "lat\nms"]
 
     for test_name, data in items:
 
@@ -33,7 +35,9 @@
 
         if prev_k is not None:
             if prev_k != curr_k:
-                tab.add_row(["---"] * 5)
+                tab.add_row(
+                    ["--------", "-----", "------",
+                     "-----", "------", "---", "-----"])
 
         prev_k = curr_k
 
@@ -54,12 +58,14 @@
 
         iops = round_3_digit(iops)
         bw = round_3_digit(bw)
+        iops_cum = round_3_digit(iops * vm_count)
+        bw_cum = round_3_digit(bw * vm_count)
         med_lat = round_3_digit(med_lat)
 
-        params = (descr, int(iops), int(bw), dev_perc, med_lat)
+        params = (descr, int(iops_cum), int(bw_cum),
+                  int(iops), int(bw), dev_perc, med_lat)
         tab.add_row(params)
 
-    header = ["Description", "IOPS", "BW KiBps", "Dev * 3 %", "clat ms"]
     tab.header(header)
 
     return tab.draw()
diff --git a/wally/suits/io/hdd.cfg b/wally/suits/io/hdd.cfg
index 519fb0f..07e45e9 100644
--- a/wally/suits/io/hdd.cfg
+++ b/wally/suits/io/hdd.cfg
@@ -7,7 +7,7 @@
 softrandommap=1
 filename={FILENAME}
 NUM_ROUNDS=7
-NUMJOBS={% 1, 5, 10, 15, 20, 30, 40, 80, 120 %}
+NUMJOBS={% 1, 5, 10, 15, 20, 30, 40, 80 %}
 
 size=10G
 ramp_time=5
diff --git a/wally/suits/io/long_test.cfg b/wally/suits/io/long_test.cfg
index 4b0a79d..a59c360 100644
--- a/wally/suits/io/long_test.cfg
+++ b/wally/suits/io/long_test.cfg
@@ -8,7 +8,7 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=50Gb
+size=50G
 time_based
 runtime=300
 
diff --git a/wally/suits/io/vm_count_ec2.cfg b/wally/suits/io/vm_count_ec2.cfg
index 19c9e50..c132039 100644
--- a/wally/suits/io/vm_count_ec2.cfg
+++ b/wally/suits/io/vm_count_ec2.cfg
@@ -5,12 +5,13 @@
 wait_for_previous
 filename={FILENAME}
 iodepth=1
-size=10Gb
+size=10G
 time_based
 runtime=30
 group_reporting
 rate={BW_LIMIT}
 rate_iops={IOPS_LIMIT}
+NUMJOBS={% 1, 2, 5, 10, 15, 20, 25, 30, 35, 40 %}
 
 # ---------------------------------------------------------------------
 # check different thread count. (latency, bw) = func(th_count)
@@ -19,11 +20,11 @@
 blocksize={% 4k, 1m %}
 rw={% randwrite, randread %}
 direct=1
-numjobs={% 1, 2, 5, 10, 15, 20, 25, 30, 35, 40 %}
+numjobs={NUMJOBS}
 
 [vm_count_{TEST_SUMM} * {NUM_ROUNDS}]
 blocksize={% 4k, 1m %}
 rw=randwrite
 direct=0
 sync=1
-numjobs={% 1, 2, 5, 10, 15, 20, 25, 30, 35, 40 %}
+numjobs={NUMJOBS}
