Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
7ebf2dd4
You need to sign in or sign up before continuing.
Commit
7ebf2dd4
authored
Nov 05, 2020
by
Antoine Kaufmann
Browse files
experiemnts: support for gem5 checkpoints
parent
c73496c5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
62 additions
and
3 deletions
+62
-3
experiments/modes/experiments.py
experiments/modes/experiments.py
+14
-1
experiments/modes/simulators.py
experiments/modes/simulators.py
+2
-1
experiments/pyexps/gem5_i40e_pair.py
experiments/pyexps/gem5_i40e_pair.py
+42
-0
experiments/run.py
experiments/run.py
+4
-1
No files found.
experiments/modes/experiments.py
View file @
7ebf2dd4
...
@@ -155,12 +155,16 @@ class Experiment(object):
...
@@ -155,12 +155,16 @@ class Experiment(object):
return
cores
return
cores
class
ExpEnv
(
object
):
class
ExpEnv
(
object
):
def
__init__
(
self
,
repo_path
,
workdir
):
def
__init__
(
self
,
repo_path
,
workdir
,
cpdir
):
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
.
qemu_img_path
=
self
.
repodir
+
'/qemu/qemu-img'
self
.
qemu_img_path
=
self
.
repodir
+
'/qemu/qemu-img'
self
.
qemu_path
=
self
.
repodir
+
'/qemu/x86_64-softmmu/qemu-system-x86_64'
self
.
qemu_path
=
self
.
repodir
+
'/qemu/x86_64-softmmu/qemu-system-x86_64'
self
.
qemu_kernel_path
=
self
.
repodir
+
'/images/bzImage'
self
.
qemu_kernel_path
=
self
.
repodir
+
'/images/bzImage'
self
.
gem5_path
=
self
.
repodir
+
'/gem5/build/X86/gem5.opt'
self
.
gem5_py_path
=
self
.
repodir
+
'/gem5/configs/cosim/cosim.py'
self
.
gem5_kernel_path
=
self
.
repodir
+
'/images/vmlinux'
def
hdcopy_path
(
self
,
sim
):
def
hdcopy_path
(
self
,
sim
):
return
'%s/hdcopy.%s'
%
(
self
.
workdir
,
sim
.
name
)
return
'%s/hdcopy.%s'
%
(
self
.
workdir
,
sim
.
name
)
...
@@ -168,6 +172,9 @@ class ExpEnv(object):
...
@@ -168,6 +172,9 @@ class ExpEnv(object):
def
hd_path
(
self
,
hd_name
):
def
hd_path
(
self
,
hd_name
):
return
'%s/images/output-%s/%s'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
return
'%s/images/output-%s/%s'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
def
hd_raw_path
(
self
,
hd_name
):
return
'%s/images/output-%s/%s.raw'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
def
cfgtar_path
(
self
,
sim
):
def
cfgtar_path
(
self
,
sim
):
return
'%s/cfg.%s.tar'
%
(
self
.
workdir
,
sim
.
name
)
return
'%s/cfg.%s.tar'
%
(
self
.
workdir
,
sim
.
name
)
...
@@ -180,6 +187,12 @@ class ExpEnv(object):
...
@@ -180,6 +187,12 @@ class ExpEnv(object):
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
.
workdir
,
sim
.
name
)
def
gem5_outdir
(
self
,
sim
):
return
'%s/gem5-out.%s'
%
(
self
.
workdir
,
sim
.
name
)
def
gem5_cpdir
(
self
,
sim
):
return
'%s/gem5-cp.%s'
%
(
self
.
cpdir
,
sim
.
name
)
class
ExpOutput
(
object
):
class
ExpOutput
(
object
):
def
__init__
(
self
,
exp
):
def
__init__
(
self
,
exp
):
self
.
exp_name
=
exp
.
name
self
.
exp_name
=
exp
.
name
...
...
experiments/modes/simulators.py
View file @
7ebf2dd4
...
@@ -98,13 +98,14 @@ class Gem5Host(HostSim):
...
@@ -98,13 +98,14 @@ class Gem5Host(HostSim):
def
resreq_mem
(
self
):
def
resreq_mem
(
self
):
return
4096
return
4096
def
prep_cmds
(
self
,
env
):
return
[
f
'mkdir -p
{
env
.
gem5_cpdir
(
self
)
}
'
]
def
run_cmd
(
self
,
env
):
def
run_cmd
(
self
,
env
):
cpu_type
=
self
.
cpu_type
cpu_type
=
self
.
cpu_type
if
env
.
create_cp
:
if
env
.
create_cp
:
cpu_type
=
self
.
cpu_type_cp
cpu_type
=
self
.
cpu_type_cp
self
.
cp_cpu_type
cmd
=
(
f
'
{
env
.
gem5_path
}
--outdir=
{
env
.
gem5_outdir
(
self
)
}
'
cmd
=
(
f
'
{
env
.
gem5_path
}
--outdir=
{
env
.
gem5_outdir
(
self
)
}
'
f
'
{
env
.
gem5_py_path
}
--caches --l2cache --l3cache '
f
'
{
env
.
gem5_py_path
}
--caches --l2cache --l3cache '
'--l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l3_size=32MB '
'--l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l3_size=32MB '
...
...
experiments/pyexps/gem5_i40e_pair.py
0 → 100644
View file @
7ebf2dd4
import
modes.experiments
as
exp
import
modes.simulators
as
sim
import
modes.nodeconfig
as
node
e
=
exp
.
Experiment
(
'gem5-i40e-pair'
)
e
.
timeout
=
5
*
60
e
.
checkpoint
=
True
net
=
sim
.
SwitchNet
()
e
.
add_network
(
net
)
nic_a
=
sim
.
I40eNIC
()
nic_a
.
set_network
(
net
)
e
.
add_nic
(
nic_a
)
host_a
=
sim
.
Gem5Host
()
host_a
.
cpu_type
=
'X86KvmCPU'
host_a
.
name
=
'server'
host_a
.
node_config
=
node
.
I40eLinuxNode
()
host_a
.
node_config
.
sim
=
'gem5'
# FIXME
host_a
.
node_config
.
ip
=
'10.0.0.1'
host_a
.
node_config
.
app
=
node
.
IperfTCPServer
()
host_a
.
add_nic
(
nic_a
)
e
.
add_host
(
host_a
)
for
i
in
range
(
0
,
1
):
nic_b
=
sim
.
I40eNIC
()
nic_b
.
set_network
(
net
)
e
.
add_nic
(
nic_b
)
host_b
=
sim
.
Gem5Host
()
host_b
.
cpu_type
=
'X86KvmCPU'
host_b
.
name
=
'client.%d'
%
i
host_b
.
wait
=
True
host_b
.
node_config
=
node
.
I40eLinuxNode
()
host_b
.
node_config
.
sim
=
'gem5'
# FIXME
host_b
.
node_config
.
ip
=
'10.0.0.%d'
%
(
2
+
i
)
host_b
.
node_config
.
app
=
node
.
IperfTCPClient
()
host_b
.
add_nic
(
nic_b
)
e
.
add_host
(
host_b
)
experiments
=
[
e
]
experiments/run.py
View file @
7ebf2dd4
...
@@ -32,6 +32,8 @@ g_env.add_argument('--workdir', metavar='DIR', type=str,
...
@@ -32,6 +32,8 @@ g_env.add_argument('--workdir', metavar='DIR', type=str,
default
=
'./out/'
,
help
=
'Work directory base'
)
default
=
'./out/'
,
help
=
'Work directory base'
)
g_env
.
add_argument
(
'--outdir'
,
metavar
=
'DIR'
,
type
=
str
,
g_env
.
add_argument
(
'--outdir'
,
metavar
=
'DIR'
,
type
=
str
,
default
=
'./out/'
,
help
=
'Output directory base'
)
default
=
'./out/'
,
help
=
'Output directory base'
)
g_env
.
add_argument
(
'--cpdir'
,
metavar
=
'DIR'
,
type
=
str
,
default
=
'./out/'
,
help
=
'Checkpoint directory base'
)
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'
,
...
@@ -69,8 +71,9 @@ def add_exp(e, run, prereq, create_cp, restore_cp):
...
@@ -69,8 +71,9 @@ def add_exp(e, run, prereq, create_cp, restore_cp):
return
None
return
None
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
)
env
=
exp
.
ExpEnv
(
args
.
repo
,
workdir
)
env
=
exp
.
ExpEnv
(
args
.
repo
,
workdir
,
cpdir
)
env
.
create_cp
=
create_cp
env
.
create_cp
=
create_cp
env
.
restore_cp
=
restore_cp
env
.
restore_cp
=
restore_cp
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment