diff --git a/wally/suits/io/fio.py b/wally/suits/io/fio.py
index fb18165..c32dba2 100644
--- a/wally/suits/io/fio.py
+++ b/wally/suits/io/fio.py
@@ -35,7 +35,6 @@
         self.force_prefill = get('force_prefill', False)  # type: bool
 
         self.load_profile_name = self.config.params['load']  # type: str
-        self.name = "io." + self.load_profile_name
 
         if os.path.isfile(self.load_profile_name):
             self.load_profile_path = self.load_profile_name   # type: str
@@ -193,12 +192,14 @@
                     try:
                         time_ms_s, val_s, _, *rest = line.split(",")
                         time_ms = int(time_ms_s.strip())
-                        if prev_ts and abs(time_ms - prev_ts - expected_time_delta) > max_time_diff:
-                            logger.warning("Too large gap in {} log at {} - {}ms"
-                                           .format(time_ms, name, time_ms - prev_ts))
-                        else:
+
+                        if not prev_ts:
                             prev_ts = time_ms - expected_time_delta
                             load_start_at = time_ms
+                        elif abs(time_ms - prev_ts - expected_time_delta) > max_time_diff:
+                            logger.warning("Too large gap in {} log at {} - {}ms"
+                                           .format(name, time_ms, time_ms - prev_ts))
+
                         if name == 'lat':
                             vals = [int(i.strip()) for i in rest]
 
@@ -213,6 +214,7 @@
                     except ValueError:
                         logger.exception("Error during parse %s fio log file in line %s: %r", name, idx, line)
                         raise StopTestError()
+
                     prev_ts += expected_time_delta
 
             res.series[name] = TimeSerie(name=name,
diff --git a/wally/suits/io/fio_task_parser.py b/wally/suits/io/fio_task_parser.py
index 6790c97..bdcf4a3 100644
--- a/wally/suits/io/fio_task_parser.py
+++ b/wally/suits/io/fio_task_parser.py
@@ -39,8 +39,6 @@
 
 
 class FioJobSection(IterationConfig, IStorable):
-    yaml_tag = 'fio_job'
-
     def __init__(self, name: str) -> None:
         self.name = name
         self.vals = OrderedDict()  # type: Dict[str, Any]
diff --git a/wally/suits/io/rrd.cfg b/wally/suits/io/rrd.cfg
index d32d6a8..850c9a3 100644
--- a/wally/suits/io/rrd.cfg
+++ b/wally/suits/io/rrd.cfg
@@ -1,7 +1,7 @@
 [global]
 include defaults_qd.cfg
 ramp_time=0
-runtime=4
+runtime=600
 
 [test_{TEST_SUMM}]
 blocksize=60k
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index 78986f6..446ad69 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -86,6 +86,7 @@
     # used_max_diff = max((min_run_time * max_rel_time_diff), max_time_diff)
     max_time_diff = 5
     max_rel_time_diff = 0.05
+    load_profile_name = None  # type: str
 
     def __init__(self, *args, **kwargs) -> None:
         PerfTest.__init__(self, *args, **kwargs)
@@ -138,7 +139,9 @@
             logger.info("All test iteration in storage already. Skip test")
             return
 
-        logger.debug("Run test {} on nodes {}.".format(self.name, ",".join(self.sorted_nodes_ids)))
+        logger.debug("Run test io.{} with profile {!r} on nodes {}.".format(self.name,
+                                                                          self.load_profile_name,
+                                                                          ",".join(self.sorted_nodes_ids)))
         logger.debug("Prepare nodes")
 
         with ThreadPoolExecutor(len(self.nodes)) as pool:
@@ -211,7 +214,9 @@
                                    .format(self.name, iter_name, max_start_time - min_start_time, self.max_time_diff))
 
                 test_config = {
-                    'name': self.name,
+                    'suite': 'io',
+                    'test': self.name,
+                    'profile': self.load_profile_name,
                     'iteration_name': iter_name,
                     'iteration_config': iteration_config.raw(),
                     'params': self.config.params,
@@ -221,15 +226,7 @@
                 }
 
                 self.process_storage_queue()
-                self.config.storage.put(test_config, "result", str(run_id), "info")
-
-                if "all_results" in self.config.storage:
-                    all_results = self.config.storage.get("all_results")
-                else:
-                    all_results = []
-
-                all_results.append([self.name, iteration_config.summary, current_result_path])
-                self.config.storage.put(all_results, "all_results")
+                self.config.storage.put(test_config, current_result_path, "info")
                 self.config.storage.sync()
 
                 if self.on_idle is not None:
