构建

环境准备

编译工具建议版本

  • OS: Ubuntu 22.04 LTS+
  • cmake: 3.20.x
  • gcc: 11.4+
  • python 3.11.10
  • pybind11 2.10.3
  • make 4.3 or ninja 1.10.1

编译

  1. 下载代码
git clone https://gitcode.com/Ascend/memcache
cd memcache
git clean -xdf
git reset --hard
  1. 拉取第三方库
# Initialize and update only the required submodules (excluding test dependencies)
git submodule update --init 3rdparty/

# Update memfabric_hybrid to the latest version of a specific branch (e.g., master)
# Replace 'master' with your target branch name
git -c submodule.3rdparty/memfabric_hybrid.branch=master submodule update --remote 3rdparty/memfabric_hybrid

说明:

  • --init 3rdparty/memfabric_hybrid 只初始化并更新指定的子模块,避免拉取 test 目录等不必要的依赖
  • 通过 -c submodule.3rdparty/memfabric_hybrid.branch=<branch_name> 参数可以指定拉取的目标分支
  • 若需拉取所有子模块(包括测试依赖),可使用 git submodule update --recursive --init
  1. 编译

执行如下命令进行编译,编译成功后,会生成run包在output目录下

bash script/build_and_pack_run.sh --build_mode RELEASE
  • build_and_pack_run.sh支持2个参数,分别是<build_mode> <build_test>
  • build_mode: 编译类型,可填RELEASE或DEBUG,默认RELEASE
  • build_test: 是否打包测试工具,可填ON或OFF,默认OFF
  1. ut运行

支持直接执行如下脚本编译并运行ut

bash script/run_ut.sh

安装使用

MemCache将所有特性集成到run包中供用户使用,run包格式为 memcache_hybrid-${version}_${os}_${arch}.run

其中,version表示MemCache的版本;os表示操作系统,如linux;arch表示架构,如x86或aarch64

注意:MemCache运行时依赖MemFabric,需要先参考MemFabric使用指导完成MemFabric的安装。

run包安装

run包的默认安装根路径为 /usr/local/

安装完成后需要source安装路径下的memcache_hybrid/set_env.sh

参考安装命令如下(此处以1.0.0版本为例)

bash memcache_hybrid-1.0.0_linux_aarch64.run # 请修改为实际路径和文件名
source /usr/local/memcache_hybrid/set_env.sh

如果想要自定义安装路径,可以添加--install-path参数

bash memcache_hybrid-1.0.0_linux_aarch64.run --install-path=${your path}  # 请修改为实际路径和文件名

安装的run包可以通过如下命令查看版本(此处以默认安装路径为例)

 cat /usr/local/memcache_hybrid/latest/version.info

安装的python包可以通过如下命令查看版本

pip show memcache_hybrid

在安装过程中,会默认尝试安装适配当前环境的MemCache的whl包,如果未安装,则在使用python接口前需要用户手动安装(生成的whl包放在output/memcache/wheel目录下)

运行服务

MetaService

👆 NOTE:运行前需要根据 MetaService配置项 对配置文件 /usr/local/memcache_hybrid/latest/config/mmc-meta.conf 进行相关配置,该文件可以放置到任意可访问的路径

  • python形式以下均以python311版本whl包(memcache_hybrid-1.0.0-cp311-cp311-linux_aarch64.whl)为例
1、安装whl包(如在安装run包过程中,已安装whl包,此步骤可省略)
pip install memcache_hybrid-1.0.0-cp311-cp311-linux_aarch64.whl # 修改为实际的安装包名

2、方式一:环境变量 + 配置文件(兼容原有方式)
export MMC_META_CONFIG_PATH=/usr/local/memcache_hybrid/latest/config/mmc-meta.conf

进入python控制台或者编写python脚本如下即可拉起进程:
from memcache_hybrid import MetaService
MetaService.main()

3、方式二(推荐):Python 直接设置配置(无需 MMC_META_CONFIG_PATH)
from memcache_hybrid import MetaService, MetaConfig

config = MetaConfig()
config.meta_service_url = "tcp://192.168.1.1:5000"
config.config_store_url = "tcp://192.168.1.2:6000"
config.metrics_url = "http://192.168.1.1:8000"
config.ha_enable = False
config.log_level = "info"

MetaService.setup(config)
MetaService.main()
  • bin形式
安装run包即完成了相应二进制的部署
1、设置环境变量
source /usr/local/memcache_hybrid/set_env.sh
source /usr/local/memfabric_hybrid/set_env.sh

2、环境变量 + 配置文件
export MMC_META_CONFIG_PATH=/usr/local/memcache_hybrid/latest/config/mmc-meta.conf
/usr/local/memcache_hybrid/latest/aarch64-linux/bin/mmc_meta_service

LocalService

👆 NOTE:运行前需要根据 LocalService配置项 对配置文件 /usr/local/memcache_hybrid/latest/config/mmc-local.conf 进行相关配置,该文件可以放置到任意可访问的路径

  • whl(python)
1、安装whl包(如在安装run包过程中,已安装whl包,此步骤可省略)
pip install memcache_hybrid-1.0.0-cp311-cp311-linux_aarch64.whl # 修改为实际的安装包名

2、方式一:环境变量 + 配置文件(兼容原有方式)
export MMC_LOCAL_CONFIG_PATH=/usr/local/memcache_hybrid/latest/config/mmc-local.conf

通过MemCache提供的接口初始化客户端并拉起localservice,执行数据写入、查询、获取、删除等,下面的脚本是一个示例:
python3 test_mmc_demo.py

3、方式二(推荐):Python 入口直接指定 local 配置文件路径
from memcache_hybrid import DistributedObjectStore, LocalConfig

config = LocalConfig()
config.protocol = "device_rdma"
config.dram_size = "10GB"
config.max_dram_size = "64GB"
print(config)

store = DistributedObjectStore()
assert store.setup(config) == 0, "setup local config failed"
ret = store.setup("/usr/local/memcache_hybrid/latest/config/mmc-local.conf", device_id=0, init_bm=True)
print(ret)
  • so(C++)
1、导入头文件
#include "mmcache.h"

2、将 libmf_memcache.so 路径加入到 LD_LIBRARY_PATH 环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${libmf_memcache.so path}

注:如果其所在路径已经在 PATH 或 LD_LIBRARY_PATH,则无需此步骤

3、设置配置文件环境变量
export MMC_LOCAL_CONFIG_PATH=/usr/local/memcache_hybrid/latest/config/mmc-local.conf

4、调用相关API