Index: benchmark/rmit.py
===================================================================
--- benchmark/rmit.py	(revision fa6233afbad401cef32a415f97d649459035b5ce)
+++ benchmark/rmit.py	(revision 3e9ec441e541af7ae89f0de720029c7c37d76806)
@@ -16,4 +16,5 @@
 import random
 import re
+import socket
 import subprocess
 import sys
@@ -95,15 +96,65 @@
 	return nopts
 
+# returns the first option with key 'opt'
+def search_option(action, opt):
+	i = 0
+	while i < len(action):
+		if action[i] == opt:
+			i += 1
+			if i != len(action):
+				return action[i]
+		i += 1
+
+	return None
+
 def actions_eta(actions):
 	time = 0
 	for a in actions:
-		i = 0
-		while i < len(a):
-			if a[i] == '-d':
-				i += 1
-				if i != len(a):
-					time += int(a[i])
-			i += 1
+		o = search_option(a, '-d')
+		if o :
+			time += int(o)
 	return time
+
+taskset_maps = None
+
+def init_taskset_maps():
+	global taskset_maps
+	known_hosts = {
+		"jax": {
+			range(  1,  24) : "48-71",
+			range( 25,  48) : "48-71,144-167",
+			range( 49,  96) : "48-95,144-191",
+			range( 97, 144) : "24-95,120-191",
+			range(145, 192) : "0-95,96-191",
+		},
+	}
+
+	if (host := socket.gethostname()) in known_hosts:
+		taskset_maps = known_hosts[host]
+		return True
+
+	print("Warning unknown host '{}', disable taskset usage".format(host), file=sys.stderr)
+	return False
+
+
+def settaskset_one(action):
+	o = search_option(action, '-p')
+	if not o:
+		return action
+	try:
+		oi = int(o)
+	except ValueError:
+		return action
+
+	m = "Not found"
+	for key in taskset_maps:
+		if oi in key:
+			return ['taskset', '-c', taskset_maps[key], *action]
+
+	print("Warning no mapping for {} cores".format(oi), file=sys.stderr)
+	return action
+
+def settaskset(actions):
+	return [settaskset_one(a) for a in actions]
 
 if __name__ == "__main__":
@@ -115,4 +166,5 @@
 	parser.add_argument('--file', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
 	parser.add_argument('--trials', help='Number of trials to run per combinaison', type=int, default=3)
+	parser.add_argument('--notaskset', help='If specified, the trial will not use taskset to match the -p option', action='store_true')
 	parser.add_argument('command', metavar='command', type=str, nargs=1, help='the command prefix to run')
 	parser.add_argument('candidates', metavar='candidates', type=str, nargs='*', help='the candidate suffix to run')
@@ -170,5 +222,12 @@
 
 	# ================================================================================
-	# Figure out all the combinations to run
+	# Fixup the different commands
+
+	# Add tasksets
+	if not options.notaskset and init_taskset_maps():
+		actions = settaskset(actions)
+
+	# ================================================================================
+	# Now that we know what to run, print it.
 	if options.list:
 		for a in actions:
