In the directory compiler_images
, we provide a set of scripts and Dockerfiles that build the appropriate images based on ubuntu-20.04
that contain the compilers required for SPP evaluation. For detailed information, please see here.
In a nutshell, we provide the following:
create_clang_12_image.sh
: usesDockerfile_clang_12
and builds an image with compiled and configured thellvm-12
andclang-12
default versions - the LLVM build flags can be found ininstall_llvm.sh
script.create_spp_image.sh
: usesDockerfile_spp_clang_12
and builds an image with compiled and configured thellvm-12
andclang-12
SPP versions - the LLVM build flags can be found ininstall_llvm_spp.sh
script.
$ cd PROJECT_ROOT/utils/docker/compiler_images
$ ./create_clang_12_image.sh
$ ./create_spp_image.sh
The names of the built images are assigned in the scripts:
llvm-clang-12-test
for default LLVM version andspp-llvm-clang-test
for SPP LLVM version.
Warning: Be careful! We haven't optimized the image building process and it produces big images in size.
The default clang
image is approximately 7.7GB while the SPP clang
image is approximately 5GB.
The llvm-project source code files are removed after its installation.
In the directory packaged_environments
, we provide a set of scripts, Dockerfiles and patches that build the appropriate images based on the compiler images built in the previous step that enclose the environments of SPP, vanilla PMDK and SafePM variants, required for SPP evaluation. For detailed information, please see here.
In a nutshell, we provide the following:
create_env_pmdk.sh
: usesDockerfile_pmdk
and builds an image with all the necessary dependencies to run the performance benchmarks - it fetches and installspmdk
,libpmemobj-cpp
,pmemkv
,pmemkv-bench
andphoenix
.create_env_spp.sh
: usesDockerfile_spp
and builds an image with all the necessary dependencies to run the performance benchmarks - it fetches and installsSPP/pmdk
,libpmemobj-cpp
,pmemkv
,pmemkv-bench
andphoenix
.create_env_safepm.sh
: usesDockerfile_SafePM
and builds an image with all the necessary dependencies to run the performance benchmarks - it fetches and installsSafePM/pmdk
,libpmemobj-cpp
,pmemkv
,pmemkv-bench
andphoenix
.
The included patches are used to adapt the build system of the packages and include the SPP pass flags, depending on the targetted environment.
Note: We further provide scripts to build additional environments:
*_O1.sh
: These scripts (with the suffix_O1
) produce the same environment but set the optimization level toO1
.*_mock_*.sh
: These scripts produce the SPP environment but rule out the SPP pointer instrumentation by forcing the SPP injected function to immediately return without performing any action.
$ cd PROJECT_ROOT/utils/docker/packaged_environments
$ ./create_env_pmdk.sh
$ ./create_env_spp.sh
$ ./create_env_safepm.sh
Warning: Be careful! We haven't optimized the image building process and it produces big images in size:
vanilla_pmdk
~12.6GBspp
~9.85GBsafepm
~13GB