Commit c279d190 authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

experiments: allow separate shm dir to be specified

this allows the shared memory regions to be created in /dev/shm/ e.g.
instead of the work dir.
parent c32f96db
...@@ -68,6 +68,8 @@ g_env.add_argument('--cpdir', metavar='DIR', type=str, ...@@ -68,6 +68,8 @@ g_env.add_argument('--cpdir', metavar='DIR', type=str,
default='./out/', help='Checkpoint directory base') default='./out/', help='Checkpoint directory base')
g_env.add_argument('--hosts', metavar='JSON_FILE', type=str, g_env.add_argument('--hosts', metavar='JSON_FILE', type=str,
default=None, help='List of hosts to use (json)') default=None, help='List of hosts to use (json)')
g_env.add_argument('--shmdir', metavar='DIR', type=str,
default=None, help='Shared memory directory base (workdir if not set)')
g_par = parser.add_argument_group('Parallel Runtime') g_par = parser.add_argument_group('Parallel Runtime')
g_par.add_argument('--parallel', dest='runtime', action='store_const', g_par.add_argument('--parallel', dest='runtime', action='store_const',
...@@ -147,6 +149,8 @@ def add_exp(e, run, prereq, create_cp, restore_cp, no_simbricks): ...@@ -147,6 +149,8 @@ def add_exp(e, run, prereq, create_cp, restore_cp, no_simbricks):
workdir = '%s/%s/%d' % (args.workdir, e.name, run) workdir = '%s/%s/%d' % (args.workdir, e.name, run)
cpdir = '%s/%s/%d' % (args.cpdir, e.name, 0) cpdir = '%s/%s/%d' % (args.cpdir, e.name, 0)
if args.shmdir is not None:
shmdir = '%s/%s/%d' % (args.shmdir, e.name, run)
env = exp.ExpEnv(args.repo, workdir, cpdir) env = exp.ExpEnv(args.repo, workdir, cpdir)
env.create_cp = create_cp env.create_cp = create_cp
...@@ -155,6 +159,8 @@ def add_exp(e, run, prereq, create_cp, restore_cp, no_simbricks): ...@@ -155,6 +159,8 @@ def add_exp(e, run, prereq, create_cp, restore_cp, no_simbricks):
env.pcap_file = '' env.pcap_file = ''
if args.pcap: if args.pcap:
env.pcap_file = workdir+'/pcap' env.pcap_file = workdir+'/pcap'
if args.shmdir is not None:
env.shm_base = os.path.abspath(shmdir)
run = runtime.Run(e, run, env, outpath, prereq) run = runtime.Run(e, run, env, outpath, prereq)
rt.add_run(run) rt.add_run(run)
......
...@@ -313,6 +313,7 @@ class ExpEnv(object): ...@@ -313,6 +313,7 @@ class ExpEnv(object):
self.repodir = os.path.abspath(repo_path) self.repodir = os.path.abspath(repo_path)
self.workdir = os.path.abspath(workdir) self.workdir = os.path.abspath(workdir)
self.cpdir = os.path.abspath(cpdir) self.cpdir = os.path.abspath(cpdir)
self.shm_base = self.workdir
self.qemu_img_path = self.repodir + '/sims/external/qemu/build/qemu-img' self.qemu_img_path = self.repodir + '/sims/external/qemu/build/qemu-img'
self.qemu_path = self.repodir + '/sims/external/qemu/build/x86_64-softmmu/qemu-system-x86_64' self.qemu_path = self.repodir + '/sims/external/qemu/build/x86_64-softmmu/qemu-system-x86_64'
self.qemu_kernel_path = self.repodir + '/images/bzImage' self.qemu_kernel_path = self.repodir + '/images/bzImage'
...@@ -339,13 +340,13 @@ class ExpEnv(object): ...@@ -339,13 +340,13 @@ class ExpEnv(object):
return '%s/nic.eth.%s' % (self.workdir, sim.name) return '%s/nic.eth.%s' % (self.workdir, sim.name)
def nic_shm_path(self, sim): def nic_shm_path(self, sim):
return '%s/nic.shm.%s' % (self.workdir, sim.name) return '%s/nic.shm.%s' % (self.shm_base, sim.name)
def n2n_eth_path(self, sim_l, sim_c): def n2n_eth_path(self, sim_l, sim_c):
return '%s/n2n.eth.%s.%s' % (self.workdir, sim_l.name, sim_c.name) return '%s/n2n.eth.%s.%s' % (self.workdir, sim_l.name, sim_c.name)
def proxy_shm_path(self, sim): def proxy_shm_path(self, sim):
return '%s/proxy.shm.%s' % (self.workdir, sim.name) return '%s/proxy.shm.%s' % (self.shm_base, sim.name)
def gem5_outdir(self, sim): def gem5_outdir(self, sim):
return '%s/gem5-out.%s' % (self.workdir, sim.name) return '%s/gem5-out.%s' % (self.workdir, sim.name)
......
...@@ -48,6 +48,8 @@ class Run(object): ...@@ -48,6 +48,8 @@ class Run(object):
await exec.mkdir(self.env.workdir) await exec.mkdir(self.env.workdir)
pathlib.Path(self.env.cpdir).mkdir(parents=True, exist_ok=True) pathlib.Path(self.env.cpdir).mkdir(parents=True, exist_ok=True)
await exec.mkdir(self.env.cpdir) await exec.mkdir(self.env.cpdir)
pathlib.Path(self.env.shm_base).mkdir(parents=True, exist_ok=True)
await exec.mkdir(self.env.shm_base)
class Runtime(object): class Runtime(object):
def add_run(self, run): def add_run(self, run):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment