diff --git a/src/benchmarks/mysql.py b/src/benchmarks/mysql.py
index 0d24ff66cb4b21b71c60e72da5e199e6092c6da6..f80286f68ff2fa0076c34a801083a59c2ff570de 100644
--- a/src/benchmarks/mysql.py
+++ b/src/benchmarks/mysql.py
@@ -75,15 +75,14 @@ import multiprocessing
 import os
 import re
 import shutil
-import subprocess
-from subprocess import PIPE
+from subprocess import CalledProcessError
 import sys
 
 import numpy as np
 
 from src.benchmark import Benchmark
 import src.facter
-from src.util import print_status, print_debug, print_info2
+from src.util import print_status, print_debug, print_info2, run_cmd
 
 MYSQL_USER = "fischerling"
 RUN_TIME = 10
@@ -147,39 +146,34 @@ class BenchmarkMYSQL(Benchmark):
                 ]
                 print_info2("Oracle MySQL detected")
 
-            p = subprocess.run(init_db_cmd, stdout=PIPE, stderr=PIPE)
-
-            if not p.returncode == 0:
-                print_debug(init_db_cmd)
-                print_debug("Stdout:", p.stdout, file=sys.stdout)
-                print_debug("Stderr:", p.stderr, file=sys.stderr)
-                raise Exception("Creating test DB failed with:", p.returncode)
+            try:
+                run_cmd(init_db_cmd, capture=True)
+            except CalledProcessError as e:
+                print_debug("Stdout:", e.stdout, file=sys.stderr)
+                print_debug("Stderr:", e.stderr, file=sys.stderr)
+                raise e
 
             self.start_servers()
 
             # Create sbtest TABLE
-            p = subprocess.run(
-                f"mysql -u {MYSQL_USER} -S {self.build_dir}/socket".split(),
-                input=b"CREATE DATABASE sbtest;\n",
-                stdout=PIPE,
-                stderr=PIPE,
+            create_db_cmd = f"mysql -u {MYSQL_USER} -S {self.build_dir}/socket".split(),
+            try:
+                run_cmd(create_db_cmd,
+                input="CREATE DATABASE sbtest;\n",
+                capture=True,
                 cwd=self.build_dir)
-
-            if p.returncode != 0:
-                print_debug("Stderr:", p.stderr, file=sys.stderr)
-                raise Exception("Creating test tables failed with:",
-                                p.returncode)
+            except CalledProcessError as e:
+                print_debug("Stderr:", e.stderr, file=sys.stderr)
+                raise e
 
             print_status("Prepare test tables ...")
-            prepare_cmd = PREPARE_CMD.format(build_dir=self.build_dir)
-            p = subprocess.run(prepare_cmd.split(), stdout=PIPE, stderr=PIPE)
-            if p.returncode != 0:
-                print_debug(f"Cmd: {prepare_cmd} failed with {p.returncode}",
-                            file=sys.stderr)
+            prepare_cmd = PREPARE_CMD.format(build_dir=self.build_dir).split()
+            try:
+                run_cmd(prepare_cmd, captur=True)
+            except CalledProcessError as e:
                 print_debug("Stdout:", p.stdout, file=sys.stderr)
                 print_debug("Stderr:", p.stderr, file=sys.stderr)
-                raise Exception("Preparing test tables failed with:",
-                                p.returncode)
+                raise e
 
             self.shutdown_servers()
 
diff --git a/src/benchmarks/raxmlng.py b/src/benchmarks/raxmlng.py
index dd405f55340e366c7165603f835ef6225ae08c42..786b1437f8404eef8daef1130c3668ca60caf10f 100644
--- a/src/benchmarks/raxmlng.py
+++ b/src/benchmarks/raxmlng.py
@@ -18,13 +18,12 @@
 
 import os
 import re
-import subprocess
 import sys
 from urllib.request import urlretrieve
 
 from src.artifact import GitArtifact
 from src.benchmark import Benchmark
-from src.util import print_info
+from src.util import print_info, run_cmd
 
 RUNTIME_RE = re.compile("Elapsed time: (?P<runtime>(\\d*.\\d*)) seconds")
 
@@ -59,17 +58,8 @@ class BenchmarkRaxmlng(Benchmark):
         os.makedirs(raxmlng_builddir, exist_ok=True)
 
         # building raxml-ng
-        proc = subprocess.run(
-            ["cmake", ".."],
-            cwd=raxmlng_builddir,
-            # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-            universal_newlines=True)
-
-        proc = subprocess.run(
-            ["make"],
-            cwd=raxmlng_builddir,
-            # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-            universal_newlines=True)
+        run_cmd( ["cmake", ".."], cwd=raxmlng_builddir, output_verbosity=2)
+        run_cmd( ["make"], cwd=raxmlng_builddir, output_verbosity=2)
 
         # create symlinks
         for exe in ["raxml-ng"]:
diff --git a/src/benchmarks/redis.py b/src/benchmarks/redis.py
index b487baffbd22187c9140c6e0ae59721a40ef50a9..23c2de69df34878d9c34ac835d6c0b311a7fb73a 100644
--- a/src/benchmarks/redis.py
+++ b/src/benchmarks/redis.py
@@ -23,13 +23,12 @@ archive. The used parameters are inspired by the ones used in mimalloc-bench."
 
 import os
 import re
-import subprocess
 import sys
 from urllib.request import urlretrieve
 
 from src.artifact import ArchiveArtifact
 from src.benchmark import Benchmark
-from src.util import print_info
+from src.util import print_info, run_cmd
 
 REQUESTS_RE = re.compile("(?P<requests>(\\d*.\\d*)) requests per second")
 
@@ -63,10 +62,7 @@ class BenchmarkRedis(Benchmark):
         redis.provide(self.build_dir)
 
         # building redis
-        proc = subprocess.run(
-            ["make", "-C", redis_dir, "MALLOC=libc", "USE_JEMALLOC=no"],
-            # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-            universal_newlines=True)
+        run_cmd(["make", "-C", redis_dir, "MALLOC=libc", "USE_JEMALLOC=no"])
 
         # create symlinks
         for exe in ["redis-cli", "redis-server", "redis-benchmark"]:
diff --git a/src/util.py b/src/util.py
index 7992084bf8aa44322ab58461e42e080357dcf86e..3f2ab06633ab688c81cc129f3b50a416afef1e4e 100644
--- a/src/util.py
+++ b/src/util.py
@@ -24,6 +24,32 @@ import sys
 import src.globalvars
 
 
+def run_cmd(cmd,
+            output_verbosity=3,
+            capture=False,
+            check=True,
+            cwd=None,
+            input=None):
+    """subprocess.run wrapper which cares about the set verbosity"""
+    if capture:
+        stdout = subprocess.PIPE
+        stderr = stdout
+    elif src.globalvars.verbosity < output_verbosity:
+        stdout = subprocess.DEVNULL
+        stderr = stdout
+    else:
+        stdout = None
+        stderr = stdout
+
+    return subprocess.run(cmd,
+                          check=check,
+                          universal_newlines=True,
+                          cwd=None,
+                          stdout=stdout,
+                          stderr=stderr,
+                          input=input)
+
+
 def is_exe(fpath):
     """Check if the given path is an exexutable file"""
     return os.path.isfile(fpath) and os.access(fpath, os.X_OK)