This is a prototype system for evaluating cooperative memory management (CMM) for database management systems and comparing it to traditional memory management.
An initial discussion of the CMM idea and preliminary experimental results can be found in our paper published in the 1st Workshop on Simplicity in Management of Data (SiMoD):
Robert Lasch, Thomas Legler, Norman May, Bernhard Scheirle, Kai-Uwe Sattler: Cooperative Memory Management for Table and Temporary Data
The earlier version of the prototype used to obtain the results presented there can be found in the simod
branch.
Make sure to initialize git submodules first: git submodule init && git submodule update
Requirements for building the project and running the experiments are:
cmake
- unixODBC (required to build the CH-benCHmark binaries used for dataset generation)
numactl
and libnuma-dev(el) (for<numa.h>
)
Build the project as follows:
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DVTUNE_PROFILING=FALSE -DCOLLECT_CACHE_TRACES=FALSE ..
cmake --build .
The build process includes generating the CH-benCHmark data that is used in the experiments.
Before running the experiments, you may want to adjust the following variables in scripts/parameters.py
:
Variable | Description |
---|---|
nums_threads | the numbers of threads to run the scalability experiment with |
oltp_threads | the number of OLTP threads to use in each experiment except for scalability |
disks | should be a dictionary of disk names and paths to where the test database file should be put for each disk to run benchmarks with |
After having built the binaries and configuring parameters.py
properly, you can run the experiments from the base directory as follows:
python3 scripts/run_experiments.py <result directory>
This will also automatically generate the figures for the Cooperative Memory Management for Cost-Efficient HTAP paper in <result directory>/figures
.
MIT