diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py
index 3e270f4ffc459da636b809b85b0bc482372ee619..6b98676ece9461573baad93bda2ceefaf7cbd7ca 100644
--- a/python/dune/perftool/pdelab/driver.py
+++ b/python/dune/perftool/pdelab/driver.py
@@ -1140,14 +1140,27 @@ def name_explicitonestepmethod():
     return "eosm"
 
 
+@preamble
+def define_mpihelper(name):
+    include_file("dune/common/parallel/mpihelper.hh", filetag="driver")
+    return "Dune::MPIHelper& {} = Dune::MPIHelper::instance(argc, argv);".format(name)
+
+
+def name_mpihelper():
+    name = "mpihelper"
+    define_mpihelper(name)
+    return name
+
+
 @preamble
 def define_timing_stream(name):
     include_file('fstream', filetag='driver', system=True)
+    include_file('sstream', filetag='driver', system=True)
 
-    import os
-    tfile = os.path.join(get_option('project_basedir'), 'timings.csv')
-    return ["std::ofstream {};".format(name),
-            "{}.open(\"{}\", std::ios_base::app);".format(name, tfile),
+    return ["std::stringstream ss;",
+            "ss << \"{}/timings-rank-\" << {}.rank() << \".csv\";".format(get_option('project_basedir'), name_mpihelper()),
+            "std::ofstream {};".format(name),
+            "{}.open(ss.str(), std::ios_base::app);".format(name),
             ]