diff --git a/wally/suits/io/ceph.cfg b/wally/suits/io/ceph.cfg
index a44c749..22a4937 100644
--- a/wally/suits/io/ceph.cfg
+++ b/wally/suits/io/ceph.cfg
@@ -1,12 +1,13 @@
 [global]
 include defaults_qd.cfg
 
-QD_R={% 1, 5, 10, 15, 25, 40, 80, 120 %}
-QD_W={% 1, 5, 10, 15, 25, 40 %}
-QD_SEQ_R={% 1, 3, 10 %}
-QD_SEQ_W={% 1, 2, 4 %}
+# QD_R={% 1, 5, 10, 15, 25, 40, 80, 120 %}
+QD_R={% 1, 5, 10, 20, 40, 60, 100, 150, 200, 500 %}
+QD_W={% 1, 5, 10, 20, 40, 60, 100, 150, 200 %}
+QD_SEQ_R=1
+QD_SEQ_W=1
 
-ramp_time=30
+ramp_time=15
 runtime=180
 
 # ---------------------------------------------------------------------
@@ -30,12 +31,12 @@
 # ---------------------------------------------------------------------
 # sync write
 # ---------------------------------------------------------------------
-[ceph_{TEST_SUMM}]
-blocksize=4k
-rw=randwrite
-direct=1
-sync=1
-numjobs=1
+#[ceph_{TEST_SUMM}]
+#blocksize=4k
+#rw=randwrite
+#direct=1
+#sync=1
+#numjobs=1
 
 # ---------------------------------------------------------------------
 # this is essentially sequential write operations
diff --git a/wally/suits/io/fio.py b/wally/suits/io/fio.py
index 16da091..1895b6c 100644
--- a/wally/suits/io/fio.py
+++ b/wally/suits/io/fio.py
@@ -13,7 +13,7 @@
 from ..job import JobConfig
 from .fio_task_parser import execution_time, fio_cfg_compile, FioJobConfig, FioParams, get_log_files
 from . import rpc_plugin
-from .fio_hist import expected_lat_bins
+from .fio_hist import get_lat_vals, expected_lat_bins
 
 
 logger = logging.getLogger("wally")
@@ -223,9 +223,10 @@
                             vals = [int(i.strip()) for i in rest]
 
                             if len(vals) != expected_lat_bins:
-                                logger.error("Expect {} bins in latency histogram, but found {} at time {}"
-                                             .format(expected_lat_bins, len(vals), time_ms_s))
-                                raise StopTestError()
+                                msg = "Expect {} bins in latency histogram, but found {} at time {}" \
+                                             .format(expected_lat_bins, len(vals), time_ms_s)
+                                logger.error(msg)
+                                raise StopTestError(msg)
 
                             parsed.append(vals)
                         else:
@@ -237,13 +238,16 @@
             if not self.suite.keep_raw_files:
                 raw_result = None
 
+            histo_bins = None if name != 'lat' else numpy.array(get_lat_vals())
+
             result.append(TimeSeries(name=name,
                                      raw=raw_result,
                                      data=numpy.array(parsed, dtype='uint64'),
                                      units=units,
                                      times=numpy.array(times, dtype='uint64'),
                                      time_units='ms',
-                                     source=path(metric=name, tag='csv')))
+                                     source=path(metric=name, tag='csv'),
+                                     histo_bins=histo_bins))
         return result
 
     def format_for_console(self, data: Any) -> str:
diff --git a/wally/suits/io/verify.cfg b/wally/suits/io/verify.cfg
index 58a94b0..0d85f94 100644
--- a/wally/suits/io/verify.cfg
+++ b/wally/suits/io/verify.cfg
@@ -1,8 +1,9 @@
 [global]
 include defaults_qd.cfg
-QD={% 1, 2, 4 %}
-runtime=30
+QD={% 32, 64, 128, 256 %}
+runtime=600
 direct=1
+ramp_time=30
 
 # ---------------------------------------------------------------------
 
