we provide a set of scripts, Dockerfiles and patches that build the appropriate images based on the compiler images built in the compiler images (described here) that enclose the environments of SPP, vanilla PMDK and SafePM variants, required for SPP evaluation.
Overall, these images include the following projects:
PMDK
libpmemobj-cpp
pmemkv
pmemkv-bench
phoenix
More precisely, we build one image for each variant, with the following tags:
vanilla_pmdk
for the vanilla PMDK variantspp
for the SPP variantsafepm
for the SafePM variant
The files of this repository are explained below:
Dockerfile_pmdk
: Dockerfile that instruments the image creation for the vanilla PMDK environment based on the defaultclang
image. Initially it installs further package dependencies required for the projects. It then fetches the appropriate version of the repositories and applies the respective patches. Then, it contains the steps to build and install these projects in the image.Dockerfile_spp
: Dockerfile that instruments the image creation for the SPP environment based on the SPPclang
image. Initially it installs further package dependencies required for the projects. It then fetches the appropriate version of the repositories and applies the respective patches. Then, it contains the steps to build and install these projects in the image.Dockerfile_SafePM
: Dockerfile that instruments the image creation for the SafePM environment based on the defaultclang
image. Initially it installs further package dependencies required for the projects. It then fetches the appropriate version of the repositories and applies the respective patches. Then, it contains the steps to build and install these projects in the image.create_env_pmdk.sh
: usesDockerfile_pmdk
and builds an image with all the necessary dependencies to run the performance benchmarks.create_env_spp.sh
: usesDockerfile_spp
and builds an image with all the necessary dependencies to run the performance benchmarks.create_env_safepm.sh
: usesDockerfile_SafePM
and builds an image with all the necessary dependencies to run the performance benchmarks.*_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.*.patch*
: A set of patches (broken down per package) that are used to adapt the build system of the packages, include the SPP pass and optimization flags, depending on the targetted environment.
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
$ cd PROJECT_ROOT/utils/docker/packaged_environments
$ ./create_env_pmdk.sh
$ ./create_env_spp.sh
$ ./create_env_safepm.sh