diff --git a/io_scenario/io.py b/io_scenario/io.py
index 4f7cbcf..b9f3b6f 100644
--- a/io_scenario/io.py
+++ b/io_scenario/io.py
@@ -4,9 +4,11 @@
 import stat
 import time
 import json
+import Queue
 import os.path
 import argparse
 import warnings
+import threading
 import subprocess
 
 
@@ -492,9 +494,23 @@
         "--prepare-only", default=False, dest='prepare_only',
         action="store_true")
     parser.add_argument("--concurrency", default=1, type=int)
+
+    parser.add_argument("--with-sensors", default="",
+                        dest="with_sensors")
+
     return parser.parse_args(argv)
 
 
+def sensor_thread(sensor_list, cmd_q, data_q):
+    while True:
+        try:
+            cmd_q.get(timeout=0.5)
+            data_q.put([])
+            return
+        except Queue.Empty:
+            pass
+
+
 def main(argv):
     argv_obj = parse_args(argv)
     argv_obj.blocksize = ssize_to_kb(argv_obj.blocksize)
@@ -542,17 +558,33 @@
             if dt > 0:
                 time.sleep(dt)
 
+        if argv_obj.with_sensors != "":
+            oq = Queue.Queue()
+            iq = Queue.Queue()
+            argv = (argv_obj.with_sensors, oq, iq)
+            th = threading.Thread(None, sensor_thread, None, argv)
+            th.daemon = True
+            th.start()
+
         res, cmd = run_benchmark(argv_obj.type,
                                  benchmark,
                                  binary_path,
                                  test_file_name,
                                  argv_obj.prepare_only,
                                  argv_obj.timeout)
+        if argv_obj.with_sensors != "":
+            iq.put(None)
+            stats = oq.get()
+        else:
+            stats = None
 
         if not argv_obj.prepare_only:
             res['__meta__'] = benchmark.__dict__.copy()
             res['__meta__']['cmdline'] = cmd
 
+            if stats is not None:
+                res['__meta__']['sensor_data'] = stats
+
         sys.stdout.write(json.dumps(res))
 
         if not argv_obj.prepare_only:
