Memory Centric Active Storage (MCAS) is a high-performance key-value store explicitly designed for persistent memory. Beyond a conventional key-value store, MCAS provides the ability to provide custom in-store compute (termed Active Data Objects), ultimately reducing data movement across the network and improving performance. MCAS gives the ADO plugin direct access to persistent memory to enable in-place operations without the need to copy data.
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 Rust (experimental) based in-store compute plugins.
- Support for C++, Python and Rust (experimental) clients.
Check out source (for example public version):
git clone https://github.com/IBM/mcas.git
cd mcas
git submodule update --init --recursive
cd deps
./install-<Your-OS-Version>.sh
./install-python-deps.sh
cd ../
Create build directory at root level. We normally use mcas/build
(The deadult build is in debug mode)
mkdir build
cd build
cmake -DBUILD_KERNEL_SUPPORT=ON -DBUILD_PYTHON_SUPPORT=ON -DBUILD_MPI_APPS=OFF -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
Or perform a Release build (which will be much faster):
mkdir build
cd build
cmake -DBUILD_KERNEL_SUPPORT=ON -DBUILD_PYTHON_SUPPORT=ON -DBUILD_MPI_APPS=0 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
Sometimes we build with an alternate compiler:
mkdir clang
cd clang
cmake -DBUILD_KERNEL_SUPPORT=ON -DBUILD_PYTHON_SUPPORT=ON -DBUILD_MPI_APPS=0 -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=ON -DBUILD_PYTHON_SUPPORT=ON -DCMAKE_BUILD_TYPE=Debug -DCODE_COVERAGE=1 -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
make bootstrap
make -j install
Option | Description | Default |
---|---|---|
BUILD_MCAS_SERVER | Build MCAS server | ON |
BUILD_MCAS_CLIENT | Build MCAS client librariers | ON |
BUILD_COMPONENT_CRYPTO | Build crypto support | ON |
BUILD_KERNEL_SUPPORT | Build kernel support | ON |
BUILD_PYTHON_SUPPORT | Build python APIs and personalities | ON |
BUILD_EXAMPLES_PMDK | PMDK in ADO example | OFF |
BUILD_RUST | Rust-based dependencies | OFF |
BUILD_MPI_APPS | Build mcas-mpi-benchmark | OFF |
cmake -DBUILD_KERNEL_SUPPORT=OFF \
-DBUILD_MCAS_SERVER=OFF \
-DBUILD_MCAS_CLIENT=OFF \
-DBUILD_EXAMPLES_PMDK=OFF \
-DBUILD_RUST=OFF \
-DBUILD_PYTHON_SUPPORT=ON \
-DBUILD_MPI_APPS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..
cmake -DBUILD_KERNEL_SUPPORT=ON -DBUILD_EXAMPLES_PMDK=OFF -DBUILD_RUST=ON -DBUILD_PYTHON_SUPPORT=ON -DBUILD_MPI_APPS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist ..