diff --git a/cfg_checker/common/decorators.py b/cfg_checker/common/decorators.py
index d83e469..a8b6da0 100644
--- a/cfg_checker/common/decorators.py
+++ b/cfg_checker/common/decorators.py
@@ -6,7 +6,7 @@
 from cfg_checker.common import logger, logger_cli
 
 
-def retry(exceptions, total_tries=5, initial_wait=0.5, backoff_factor=2):
+def retry(exceptions, total_tries=5, initial_wait=1, backoff_factor=2):
     """
     calling the decorated function applying an exponential backoff.
     Args:
@@ -32,7 +32,7 @@
                                 f.__name___,
                                 total_tries
                             )
-                        logger_cli.debug(msg)
+                        logger_cli.info(msg)
                         logger.debug(
                             msg + "args: {}, kwargs: {}".format(
                                 print_args,
@@ -46,7 +46,7 @@
                               e,
                               _delay
                           )
-                    logger_cli.debug(msg)
+                    logger_cli.info(msg)
                     logger.debug(
                         msg + "args: {}, kwargs: {}\n".format(
                             print_args,
diff --git a/cfg_checker/common/kube_utils.py b/cfg_checker/common/kube_utils.py
index f8c3469..6f303ff 100644
--- a/cfg_checker/common/kube_utils.py
+++ b/cfg_checker/common/kube_utils.py
@@ -609,7 +609,7 @@
         )
         return _pods
 
-    @retry(ApiException, initial_wait=5)
+    @retry(ApiException, initial_wait=10)
     def put_string_buffer_to_pod_as_textfile(
         self,
         pod_name,
diff --git a/cfg_checker/modules/ceph/bench.py b/cfg_checker/modules/ceph/bench.py
index 0780596..c0877db 100644
--- a/cfg_checker/modules/ceph/bench.py
+++ b/cfg_checker/modules/ceph/bench.py
@@ -2,6 +2,7 @@
 import os
 import json
 
+from copy import deepcopy
 from datetime import datetime, timedelta, timezone
 
 from cfg_checker.common import logger_cli
@@ -448,6 +449,7 @@
             for idx in range(_total_tasks):
                 # init time to schedule
                 _task = self.tasks[idx]
+                _r = self.results
                 logger_cli.info(
                     "-> Starting next task ({}/{})".format(idx+1, _total_tasks)
                 )
@@ -459,11 +461,40 @@
                 )
                 # update options
                 options.update(_task)
+                # Check if such result already exists
+                o = "input_options"
+                _existing = filter(
+                    lambda t:
+                        _r[t]["id"] == idx and
+                        _r[t]["mode"] == "tasks" and
+                        _r[t][o]["readwrite"] == options["readwrite"] and
+                        _r[t][o]["rwmixread"] == options["rwmixread"] and
+                        _r[t][o]["bs"] == options["bs"] and
+                        _r[t][o]["iodepth"] == options["iodepth"] and
+                        _r[t][o]["size"] == options["size"],
+                    _r
+                )
+                if len(list(_existing)) > 0:
+                    logger_cli.info(
+                        "-> Skipped already performed task from {}: "
+                        "line {}, {}({}), {}, {}, {}".format(
+                            self.taskfile,
+                            idx,
+                            options["readwrite"],
+                            options["rwmixread"],
+                            options["bs"],
+                            options["iodepth"],
+                            options["size"]
+                        )
+                    )
+                    continue
                 _sch_time = self._get_next_scheduled_time()
                 options["scheduled_to"] = _sch_time
                 # init results table
-                self.results[_sch_time] = {
-                    "input_options": options,
+                _r[_sch_time] = {
+                    "id": idx,
+                    "mode": self.mode,
+                    "input_options": deepcopy(options),
                     "agents": {},
                     "ceph": {}
                 }
@@ -479,6 +510,7 @@
             options["scheduled_to"] = _sch_time
             # init results table
             self.results[_sch_time] = {
+                "id": "{:2}".format(0),
                 "input_options": options,
                 "agents": {},
                 "ceph": {}
