diff --git a/expetator/benchmarks/mpi_generic.c b/expetator/benchmarks/mpi_generic.c
index f9f2558fc4249d1c201cb99ff4f0ced7ad3c534c..3d1a31948e11354b128944c16c778c65dae0cb5a 100644
--- a/expetator/benchmarks/mpi_generic.c
+++ b/expetator/benchmarks/mpi_generic.c
@@ -184,8 +184,8 @@ int main(int argc, char** argv) {
 // -c 1200
 // -m 35000
 
-/* time mpirun --machinefile /dev/shm/m ./a.out -m 35000 -n 1 -c 1200
-/dev/shm/m : 32 == cores
+/* time mpirun --machinefile m ./a.out -m 35000 -n 1 -c 1200
+m : 32 == cores
 real	2m26.163s
 user	32m6.416s
 sys	5m27.728s
@@ -196,8 +196,8 @@ sys	5m27.728s
 
 /*
 
-/* time mpirun  --machinefile /dev/shm/m2 ./a.out -m 35000 -n 1 -c 1200
-/dev/shm/m2 : 64 == hyperthread
+/* time mpirun  --machinefile m2 ./a.out -m 35000 -n 1 -c 1200
+m2 : 64 == hyperthread
 real	3m38.990s
 user	101m59.836s
 sys	12m21.300s
@@ -209,12 +209,12 @@ sys	12m21.300s
 
 /* RQ: avec mpirun --mca btl ^openib
 
-time mpirun  --mca btl ^openib --machinefile /dev/shm/m ./a.out -n 1
+time mpirun  --mca btl ^openib --machinefile m ./a.out -n 1
 real	0m53.827s
 user	6m38.412s
 sys	6m46.088s
 
-time mpirun  --machinefile /dev/shm/m ./a.out -n 1
+time mpirun  --machinefile m ./a.out -n 1
 real	0m53.990s
 user	6m43.392s
 sys	6m53.344s
diff --git a/expetator/experiment.py b/expetator/experiment.py
index c4cb898105db3343c9c4c897cdb3ebdff7df0c71..59762a11b00f87e530875dbb4f71f79484096c27 100755
--- a/expetator/experiment.py
+++ b/expetator/experiment.py
@@ -8,6 +8,7 @@ import random
 import time
 import itertools
 from pathlib import Path
+import tempfile
 
 from functools import reduce
 from execo import Process
@@ -15,8 +16,14 @@ from execo import Process
 class Executor:
     'Allow access to the platform'
     def __init__(self):
-        self.mpi_host_file = '/dev/shm/mpi_host_file'
-        self.mpi_core_file = '/dev/shm/mpi_core_file'
+        self.tmp_dir = ''
+        if os.path.isdir('/dev/shm'):
+            self.tmp_dir = tempfile.mkdtemp(prefix="/dev/shm/")
+        else:
+            self.tmp_dir = tempfile.mkdtemp(prefix="/tmp/executor/")
+
+        self.mpi_host_file = '%s/mpi_host_file' % self.tmp_dir
+        self.mpi_core_file = '%s/mpi_core_file' % self.tmp_dir
         self.mpi_options = ''
         self.hostnames = ['localhost']
         self.nbhosts = 1
@@ -44,6 +51,8 @@ class Executor:
             for host in self.hostnames:
                 file_id.write(host+" slots=%s\n" % (self.nbcores//self.nbhosts))
 
+        self.hosts(f'mkdir -p {self.tmp_dir}')
+
     def local(self, cmd, shell=True, root=False):
         """Executes the cmd command and returns stdout after cmd exits"""
         if root:
diff --git a/expetator/monitors/laptop_power_monitor.py b/expetator/monitors/laptop_power_monitor.py
index 474c5b133855c2e8745d12e8d3dbed3bb5fe92c6..74abf0076ec8ac9a99c84cbb3f1d408fde24dd87 100755
--- a/expetator/monitors/laptop_power_monitor.py
+++ b/expetator/monitors/laptop_power_monitor.py
@@ -18,7 +18,7 @@ if __name__ == '__main__':
     
     stay=True
 
-    with open('/dev/shm/power_measures','w') as power_file:
+    with open('/tmp/expetator_power_measures','w') as power_file:
         power_file.write('#timestamp power\n')
 
     try:
@@ -30,7 +30,7 @@ if __name__ == '__main__':
             current_time=time.time()
             int_current_time=int(current_time)
     
-            with open('/dev/shm/power_measures','a') as power_file:
+            with open('/tmp/expetator_power_measures','a') as power_file:
                 power_file.write(str(int_current_time)+' '+str(watt)+'\n')
             time.sleep(1-(current_time-int_current_time))
     except:
diff --git a/expetator/monitors/lperf.py b/expetator/monitors/lperf.py
index 3470f491f798938d6734cfe7e573ae8a7d6c2074..78818372e8fc281cb582f816173b6563685cc892 100644
--- a/expetator/monitors/lperf.py
+++ b/expetator/monitors/lperf.py
@@ -31,7 +31,7 @@ class Lperf:
         self.executor = executor
 
         self.cmdline = '/tmp/bin/lperf stat -x "!" -I %s -a -A -e %s' % (self.interval, ','.join(self.names))
-        self.cmdline += ' -o /dev/shm/lperf_monitoring &'
+        self.cmdline += ' -o %s/lperf_monitoring &' % executor.tmp_dir
 
     def start(self):
         'Starts the monitoring right before the benchmark'
@@ -47,8 +47,8 @@ class Lperf:
         os.makedirs(filename_moj, exist_ok=True)
         if len(self.executor.hostnames) > 1:
             for hostname in self.executor.hostnames:
-                self.executor.local('oarcp %s:/dev/shm/lperf_monitoring %s/%s_%s_%s' %
-                                    (hostname, filename_moj, hostname, benchname, beg_time))
+                self.executor.local('oarcp %s:%s/lperf_monitoring %s/%s_%s_%s' %
+                                    (hostname, self.executor.tmp_dir, filename_moj, hostname, benchname, beg_time))
         else:
-            self.executor.local('cp /dev/shm/lperf_monitoring %s/%s_%s_%s' %
-                                    (filename_moj, 'localhost', benchname, beg_time))
+            self.executor.local('cp %s/lperf_monitoring %s/%s_%s_%s' %
+                                    (self.executor.tmp_dir, filename_moj, 'localhost', benchname, beg_time))
diff --git a/expetator/monitors/mojitos.py b/expetator/monitors/mojitos.py
index fe0d12fa1e0620bc6156f2c62e18940c6026dc56..a47b6ca09a7456702cd3e6bf7c32faf7d5064d9d 100644
--- a/expetator/monitors/mojitos.py
+++ b/expetator/monitors/mojitos.py
@@ -58,21 +58,22 @@ class Mojitos:
     def build(self, executor):
         """Installs the mojito/s monitoring framework and add the permissions"""
 
-        if True or self.rapl:
+        #if True or self.rapl:
             # should work but do not work currently as to compile mojitos it
             # is always necessary to have rapl. Todo: update mojitos
-            if False in [os.path.exists(filename) for filename in
-                         ['/usr/share/doc/powercap-utils',
-                          '/usr/share/doc/libpowercap-dev',
-                          '/usr/share/doc/libpowercap0']]:
-                executor.hosts('apt install -y libpowercap0 libpowercap-dev powercap-utils', root=True)
+            # if False in [os.path.exists(filename) for filename in
+            #              ['/usr/share/doc/powercap-utils',
+            #               '/usr/share/doc/libpowercap-dev',
+            #               '/usr/share/doc/libpowercap0']]:
+            #     executor.hosts('apt install -y libpowercap0 libpowercap-dev powercap-utils', root=True)
         if not os.path.exists('/tmp/mojitos'):
             executor.local('cd /tmp; git clone https://gitlab.irit.fr/sepia-pub/mojitos.git')
         else:
             executor.local('cd /tmp/mojitos; git pull')
-        executor.local('cd /tmp/mojitos; make')
-        executor.local('cp /tmp/mojitos/mojitos /tmp/bin/')
-        if True or self.rapl:
+        executor.local('cd /tmp/mojitos; ./configure.sh; make')
+        executor.local('cp /tmp/mojitos/bin/mojitos /tmp/bin/')
+        if True or self.rapl or self.perf:
+            executor.hosts('sudo-g5k modprobe msr', root=True)
             if read_int('/proc/sys/kernel/perf_event_paranoid') != 0:
                 executor.hosts("sh -c 'echo 0 >/proc/sys/kernel/perf_event_paranoid'", root=True)
             mode = os.stat('/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_max_power_uw')
@@ -93,7 +94,8 @@ class Mojitos:
             self.cmdline += ' -r'
         if self.load:
             self.cmdline += ' -u'
-        self.cmdline += ' -o /dev/shm/monitoring_moj &'
+        self.monitoring_file = '%s/monitoring_moj' % executor.tmp_dir
+        self.cmdline += ' -o %s &' % self.monitoring_file
 
 
     def start(self):
@@ -110,8 +112,8 @@ class Mojitos:
         os.makedirs(filename_moj, exist_ok=True)
         if len(self.executor.hostnames) > 1:
             for hostname in self.executor.hostnames:
-                self.executor.local('oarcp %s:/dev/shm/monitoring_moj %s/%s_%s_%s' %
-                                    (hostname, filename_moj, hostname, benchname, beg_time))
+                self.executor.local('oarcp %s:%s %s/%s_%s_%s' %
+                                    (hostname, self.monitoring_file, filename_moj, hostname, benchname, beg_time))
         else:
-            self.executor.local('cp /dev/shm/monitoring_moj %s/%s_%s_%s' %
-                                    (filename_moj, 'localhost', benchname, beg_time))
+            self.executor.local('cp %s %s/%s_%s_%s' %
+                                    (self.monitoring_file, filename_moj, 'localhost', benchname, beg_time))
diff --git a/expetator/monitors/power.py b/expetator/monitors/power.py
index 3fb2d45e230d66509267583af9ee28327a797ddb..4bbcbe0923da237b197d6c89dae041891a8ac31c 100644
--- a/expetator/monitors/power.py
+++ b/expetator/monitors/power.py
@@ -57,8 +57,8 @@ class Power:
 
                 result = [(raw['uid'], raw['timestamps'],raw['values']) for raw in raws]
         else:
-            self.executor.local('cp /dev/shm/power_measures %s' % target)
-            with open('/dev/shm/power_measures') as file_id:
+            self.executor.local('cp /tmp/expetator_power_measures %s' % target)
+            with open('/tmp/expetator_power_measures') as file_id:
                 content = [line.split() for line in file_id.readlines()[1:]]
             content = [(int(t), float(p)) for t,p in content]
             result = [('localhost',)+tuple(zip(*content))]
diff --git a/setup.py b/setup.py
index 29e6aaea3e4ab31c5721a6bbd9a2b7187a97e8c7..4e894d5695879441c1a30e2d5756eb266a3add6d 100644
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
 
 setuptools.setup(
     name="expetator",
-    version="0.3.20",
+    version="0.3.23",
     author="Georges Da Costa",
     author_email="georges.da-costa@irit.fr",
     description="A framework for monitoring HPC applications using DVFS",