| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[反合][docs]根据doc tools扫描结果优化资料 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !418 merge develop into develop [反合][docs]根据doc tools扫描结果优化资料 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixes [#190](https://gitcode.com/Ascend/memcache/issues/190) # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!418 | 2 个月前 | |
fix: set interactive app default replica number to one Co-authored-by: lirui7717<lirui7717@163.com> # message auto-generated for no-merge-commit merge: !497 merge fix/interactive-app-default-replica-one into develop fix: set interactive app default replica number to one Created-by: lirui7717 Commit-by: lirui7717 Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue:#245 # 问题/功能描述 example/python/interactive_app.py 默认配置 DEFAULT_REPLICA_NUMBER = 2,但示例仅初始化一个 LocalService。 默认副本数与可用 LocalService 数量不匹配,执行示例时导致写入失败。 # 修改方案描述 将 DEFAULT_REPLICA_NUMBER 的默认值由 2 调整为 1, 使其与当前 interactive app 默认仅启动一个 LocalService 的行为保持一致。 本次仅修改该默认配置,不改变命令行参数、对外接口或其他逻辑。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) 本次仅修改 Python 示例中的默认常量,未修改核心业务逻辑、对外接口或参数解析逻辑; 该示例依赖实际 Ascend/NPU、LocalService 和运行环境。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:未涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件 - [x] 安全:未新增对外接口/参数 - [x] 规范:未涉及资料改动 See merge request: Ascend/memcache!497 | 1 个月前 | |
[feature] layerwise支持从ssd预取 Co-authored-by: mrh1024<marunhua1@h-partners.com> # message auto-generated for no-merge-commit merge: !414 merge develop_layerwise into develop [feature] layerwise支持从ssd预取 Created-by: mrh1024 Commit-by: mrh1024 Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述  # 修改方案描述 ## 一、修改概述 为 layerwise 场景增加 **SSD → DRAM 预取(回温)** 能力。通过在 get_key_info / batch_get_key_info 接口引入 flag 位掩码,调用方可指定查询的存储层级,并在开启 AUTO_COPY 时由 MetaService 自动将 SSD 上的数据回温到 DRAM。 ## 二、核心改动 ### 1. 新增查询 flag 位掩码(src/memcache/include/mmc_def.h) c constexpr uint32_t GET_KEY_INFO_TIER_HBM = 0x01U; // bit0: HBM constexpr uint32_t GET_KEY_INFO_TIER_DRAM = 0x02U; // bit1: DRAM constexpr uint32_t GET_KEY_INFO_TIER_SSD = 0x04U; // bit2: SSD constexpr uint32_t GET_KEY_INFO_AUTO_COPY = 0x08U; // bit3: SSD->DRAM 自动回温 - 低 3 位为层级位掩码,0 表示返回所有层级,可组合(如 HBM|DRAM)。 - bit3 AUTO_COPY 开启自动拷贝,仅支持 SSD→DRAM 方向。 ### 2. 新增层级转换辅助函数(src/memcache/csrc/common/mmc_types.h) c inline uint32_t MediaTypeToTierBit(MediaType mt) 将 MediaType 映射为对应的 tier bit,供 Query 过滤使用。 ### 3. MetaManager 新增 PrefetchKeys(mmc_meta_manager.cpp/.h) - 新增 void PrefetchKeys(const std::vector<std::string> &keys)。 - 复用 rewarmThreadPool_,通过 ClassifyAndGroupKeys 分组、RewarmRankGroup 执行 SSD→DRAM 回温。 - Query 方法实现变更: - 不再忽略 flags,解析 tierMask 后按层级过滤返回的 blob。 - tierMask == 0 时返回所有层级(兼容旧行为)。 ### 4. Proxy 层触发回温(mmc_meta_mgr_proxy.h) Query / BatchQuery 在 AUTO_COPY 置位且目标层含 DRAM 时,先调用 PrefetchKeys 再查询,使调用方"查即回温"。 ### 5. Python 绑定默认 flag 变更(pymmc.cpp) get_key_info / batch_get_key_info 默认 flag 由 0 改为 GET_KEY_INFO_TIER_DRAM | GET_KEY_INFO_AUTO_COPY,即 Python 侧默认查 DRAM、缺失时自动从 SSD 回温。 ## 三、示例与测试 | 文件 | 说明 | |---|---| | example/python/test_layerwise_from_ssd.py | 新增。写满 DRAM 触发首个 key 被驱逐到 SSD,再用默认 flag 读取触发回温,并校验数据一致。 | | example/python/test_layerwise_demo.py | 由 test_alloc_copy_finish.py 重命名而来。 | | test/ut/testcase/.../test_meta_manager.cpp | 新增 QueryFlagFiltersByTier 用例,覆盖 flag=0/DRAM/HBM/SSD/HBM\|DRAM/DRAM\|AUTO_COPY 各分支。 | | test/python/memcache/mock_server/server.py | mock server 的 get_key_info / batch_get_key_info 显式传 flag=0,避免受新默认值影响。 | ## 四、文档同步 doc/memcache_c_api.md、doc/memcache_c++_api.md、doc/memcache_python_api.md 中 get_key_info / batch_get_key_info 的 flag 参数说明已更新,描述层级位掩码语义与 AUTO_COPY 行为,并标注 Python 默认值为 DRAM|AUTO_COPY。 ## 五、其他调整 - mmc_meta_container_lru.cpp:驱逐时 moveFunc 失败的日志由 MMC_LOG_ERROR 降为 MMC_LOG_INFO。 - mmc_meta_manager.cpp:EvictCallBackFunction 中"无可读 blob 跳过"日志由 MMC_LOG_WARN 降为 MMC_LOG_INFO。 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!414 | 1 个月前 | |
[feature] layerwise支持从ssd预取 Co-authored-by: mrh1024<marunhua1@h-partners.com> # message auto-generated for no-merge-commit merge: !414 merge develop_layerwise into develop [feature] layerwise支持从ssd预取 Created-by: mrh1024 Commit-by: mrh1024 Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述  # 修改方案描述 ## 一、修改概述 为 layerwise 场景增加 **SSD → DRAM 预取(回温)** 能力。通过在 get_key_info / batch_get_key_info 接口引入 flag 位掩码,调用方可指定查询的存储层级,并在开启 AUTO_COPY 时由 MetaService 自动将 SSD 上的数据回温到 DRAM。 ## 二、核心改动 ### 1. 新增查询 flag 位掩码(src/memcache/include/mmc_def.h) c constexpr uint32_t GET_KEY_INFO_TIER_HBM = 0x01U; // bit0: HBM constexpr uint32_t GET_KEY_INFO_TIER_DRAM = 0x02U; // bit1: DRAM constexpr uint32_t GET_KEY_INFO_TIER_SSD = 0x04U; // bit2: SSD constexpr uint32_t GET_KEY_INFO_AUTO_COPY = 0x08U; // bit3: SSD->DRAM 自动回温 - 低 3 位为层级位掩码,0 表示返回所有层级,可组合(如 HBM|DRAM)。 - bit3 AUTO_COPY 开启自动拷贝,仅支持 SSD→DRAM 方向。 ### 2. 新增层级转换辅助函数(src/memcache/csrc/common/mmc_types.h) c inline uint32_t MediaTypeToTierBit(MediaType mt) 将 MediaType 映射为对应的 tier bit,供 Query 过滤使用。 ### 3. MetaManager 新增 PrefetchKeys(mmc_meta_manager.cpp/.h) - 新增 void PrefetchKeys(const std::vector<std::string> &keys)。 - 复用 rewarmThreadPool_,通过 ClassifyAndGroupKeys 分组、RewarmRankGroup 执行 SSD→DRAM 回温。 - Query 方法实现变更: - 不再忽略 flags,解析 tierMask 后按层级过滤返回的 blob。 - tierMask == 0 时返回所有层级(兼容旧行为)。 ### 4. Proxy 层触发回温(mmc_meta_mgr_proxy.h) Query / BatchQuery 在 AUTO_COPY 置位且目标层含 DRAM 时,先调用 PrefetchKeys 再查询,使调用方"查即回温"。 ### 5. Python 绑定默认 flag 变更(pymmc.cpp) get_key_info / batch_get_key_info 默认 flag 由 0 改为 GET_KEY_INFO_TIER_DRAM | GET_KEY_INFO_AUTO_COPY,即 Python 侧默认查 DRAM、缺失时自动从 SSD 回温。 ## 三、示例与测试 | 文件 | 说明 | |---|---| | example/python/test_layerwise_from_ssd.py | 新增。写满 DRAM 触发首个 key 被驱逐到 SSD,再用默认 flag 读取触发回温,并校验数据一致。 | | example/python/test_layerwise_demo.py | 由 test_alloc_copy_finish.py 重命名而来。 | | test/ut/testcase/.../test_meta_manager.cpp | 新增 QueryFlagFiltersByTier 用例,覆盖 flag=0/DRAM/HBM/SSD/HBM\|DRAM/DRAM\|AUTO_COPY 各分支。 | | test/python/memcache/mock_server/server.py | mock server 的 get_key_info / batch_get_key_info 显式传 flag=0,避免受新默认值影响。 | ## 四、文档同步 doc/memcache_c_api.md、doc/memcache_c++_api.md、doc/memcache_python_api.md 中 get_key_info / batch_get_key_info 的 flag 参数说明已更新,描述层级位掩码语义与 AUTO_COPY 行为,并标注 Python 默认值为 DRAM|AUTO_COPY。 ## 五、其他调整 - mmc_meta_container_lru.cpp:驱逐时 moveFunc 失败的日志由 MMC_LOG_ERROR 降为 MMC_LOG_INFO。 - mmc_meta_manager.cpp:EvictCallBackFunction 中"无可读 blob 跳过"日志由 MMC_LOG_WARN 降为 MMC_LOG_INFO。 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!414 | 1 个月前 | |
【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !482 merge fix_ci into develop 【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 1. 特殊情况会残留容器 2. 执行用例前没有校验使用的卡是否空闲 # 修改方案描述 1. 退出时增强清理残留容器的流程 2. 在 NPU 探测之后, 选一张空闲卡并让子进程继承。各段原有的 NPU_IDLE -lt 1 整段 skip 逻辑保留——0 张空闲仍整段跳过,这只在 ≥1 张空闲时选卡 # 是否涉及UT/ST - [ √] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!482 | 1 个月前 | |
【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !482 merge fix_ci into develop 【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 1. 特殊情况会残留容器 2. 执行用例前没有校验使用的卡是否空闲 # 修改方案描述 1. 退出时增强清理残留容器的流程 2. 在 NPU 探测之后, 选一张空闲卡并让子进程继承。各段原有的 NPU_IDLE -lt 1 整段 skip 逻辑保留——0 张空闲仍整段跳过,这只在 ≥1 张空闲时选卡 # 是否涉及UT/ST - [ √] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!482 | 1 个月前 | |
【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !482 merge fix_ci into develop 【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 1. 特殊情况会残留容器 2. 执行用例前没有校验使用的卡是否空闲 # 修改方案描述 1. 退出时增强清理残留容器的流程 2. 在 NPU 探测之后, 选一张空闲卡并让子进程继承。各段原有的 NPU_IDLE -lt 1 整段 skip 逻辑保留——0 张空闲仍整段跳过,这只在 ≥1 张空闲时选卡 # 是否涉及UT/ST - [ √] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!482 | 1 个月前 | |
【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !482 merge fix_ci into develop 【ci】修复devcontainer校验脚本的容器残留、SIGPIPE中止与NPU选卡问题 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 1. 特殊情况会残留容器 2. 执行用例前没有校验使用的卡是否空闲 # 修改方案描述 1. 退出时增强清理残留容器的流程 2. 在 NPU 探测之后, 选一张空闲卡并让子进程继承。各段原有的 NPU_IDLE -lt 1 整段 skip 逻辑保留——0 张空闲仍整段跳过,这只在 ≥1 张空闲时选卡 # 是否涉及UT/ST - [ √] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!482 | 1 个月前 | |
format: reformat all source files with clang-format Co-authored-by: j00808874<jiangchanghong3@huawei.com> # message auto-generated for no-merge-commit merge: !70 merge mr into develop format: reformat all source files with clang-format Created-by: j00808874 Commit-by: j00808874 Merged-by: yrewzjsx Description: # Pull Request Template ## Description format: reformat all source files with clang-format Ensure that future MRs show only *semantic* diffs, not formatting noise ## Related Issues <!-- Replace with actual issue numbers. Example: Closes #123, Related to #456 --> ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Performance optimization - [ ] Documentation update - [ ] Other (please describe):_______________ ## Testing <!-- Describe how the changes were tested. Include: - Unit/integration test coverage - Manual validation steps - Links to CI reports (e.g., CIDA) if available - Note any pending tests --> ## Checklist - [ ] I have performed a self-review of my own code. - [ ] I have updated the documentation. - [ ] I have added tests to prove my changes are effective. See merge request: Ascend/memcache!70 | 8 个月前 | |
feat: support meta setup config api Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !191 merge setup_meta into develop feat: support meta setup config api Created-by: shilinlee_com Commit-by: shilinlee Merged-by: chenyz6 Description: # Pull Request Template ## Description feat: support meta setup config api ## Related Issues <!-- Replace with actual issue numbers. Example: Closes #123, Related to #456 --> ## Type of Change - [ ] Bug fix - [x] New feature - [ ] Performance optimization - [ ] Documentation update - [ ] Other (please describe):_______________ ## Testing python from memcache_hybrid import MetaConfig, MetaService def main(): config = MetaConfig() config.meta_service_url = "tcp://127.0.0.1:5000" config.log_level = "error" print(config) meta_service = MetaService assert meta_service.setup(config) == 0, "Meta service setup failed" meta_service.main() if __name__ == "__main__": main()  ## Checklist - [ ] I have performed a self-review of my own code. - [ ] I have updated the documentation. - [ ] I have added tests to prove my changes are effective. See merge request: Ascend/memcache!191 | 5 个月前 |
Python
代码实现介绍
本样例简单验证了memcache_hybrid相关python接口
本样例需要在npu环境下编译运行
如果编译选择CANN依赖
首先,请在环境上提前安装NPU固件驱动和CANN包(环境安装参考链接)
HDK固件驱动需要使用25.0.RC1 及以上版本(社区版HDK下载链接)
安装完成后需要配置CANN环境变量 (参考安装Toolkit开发套件包的第三步配置环境变量)
运行样例前请先编译安装 memfabric_hybrid的run包,默认安装路径为/usr/local/,然后source安装路径下的set_env.sh
memfabric_hybrid参考安装命令
bash memfabric_hybrid-1.0.0_linux_aarch64.run # 修改为实际的安装包名
bash memcache_hybrid-1.0.0_linux_aarch64.run # 修改为实际的安装包名
source /usr/local/memfabric_hybrid/set_env.sh
source /usr/local/memcache_hybrid/set_env.sh
启动元数据服务
export MMC_META_CONFIG_PATH=/usr/local/memcache_hybrid/latest/config/mmc-meta.conf;
python3
>>> from memcache_hybrid import MetaService
>>> MetaService.main()
也可以直接在 Python 中配置启动参数(无需 MMC_META_CONFIG_PATH):
from memcache_hybrid import MetaConfig, MetaService
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()
配置大页
注意
仅device rdma/host rdma等protocol需要设置。
cat /proc/meminfo
echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
执行脚本
选择脚本,直接执行,以test_mmc_start_meta_service_and_simple_test.py为例,会在一个进程里面启动meta服务和localService并且完成put,get等测试(不需要前面步骤单独的启动meta服务进程),如需修改参数,请调整MetaConfig、LocalConfig相关代码。
python python/test_mmc_start_meta_service_and_simple_test.py