We run the vanilla PMDK
, SPP
and SafePM
variants of the phoenix benchmarks using the already built images.
The run_variants.sh
script executes the pmembench
benchmark for each variant and places the results in the created results
directory and further subdirectories with names that showcase the benchmark name. The respective files inside the subdirectories define the variant.
Note that the repeats
parameter here is taken from the benchmark configuration; an example can be found here.
By default, the amount of repeats is set to 3 for the PM indices (pmembench_map.cfg
) and 10 for the PM TX (pmembench_tx.cfg
) operations.
Note: If the machine you are using has multiple NUMA nodes, it is mandatory that you specify the node that the mounted PM is attached. This can be done via the NUMA_NODE
environment variable. Otherwise, you can ignore this variable.
To run the benchmark, use:
$ cd PROJECT_ROOT/benchmarks/phoenix
$ NUMA_NODE=0 BENCHMARK_PM_PATH=<path to PM> ./run_variants.sh
For more information about the images and containers, see here.
To generate the plots based on the results, simply run:
$ cd PROJECT_ROOT/plot_utils
$ ./import_pmembench.sh <path-to-pmembench-results>
$ python3 generate_plots.py plot_config_pmembench_tx.yml
$ python3 generate_plots.py plot_config_maps.yml
The first import_pmembench.sh
script mainly copies the results of the original folder and formats it so that they can be used by the plotting scripts.
The generate_plots
script will generate a bunch of plots for the pmembench
results which are placed in PROJECT_ROOT/plot_utils/plots
directory.
For each benchmark, a new subdirectory is created.
The executions above will also print a summary of the analyzed result in the stdout
.
For more information about the plotting scripts, see here.
run_safepm.sh
: Script that runs inside the newly-built container for SafePM and modifies the appropriatepmembench
benchmark files to set the correct paths for the PM pools and executes thepmembench
benchmark.- [
run_spp.sh](./run_spp.sh): Script that runs inside the newly-built container for SPP and modifies the appropriate
pmembenchbenchmark files to set the correct paths for the PM pools and executes the
pmembench` benchmark. run_vanilla.sh
: Script that runs inside the newly-built container for vanilla PMDK and modifies the appropriatepmembench
benchmark files to set the correct paths for the PM pools and executes thepmembench
benchmark.run_variants.sh
: Script that instruments the execution of thepmembench
benchmark for all the variants and configurations.
Note: We further provide scripts to run pmembench
in additional environments:
*_O1.sh
: These scripts (with the suffix_O1
) runpmembench
in the same environment but set the optimization level toO1
using the respectiveO1
images, produced by the scripts here.*_mock_*.sh
: These scripts runpmembench
in the SPP environment where we rule out the SPP pointer instrumentation by forcing the SPP injected function to immediately return without performing any action. They use the respectivemock
images, produced by the scripts here.