Memory Centric Active Storage is a high-performance key-value store designed for persistent memory storage.
The key attributes of the solution are:
- High-performance key-value store based on hash-table primary index and optional secondary indices.
- Support for Intel Optane DC Persistent Memory or conventional DRAM (without persistence).
- Support for both RDMA and traditional TCP/IP network transports.
- Zero-copy transfer capable with RDMA and GPU-Direct capable.
- Support for C++ and Python clients.
Check out source (for example public version):
git clone https://github.com/IBM/mcas.git
cd mcas
git submodule update --init --recursive
Create build directory at root level. We normally use mcas/build
:
mkdir build
cd build
cmake -DBUILD_KERNEL_SUPPORT=1 -DFLATBUFFERS_BUILD_TESTS=0 -DTBB_BUILD_TESTS=0 -DBUILD_PYTHON_SUPPORT=1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
Sometimes we build with an alternate compiler:
mkdir clang
cd clang
cmake -DBUILD_KERNEL_SUPPORT=1 -DFLATBUFFERS_BUILD_TESTS=0 -DTBB_BUILD_TESTS=0 -DBUILD_PYTHON_SUPPORT=1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
Or with code coverage:
mkdir coverage
cd coverage
cmake -DBUILD_KERNEL_SUPPORT=1 -DFLATBUFFERS_BUILD_TESTS=0 -DTBB_BUILD_TESTS=0 -DBUILD_PYTHON_SUPPORT=1 -DCMAKE_BUILD_TYPE=Debug -DCODE_COVERAGE=1 -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
make bootstrap
make -j