MemCache是针对AI推理场景设计的高性能分布式KVCache缓存,针对昇腾超节点、服务器的实现了精细化性能调优,提供较好的High Availability能力, 同时对接到vllm-ascend、sglang、mindie等开源推理框架
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
add agents.md and skills Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !331 merge codex/add-agentsmd-contributor-guide into develop add agents.md and skills Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 新增 MemCache 仓库的 Agent/Claude Code 通用开发辅助配置,方便不同 Agent 工具复用同一套项目说明和 skills,辅助代码审查与 release note 生成。 # 修改方案描述 - 新增 AGENTS.md,整理本仓库构建、测试、预提交、代码规范、运行配置、模块边界、文档同步和产物依赖说明。 - 新增 .agents/README.md,说明当前可用 Agent skills、使用方式和免责声明。 - 新增 .agents/skills/memcache-code-review/SKILL.md,用于按本项目已有规范、脚本和文档执行代码审查。 - 新增 .agents/skills/memcache-release/SKILL.md,用于生成 MemCache 变更日志或发布说明,发布说明章节标题使用英文。 - 新增 CLAUDE.md -> AGENTS.md 软链,兼容 Claude Code 默认读取习惯。 - 新增 .claude/skills -> ../.agents/skills 软链,兼容 Claude Code skills 目录习惯。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) 仅新增 Agent 使用说明、skills 文档和 Claude Code 兼容软链,不涉及源码逻辑变更,不需要新增 UT/ST。已使用 quick_validate.py 校验新增的两个 SKILL.md。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!331 | 2 个月前 | |
【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 | 23 天前 | |
| 2 个月前 | ||
fix:去掉水线淘汰写ssd逻辑 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !481 merge codex/remove-dram-watermark into develop fix:去掉水线淘汰写ssd逻辑 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4;Super User Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!481 | 16 天前 | |
[feature] 配置文件解析增加 ock.mmc 前缀过滤及加载清单打印 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !389 merge feature/config-prefix-filter into develop [feature] 配置文件解析增加 ock.mmc 前缀过滤及加载清单打印 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4 Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 # 修改方案描述 新增 ock.mmc. 前缀过滤:在 mmc_kv_parser.cpp 的 KVParser::ParseLine 中,对 key 不以 "ock.mmc." 开头的行直接返回 MMC_OK,跳过后续的 SetItem 设置,仅加载目标前缀下的配置项。 新增配置加载清单打印:在 mmc_configuration.cpp 的 Configuration::LoadFromFile 中,解析完成后遍历所有配置项,通过 MMC_LOG_INFO 逐个输出 key = value,方便确认实际生效的配置。 新增 StartsWith 工具函数:在 mmc_functions.h 中添加 StartsWith 内联函数,用于判断字符串是否以指定前缀开头,作为前缀过滤判断的基础能力。 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!389 | 1 个月前 | |
fix: UBS IO 配置项整理,注释为注释状态 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !408 merge feat/ubsio-default-config into develop fix: UBS IO 配置项整理,注释为注释状态 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4 Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!408 | 1 个月前 | |
fix: 修正 /metrics 与 /metrics/summary 文档描述,与代码采集逻辑保持一致 | 12 天前 | |
[feature] benchmark 支持写入 warmup,提升性能统计稳定性 Co-authored-by: lirui7717<lirui7717@163.com> # message auto-generated for no-merge-commit merge: !498 merge feat/benchmark-warmup into develop [feature] benchmark 支持写入 warmup,提升性能统计稳定性 Created-by: lirui7717 Commit-by: lirui7717 Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue:#246 # 问题/功能描述 当前 benchmark 写入测试未提供独立的 warmup 阶段,首次写入可能包含运行时初始化、缓存预热、内存分配等一次性开销,导致正式性能统计结果偏低且波动较大。 在相同环境和测试参数下: | 场景 | Warmup 次数 | 平均时延 | 带宽 | | --- | ---: | ---: | ---: | | 未预热 | 0 | 955.03 us | 16.361 GB/s | | 预热后 | 5 | 756.03 us | 20.667 GB/s | 使用 5 次 warmup 后: - 平均时延由 955.03 us 降至 756.03 us,降低约 20.8%; - 带宽由 16.361 GB/s 提升至 20.667 GB/s,提升约 26.3%。 测试命令: shell # 无 warmup bash ./bench_start.sh -t write -p 1 -b 16 -s 1048576 -n 10 -d 1 -e memcache -l npu -w 0 # warmup 5 次 bash ./bench_start.sh -t write -p 1 -b 16 -s 1048576 -n 10 -d 1 -e memcache -l npu -w 5 # 修改方案描述 新增 -w <warmup_count> 参数,用于配置写入 warmup 次数,默认值为 2,可选0来保持原有调用方式兼容。 实现内容: - bench_start.sh 解析并传递 -w 参数; - run_mutil_process.py 接收并向 worker 下发 warmup_count; - 写入 worker 在正式计时前执行指定次数的 warmup; - warmup 使用临时 key,并在正式计时前删除,避免占用正式测试的内存池容量; - 增加参数合法性校验:call_count 必须大于 0,warmup_count 不得小于 0; - 更新 README:写入示例增加 -w,读测试无需配置该参数,并补充中文参数说明。 读测试原有逻辑已在正式计时前完成预热,本次不额外增加读 warmup 参数的使用说明。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) 本次改动依赖实际 Ascend/NPU、LocalService 及 memcache 运行环境。已在实际环境中完成写入 benchmark 验证,并完成 shell 语法、Python 编译和 Git diff 检查。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件 - [x] 安全:新增对外接口/参数,已增加合法性校验 - [x] 规范:涉及资料改动并已完成修改 See merge request: Ascend/memcache!498 | 18 天前 | |
[反合][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 | 1 个月前 | |
[core] feat: 默认启用 56-bit GVA,移除 32T 容量阈值限制 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !355 merge mmc_enable_56bit_always into develop [core] feat: 默认启用 56-bit GVA,移除 32T 容量阈值限制 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 当前 56-bit GVA 仅在池化总容量(localMaxDRAMSize + localMaxHBMSize)* worldSize > 32TB 时自动启用。此阈值限制导致部分场景(如 device_urma/device_uboe 协议但配置容量未超过 32TB)无法获得 56-bit GVA 的大地址空间优势,且池化总大小大于 32TB 的要求对用户构成文档约束和配置困扰。现决定无条件默认启用 56-bit GVA,移除该阈值判断逻辑及相关文档限制。 # 修改方案描述 1. 无条件启用 56-bit GVA 2. 移除 32T 文档限制 # 是否涉及UT/ST   - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过 1k;超过 1k 已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联 issue 或里程碑 - [x] 规范:不需要 UT/ST 且已说明理由;需要且已包含 UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!355 | 16 天前 | |
fix: develop /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 Co-authored-by: Hututu-w<wangyibing13@huawei.com> # message auto-generated for no-merge-commit merge: !517 merge fix/sync-pr516-develop into develop fix: develop /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 Created-by: Hututu-w Commit-by: Hututu-w Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 curl /metrics和/metrics/summary每次查询全量 key 拷贝 # 修改方案描述 /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 当前分支cpp-httplib已替换为acc,无多 arena 内存膨胀问题 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!517 | 13 天前 | |
fix: develop /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 Co-authored-by: Hututu-w<wangyibing13@huawei.com> # message auto-generated for no-merge-commit merge: !517 merge fix/sync-pr516-develop into develop fix: develop /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 Created-by: Hututu-w Commit-by: Hututu-w Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 curl /metrics和/metrics/summary每次查询全量 key 拷贝 # 修改方案描述 /metrics 与 /metrics/summary 查询改为 O(1) 获取 key 计数,移除每次查询的全量 key 拷贝 当前分支cpp-httplib已替换为acc,无多 arena 内存膨胀问题 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!517 | 13 天前 | |
[ci] style: 引入 pre-commit 并应用全代码库格式化 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !347 merge worktree-precommit-format into develop [ci] style: 引入 pre-commit 并应用全代码库格式化 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: ## 合入来源 - [ ] 需求 - [x] 问题单 - [ ] issue ## 问题/功能描述 引入 pre-commit CI 格式化检查机制,并对全代码库应用自动格式化修正。 ## 修改方案描述 1. 新增/更新 pre-commit 基础设施: .clang-format、.pre-commit-config.yaml、script/ci-pre-commit-pr.sh CI 脚本 2. 对全代码库执行 pre-commit 自动格式化:clang-format、文件末尾补换行、去除尾随空格等 ## 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由:纯格式化调整,不涉及功能逻辑改动) ## 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!347 | 1 个月前 | |
[ci] style: 引入 pre-commit 并应用全代码库格式化 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !347 merge worktree-precommit-format into develop [ci] style: 引入 pre-commit 并应用全代码库格式化 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: ## 合入来源 - [ ] 需求 - [x] 问题单 - [ ] issue ## 问题/功能描述 引入 pre-commit CI 格式化检查机制,并对全代码库应用自动格式化修正。 ## 修改方案描述 1. 新增/更新 pre-commit 基础设施: .clang-format、.pre-commit-config.yaml、script/ci-pre-commit-pr.sh CI 脚本 2. 对全代码库执行 pre-commit 自动格式化:clang-format、文件末尾补换行、去除尾随空格等 ## 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由:纯格式化调整,不涉及功能逻辑改动) ## 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!347 | 1 个月前 | |
key 预取,踢除 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> Co-authored-by: Zixi Qu<quzixi@huawei.com> # message auto-generated for no-merge-commit merge: !405 merge feature/key-evict-prefetch into develop [feature] key 预取,踢除 Created-by: huawei_zixiqu Commit-by: ZixiQu;Zixi Qu;gcw_qYJeyWK4 Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 详情移步issue 185 # 修改方案描述 meta manager 独立EvictKeys()接口,并提供http API。 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 ### 开发自验: 解释: 1. 调用http /query_key 确定key_20在DRAM上 2. 调用http /memory/evict (带上"locations": ["LocalCPUBackend"]) 3. 调用http /query_key确定下放到SSD上 4. 调用http /memory/prefetch 5. 调用http /query_key确定拉回到DRAM上 (SSD的copy留存,符合设计预期,未达水线不做清理)  See merge request: Ascend/memcache!405 | 20 天前 | |
update submodules to gitcode mirrors Co-authored-by: ZixiQu<quzixi@huawei.com> # message auto-generated for no-merge-commit merge: !485 merge mirror into develop update submodules to gitcode mirrors Created-by: huawei_zixiqu Commit-by: ZixiQu Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [X] issue # 问题/功能描述 github镜像拉取太慢 # 修改方案描述 改成gitcode 官方镜像 # 是否涉及UT/ST - [ ] 是 - [X] 否(说明理由):改镜像无需UT看护 # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!485 | 23 天前 | |
[usage] 流水线测试脚本新增gva直接读写相关接口 Co-authored-by: Oranbean258<tanghongcheng1@h-partners.com> # message auto-generated for no-merge-commit merge: !391 merge 0715fix into develop [usage] 流水线测试脚本新增gva直接读写相关接口 Created-by: thc72549 Commit-by: t30062639;Oranbean258 Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 测试脚本中增加gva直接读写相关接口 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由)不涉及源代码修改 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!391 | 1 个月前 | |
[ci] style: 引入 pre-commit 并应用全代码库格式化 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !347 merge worktree-precommit-format into develop [ci] style: 引入 pre-commit 并应用全代码库格式化 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: ## 合入来源 - [ ] 需求 - [x] 问题单 - [ ] issue ## 问题/功能描述 引入 pre-commit CI 格式化检查机制,并对全代码库应用自动格式化修正。 ## 修改方案描述 1. 新增/更新 pre-commit 基础设施: .clang-format、.pre-commit-config.yaml、script/ci-pre-commit-pr.sh CI 脚本 2. 对全代码库执行 pre-commit 自动格式化:clang-format、文件末尾补换行、去除尾随空格等 ## 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由:纯格式化调整,不涉及功能逻辑改动) ## 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!347 | 1 个月前 | |
fix:去掉水线淘汰写ssd逻辑 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !481 merge codex/remove-dram-watermark into develop fix:去掉水线淘汰写ssd逻辑 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4;Super User Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!481 | 16 天前 | |
[ci] style: 引入 pre-commit 并应用全代码库格式化 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !347 merge worktree-precommit-format into develop [ci] style: 引入 pre-commit 并应用全代码库格式化 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: ## 合入来源 - [ ] 需求 - [x] 问题单 - [ ] issue ## 问题/功能描述 引入 pre-commit CI 格式化检查机制,并对全代码库应用自动格式化修正。 ## 修改方案描述 1. 新增/更新 pre-commit 基础设施: .clang-format、.pre-commit-config.yaml、script/ci-pre-commit-pr.sh CI 脚本 2. 对全代码库执行 pre-commit 自动格式化:clang-format、文件末尾补换行、去除尾随空格等 ## 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由:纯格式化调整,不涉及功能逻辑改动) ## 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!347 | 1 个月前 | |
[反合][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 | 1 个月前 | |
feat:可靠性2.0 Co-authored-by: liuao<royliu.chengdu@gmail.com> # message auto-generated for no-merge-commit merge: !409 merge store_refactor_pr into develop feat:可靠性2.0 Created-by: gcw_M5Xrk6cX Commit-by: royliu;liuao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!409 | 27 天前 |
![]()
🔄Latest News
-
[2026/06] MemCache使能推理PrefixCache加速案例实践,请关注wiki主页案例库获取最新案例
-
[2025/12] MemCache已作为vllm-ascend backend使能大模型推理加速,详情查看vllm-ascend开源社区,使用示例
-
[2025/11] MemCache项目于2025年11月开源,开源社区地址为:https://gitcode.com/Ascend/memcache
🔜 Roadmap&发布策略
MemCache roadmap详见: Roadmap MemCache 分支发布策略:分支发布策略
🎉概述
MemCache是针对LLM推理、GR推理场景设计的高性能分布式KVCache存储引擎,其主要特性包括:
- 基于对象操作的API:支持批量和非批量的put/get/exist/remove操作,支持多层结构的KV Block读写接口。
- 多层缓存池:支持HBM,DDR,SSD组成多级缓存池,多级之间通过淘汰和预取进行数据冷热交换。
- 高带宽低时延:使用 MemFabric 作为多级内存和异构网络传输的底座,在Ascend硬件上,基于device_rdma(A2)、device_sdma(A3)、host_rdma(A2/A3)、device_urma(A5)、device_uboe(A5) 等路径提供OneCopy跨机跨介质数据直接访问能力,满足高带宽,低时延的读写性能述求。在鲲鹏硬件上,支持host_urma(K5)。支持host_shm实现同节点共享内存通信。
- 支持扩缩容:支持LocalService动态加入和移除
- HA能力:在K8S集群中,MetaService支持多活能力,支持元数据恢复,提供尽力而为的HA能力。
🧩核心组件
MemCache包含LocalService和MetaService两大核心组件:
-
MetaService:
- 负责管理整个集群中内存池空间的分配和管理,处理LocalService的加入与退出。
- MetaService作为独立进程运行,提供两种启动方式:python API启动;二进制启动,详见 whl安装使用 和 run安装使用
- MetaService支持两种部署形态: 1、单点模式:MetaService由单个进程组成,部署方式简单,但存在单点故障的问题。如果MetaService进程崩溃或无法访问,系统将无法继续提供服务,直至重新恢复为止。 2、HA模式:该模式基于K8S的的ClusterIP Service和Lease资源构建,部署较为复杂,该模式会部署多个MetaService进程实例,实现多活高可用。部署详见怎么部署一个MemCache的HA集群
-
LocalService:负责承担如下功能:
- 客户端:作为客户端,以whl/so形式作为共享库被应用进程加载调用API
- 内存提供者:负责提供一段连续的内存区域作为内存池空间的一部分,其内存可以被其他LocalService实例基于地址直接访问。
🔥性能表现
MemCache核心能力是提供大容量内存池和高性能的H2D、D2H、D2RH、RH2D数据访问能力,由于MemCache以 MemFabric 作为池化底座,所以支持RH2D、D2RH等OneCopy跨机跨介质数据直接访问能力,下图为RH2D对比其他中转路径的对比示意图。
基于OneCopy跨机跨介质数据直接访问的能力,MemCache在A2/A3做了相关性能测试如下: 模拟构造DeepSeek-R1模型KV大小的block,单个block size为:61x128K + 61x16K = 8784KB ≈ 8.57MB,共122个离散地址。
- 使用2个昇腾A2节点(每节点8张卡)组成双机内存池进行读写测试性能如下:
- 使用2个昇腾A3节点(每节点8张卡16Die)组成双机内存池进行读写测试性能如下:
🚀快速入门
请访问以下文档获取简易教程。
- 安装使用:whl安装和使用(适用于Python用户),run编译、安装和使用(适用于C++用户)
- 配置文件:涉及MetaService、LocalService公共配置
- 样例执行:介绍如何端到端执行样例代码,包括C++和Python样例
- DevContainer 远端开发:VS Code Remote-SSH + DevContainer 一站式开发环境搭建与全量示例运行指南
📑学习教程
📦软件硬件配套说明
- MemCache软件依赖 MemFabric,相关配套与MemFabric相同
📌FAQ
常见问题请参考:FAQ