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 个月前 | |
【feature】支持 Dev Container 开发环境 Co-authored-by: littleyellowbicycle<1021593619@qq.com> # message auto-generated for no-merge-commit merge: !349 merge pr-devcontainer-infra into develop 【feature】支持 Dev Container 开发环境 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 支持 Dev Container 开发环境。基于昇腾 vLLM-Ascend 官方镜像构建开箱即用的容器化开发环境,解决"本地环境不一致、CANN/PyTorch/vLLM 工具链手工安装繁琐、新成员上手成本高"的问题,实现 git clone → Open in Container 即可获得与 CI 一致的完整构建链。 # 修改方案描述 支持 Dev Container 开发环境。基于昇腾 vLLM-Ascend 官方镜像构建开箱即用的容器化开发环境,解决"本地环境不一致、CANN/PyTorch/vLLM 工具链手工安装繁琐、新成员上手成本高"的问题,实现 git clone → Open in Container 即可获得与 CI 一致的完整构建链。  # 是否涉及UT/ST - [ ] 是 - [√ ] 否(不涉及源码修改,不需要 ut/st) # 开发自检 - [√ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [√ ] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改      See merge request: Ascend/memcache!349 | 1 个月前 | |
| 2 个月前 | ||
local service support polling config file for dynamic IP Co-authored-by: hansanyue<hansanyue@h-partners.com> # message auto-generated for no-merge-commit merge: !392 merge develop_dynamic-ip into develop local service support polling config file for dynamic IP Created-by: han-sanyue Commit-by: hansanyue Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 LocalService中增加定时任务监控local侧配置文件,实现动态感知metaservice url和config store url更新的功能。metaservice pod重启后IP会发生变化,localservice如果可以动态感知IP变化,重连时使用新IP,即可实现不重新拉推理服务的情况下恢复memcache功能(配合高可用模式1使用)。 # 修改方案描述 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!392 | 1 个月前 | |
[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 个月前 | |
【feature】: add log_output_target config for MetaService log routing Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !385 merge feature/meta-service-log-output-target into develop 【feature】: add log_output_target config for MetaService log routing Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 目前meta_service 默认日志输入到文件中,现在增加配置可以控制输入到文件或者stdout # 修改方案描述 mermaid flowchart TD subgraph ConfigFile["配置文件 config/mmc-meta.conf"] Conf["ock.mmc.log_output_target = screen / file / both<br/><i>字符串枚举, VStrEnum 校验</i>"] end subgraph ConfigLayer["配置层 mmc_configuration.h"] LoadDefault["MetaServiceConfig::LoadDefault<br/>AddStrConf(OCK_MMC_LOG_OUTPUT_TARGET,<br/>VStrEnum: screen||file||both, 默认 file)"] Convert["GetMetaServiceConfig<br/>StringToUpper → if/else<br/>SCREEN→0, FILE→1, BOTH→2"] Const["常量<br/>LOG_OUTPUT_TARGET_SCREEN=0<br/>LOG_OUTPUT_TARGET_FILE=1<br/>LOG_OUTPUT_TARGET_BOTH=2"] Const -.-> Convert end subgraph Struct["C 结构体 mmc_def.h"] Field["mmc_meta_service_config_t.logOutputTarget<br/><b>int32_t</b> 0=screen, 1=file, 2=both"] end subgraph Process["MetaService 启动 mmc_meta_service_process.cpp"] InitLogger["MmcMetaServiceProcess::InitLogger<br/>传 options.logOutputTarget (int32_t)"] end subgraph CAPI["C API spdlogger4c.h/.cpp"] SPDLOGInit["SPDLOG_Init(path, level, size, count,<br/><b>int32_t outputTarget</b>)"] SPDLOGAudit["SPDLOG_AuditInit(path, size, count,<br/><b>int32_t outputTarget</b>)"] end subgraph Logger["SpdLogger spdlogger.h/.cpp"] Enum["enum class LogOutputTarget<br/>{ SCREEN=0, FILE=1, BOTH=2 }"] Init["SpdLogger::Initialize(path, level, size, count,<br/><b>int32_t outputTarget</b>)"] Sinks["构建 sink 列表"] Stdout["stdout_color_sink_mt<br/><i>needStdout = target==0 || target==2</i>"] File["rotating_file_sink_mt<br/><i>needFile = target==1 || target==2</i>"] Logger_["spdlog::logger<br/>(多 sink 组合)"] end Conf --> LoadDefault LoadDefault --> Convert Convert -->|"int32_t"| Field Field -->|"options.logOutputTarget"| InitLogger InitLogger -->|"int32_t"| SPDLOGInit InitLogger -->|"int32_t"| SPDLOGAudit SPDLOGInit -->|"int32_t"| Init SPDLOGAudit -->|"int32_t"| Init Enum -.-> Init Init --> Sinks Sinks -->|"outputTarget==0 (screen)"| Stdout Sinks -->|"outputTarget==1 (file)"| File Sinks -->|"outputTarget==2 (both)"| Stdout Sinks -.->|"outputTarget==2 (both)"| File Stdout --> Logger_ File --> Logger_ style Conf fill:#e8f5e9,stroke:#2e7d32 style Field fill:#fff3e0,stroke:#e65100 style Stdout fill:#e3f2fd,stroke:#1565c0 style File fill:#fce4ec,stroke:#c62828 style Logger_ fill:#f3e5f5,stroke:#6a1b9a    # 是否涉及UT/ST - [ √] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √ ] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!385 | 1 个月前 | |
【core】batch_malloc支持指定租约超时时间 Co-authored-by: mrh1024<marunhua1@h-partners.com> # message auto-generated for no-merge-commit merge: !400 merge develop_layerwise into develop 【core】batch_malloc支持指定租约超时时间 Created-by: mrh1024 Commit-by: mrh1024 Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 参考 batch_add_lease 的 leaseTtlMs 模式,给 batch_alloc(Python) / BatchMalloc(C++) / mmcc_batch_malloc(C API) 全链路增加 leaseTtlMs 参数,允许上层按场景自定义分配 blob 的租约超时时间。leaseTtlMs 默认 0,为 0 时 meta 仍用配置项 ock.mmc.meta.lease_ttl_ms(向后兼容,旧调用行为不变)。 1. 消息层:BatchAllocRequest 增加 leaseTtlMs src/memcache/csrc/proto/mmc_msg_client_meta.h:230 BatchAllocRequest 新增字段 uint64_t leaseTtlMs_{0};构造函数第 5 参 leaseTtlMs(默认 0);Serialize/Deserialize 末尾各加 leaseTtlMs_,两端顺序一致、packer 对称。 向后兼容:旧 client 发较短数据,新 meta Deserialize 读到 EOF 时 leaseTtlMs_ 保持 0。 2. meta 端:Alloc 使用 per-request 租约 src/memcache/csrc/meta_service/mmc_meta_manager.h:189 / mmc_meta_manager.cpp:706 MmcMetaManager::Alloc 增加 uint64_t leaseTtlMs 参数。 mmc_meta_manager.cpp:724 const uint64_t actualLeaseTtlMs = leaseTtlMs == 0 ? defaultTtlMs_ : leaseTtlMs; 并 blob->SetDefaultLeaseTtlMs(actualLeaseTtlMs)(与 AddLease:1224 同款回退语义)。 src/memcache/csrc/meta_service/mmc_meta_mgr_proxy.cpp:96 BatchAlloc 调用透传 req.leaseTtlMs_;:60 单 key Alloc 路径传 0(保持默认 TTL)。 src/memcache/csrc/meta_service/mmc_meta_net_server.cpp:207 HandleBatchAlloc DEBUG 日志增加 leaseTtlMs 字段;Alloc 新增 DEBUG 日志打印 leaseTtlMs/defaultTtlMs_/actualLeaseTtlMs。 grant 链路确认:src/memcache/csrc/entities/mmc_blob_state.cpp:29 action 调 leaseMgr.Add(rankId, requestId, leaseMgr.DefaultTtlMs()),DefaultTtlMs() 即被 SetDefaultTtlMs 设的 actualLeaseTtlMs。 3. client / C API / 对外接口 / Python 全链路透传 src/memcache/csrc/client/mmc_client_default.h:82 / mmc_client_default.cpp:1099 BatchMalloc 增加 leaseTtlMs;:1114 构造 BatchAllocRequest(keys, {}, flags, operateId, leaseTtlMs)。 src/memcache/include/mmc_client.h:135 / src/memcache/csrc/mmc_client.cpp:223 mmcc_batch_malloc 增加 uint64_t lease_ttl_ms。 src/memcache/include/cpp/mmcache.h:353 / mmcache_store.h:139 / mmcache_store.cpp:982 BatchMalloc 增加 uint64_t leaseTtlMs = 0。 src/memcache/csrc/python_wrapper/pymmc.cpp:868 batch_alloc 绑定增加 py::arg("leaseTtlMs") = 0。 BatchPut 路径(mmc_client_default.cpp:297)用默认 leaseTtlMs=0,不受影响。 4. 文档同步 doc/memcache_python_api.md / memcache_c++_api.md / memcache_c_api.md:batch_alloc / BatchMalloc / mmcc_batch_malloc 签名与参数说明同步新增 leaseTtlMs / lease_ttl_ms(默认 0,为 0 时使用 meta 侧配置项 ock.mmc.meta.lease_ttl_ms)。 # 修改方案描述  # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!400 | 1 个月前 | |
merge_client_metrics | 1 个月前 | |
新增gitleaks敏感信息检测 Co-authored-by: lanskeep<lichunyang17@h-partners.com> # message auto-generated for no-merge-commit merge: !361 merge gitleaks into develop 新增gitleaks敏感信息检测 Created-by: lanskeep Commit-by: lanskeep Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 新增gitleaks敏感信息检测 # 修改方案描述 引入gitleaks在线扫描工具 新增pre-commit/.gitleaks.toml配置,继承官方全部检测规则 配置pre-commit钩子,提交前自动扫描密钥硬编码风险。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!361 | 1 个月前 | |
feat: UbsioClientInit 支持传入配置文件路径,自动设置 UBSIO_CONFIG_PATH 环境变量 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !403 merge fix/env-var-dependency into develop feat: UbsioClientInit 支持传入配置文件路径,自动设置 UBSIO_CONFIG_PATH 环境变量 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4 Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 UbsioClientInit 支持传入配置文件路径,自动设置 UBSIO_CONFIG_PATH 环境变量 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!403 | 1 个月前 | |
remove duplicates | 1 个月前 | |
[usage]测试脚本增加多线程并发gva读写接口 Co-authored-by: t30062639<tanghongcheng1@h-partners.com> # message auto-generated for no-merge-commit merge: !415 merge 0728fix into develop [usage]测试脚本增加多线程并发gva读写接口 Created-by: thc72549 Commit-by: t30062639 Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 目前的流水线测试脚本缺少实际多线程高并发下的接口调用能力,尤其gva直接读写接口需要测试这个场景 # 修改方案描述 增加相应并发接口 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由)不涉及源码与UT # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!415 | 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 | 2 个月前 | |
[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 | 2 个月前 | |
fix:python接口自动加载ubsio so以及ubsio 配置文件改名 Co-authored-by: gcw_qYJeyWK4<jiangbo97@huawei.com> # message auto-generated for no-merge-commit merge: !375 merge feature/auto-preload-so into develop fix:python接口自动加载ubsio so以及ubsio 配置文件改名 Created-by: gcw_qYJeyWK4 Commit-by: gcw_qYJeyWK4;dajiang Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 CMake 配置源路径更新:在 cmake/config_ubsio.cmake 中,将安装配置文件的源从 ubsio-boostio/configs/bio.conf 改为 ubsio-boostio/configs/ubsio.conf,并同步更新了注释,使配置文件名与模块名保持一致。 动态预加载 .so 文件:在 src/memcache/python/memcache_hybrid/__init__.py 中,移除了硬编码的 lib_list = ["libmf_memcache.so"] 加载逻辑,改为遍历 lib_dir 目录下所有以 .so 结尾的文件并通过 ctypes.CDLL 加载,以兼容 ubsio 编译开关控制下的动态共享库集合。 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!375 | 1 个月前 | |
refactor: 替换 cpp-httplib 为 acclinks httpserver,metrics 解除 IP 限制并支持 mTLS Co-authored-by: yangqi12138<yangqi124@h-partners.com> # message auto-generated for no-merge-commit merge: !360 merge cherry-pick/metrics-mtls into develop refactor: 替换 cpp-httplib 为 acclinks httpserver,metrics 解除 IP 限制并支持 mTLS Created-by: yangqi12138 Commit-by: yangqi12138 Merged-by: liu1103xwxw Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 refactor: 替换 cpp-httplib 为 acclinks httpserver,metrics 解除 IP 限制并支持 mTLS - 移除 cpp-httplib 依赖,改用 acclinks AccHttpServer - metrics 端口解除 127.0.0.1 限制,支持任意 IP/域名 - metrics HTTP 服务独立支持 mTLS(双向认证) - 新增 ock.mmc.metrics.tls.* 配置项 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 验证截图:    HTTPS:  See merge request: Ascend/memcache!360 | 1 个月前 | |
[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 | 2 个月前 | |
fix: honor ENABLE_TRACE_LOG option on develop Co-authored-by: robellliu-dev<robell.liu@huawei.com> # message auto-generated for no-merge-commit merge: !394 merge codex/issue-142-enable-trace-log-develop into develop fix: honor ENABLE_TRACE_LOG option on develop Created-by: gcw_oroHQZs3 Commit-by: robellliu-dev Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [x] 问题单:Fixes #142 # 问题/功能描述 develop 分支根目录的 CMakeLists.txt 定义了 ENABLE_TRACE_LOG,但条件判断错误使用 ENABLE_TRACE_L0G,导致启用 trace log 时不会添加 LOG_TRACE_INFO_ENABLED 编译定义。 # 修改方案描述 仅将条件变量更正为 ENABLE_TRACE_LOG,使声明的构建开关与实际条件保持一致。 # 是否涉及 UT/ST - [x] 否:仅修正 CMake 条件变量拼写;使用 CMake trace 验证开关行为。 # 开发自检 - [x] 规范:仅修改 CMakeLists.txt,已关联 Issue。 - [x] 安全:未新增外部接口、参数或第三方依赖。 - [x] 资料:不涉及资料改动。 ## 验证 - cmake --trace-expand --trace-source=CMakeLists.txt -S . -B build-codex-trace-green -DENABLE_TRACE_LOG=ON -DBUILD_PYTHON=OFF -DBUILD_GIT_COMMIT=OFF:trace 确认执行 add_definitions(-DLOG_TRACE_INFO_ENABLED)。 - pre-commit run --files CMakeLists.txt - git diff --check ## 环境限制 本机 CMake 配置在验证目标宏定义后,因既有 3rdparty/log 的 spdlog 目录创建失败而中断;完整 Linux/Ascend 构建由 CI 覆盖。 See merge request: Ascend/memcache!394 | 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 | 2 个月前 | |
local service support polling config file for dynamic IP Co-authored-by: hansanyue<hansanyue@h-partners.com> # message auto-generated for no-merge-commit merge: !392 merge develop_dynamic-ip into develop local service support polling config file for dynamic IP Created-by: han-sanyue Commit-by: hansanyue Merged-by: yrewzjsx Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 LocalService中增加定时任务监控local侧配置文件,实现动态感知metaservice url和config store url更新的功能。metaservice pod重启后IP会发生变化,localservice如果可以动态感知IP变化,重连时使用新IP,即可实现不重新拉推理服务的情况下恢复memcache功能(配合高可用模式1使用)。 # 修改方案描述 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memcache!392 | 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 | 2 个月前 |
🔄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