| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[feature] memcache KvEvent 适配:缓存感知调度全链路 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !779 merge feature/kv-event-memcache into master [feature] memcache KvEvent 适配:缓存感知调度全链路 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: ## **1. 合入背景** Agentic AI 多轮对话场景下,请求间共享大量相同前缀,随机调度导致 KV Cache 无法命中、每轮重复 Prefill。本 PR 使能 MemCache 池化 + kv-conductor 缓存感知调度:kv-conductor 订阅 memcache MetaService 的 KvEvent 广播(memcache PR #334/#363),结合引擎 offload 事件做两阶段匹配,请求路由到已缓存前缀的节点,最大化 KV 复用、降低 TTFT。 关联 ISSUE:#508 ## **2. 修改内容** 1. **memcache kv_events 部署配置**: memcache_meta_service.py 新增 kv_events 配置块(enable/endpoint/model_name/block_size,默认关闭、解除注释即开启);mmc-local-*.conf 新增 ock.mmc.local_service.backend_id 默认配置,common.sh 部署时替换为 Pod IP;K8s Service 模板(kv_cache_store / infer_service)暴露 kv-events: 5557 端口。 2. **kv-conductor 支持 memcache KvEvent**:新增 MemcacheEventBatch 解析({"events": [...]} wire 格式),按 msgpack 首字节(fixmap)快速分流,跳过无谓的 vLLM/Mooncake 试解析;IpOnly 匹配(backend_id=Pod IP → hbm_ip_index → 节点所有 DP);两阶段匹配(pool stored 先到进 pending_pool 排队、engine offload 后到补匹配,双向 + TTL 清理)。 3. **FlexHash 支持 vLLM 默认 32 字节 sha256 块哈希**:取低 64 位(trailing 8 bytes),与 vLLM int 模式(& (1<<64)-1)、memcache BlockHashHexToU64 对齐——修复引擎 offload 事件(sha256 bytes)与池确认(u64)无法匹配的问题。 4. **Coordinator**:pool_endpoint 支持 tcp://*:5557 通配符(部署时解析为 KVS_MASTER_SERVICE);store_backend 大小写不敏感(与 kv-conductor Rust 侧一致)。 5. **vLLM MultiConnector 补丁**:vLLM 上游 MultiConnector.get_kv_connector_kv_cache_events 未实现(TODO),MultiConnector 顶层配置下引擎 offload 事件被静默丢弃。提供 v0.20.2/0.21.0/0.22.1/0.23.0/0.25.0/0.26.0 各版本补丁(examples/deployer/patch/),已建议上游合入。 6. **日志可维测性**:事件日志统一 kv_event <state> 状态机(received/parsed/queued/offload_cached/matched/confirmed/applied/dropped/pending_expired),matched/confirmed 提为 INFO;medium 统一小写(xpu/cpu/disk,StorageMedium::log_str);query 日志输出 per-medium 命中块数(npu_blocks/cpu_blocks/disk_blocks)、修正耗时字段语义。 ## **3. 资料变更** 涉及:docs/zh/user_guide/features/kv_cache_store/backend/memcache.md 新增 KV events 广播小节(开启步骤、backend_id 自动注入、MultiConnector 补丁依赖说明)。 ## **4. 接口变更** 不涉及跨代码仓接口变更(memcache 广播格式为 memcache 侧已定协议;kv-conductor HTTP 接口无变更)。 ## **5. 测试结果** - kv_conductor cargo test:123 + 20 全部通过(含 memcache batch 解析/IpOnly 路由/两阶段匹配/FlexHash sha256 用例) - coordinator / deployer 单测全部通过 - 实机验证(vLLM v0.23.0 + memcache + K8s 双节点):memcache stored 事件解析并排队(backend_id=Pod IP 正确路由到节点 DP)、引擎 offload 事件解析成功、两阶段匹配入树(kv_event matched)、/query 命中缓存块 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!779 | 10 天前 | |
[bugfix] 修复 mooncake KV store metrics 获取失败:metrics 端口统一为 50090 Co-authored-by: WZN-JJB<wuzhineng@huawei.com> Co-authored-by: qq_46749096<qq_46749096@noreply.gitcode.com> # message auto-generated for no-merge-commit merge: !874 merge mooncake_standalone into master [bugfix] 修复 mooncake KV store metrics 获取失败:metrics 端口统一为 50090 Created-by: qq_46749096 Commit-by: WZN-JJB;qq_46749096 Merged-by: towncharlie Description: ## **1. 合入背景** mooncake KV store 的 Prometheus metrics 抓取链路失效:coordinator 自动默认对 mooncake 取业务端口 50088(该端口无 /metrics),store 侧未显式传 --metrics_port(落在上游默认 9003),deployer 全局默认 50088 —— 三处端口约定不一致,导致 kv_store_* 指标获取失败。 关联 ISSUE:#510 ## **2. 修改内容** 1. motor/coordinator/metrics/metrics_collector.py:mooncake 后端自动抓取端口默认 50088 → 50090(与 memcache 统一); 2. examples/deployer/startup/roles/kv_store_backends/mooncake/mooncake.sh:mooncake_master 增加 --metrics_port "${MOONCAKE_METRICS_PORT:-50090}"; 3. examples/deployer/startup/roles/all_combine_in_single_container.sh:单容器模式同样增加 --metrics_port; 4. examples/deployer/lib/generator/kv_cache_store.py:g_mmc_metrics_port 死代码默认统一为 DEFAULT_MMC_METRICS_PORT(50090); 5. tests/coordinator/core/test_metrics.py:新增回归测试 test_fetch_mooncake_metrics_auto_port_default_50090; 6. .agents/skills/motor-dev/references/metrics.md:同步 KV store metrics 抓取端口约定。 ## **3. 资料变更** 不涉及(仅同步 motor-dev skill 参考文档)。 ## **4. 接口变更** 不涉及。metrics 端口默认值调整属内部约定,kv_cache_store_config.metrics_port / KV_STORE_METRICS_PORT 显式配置路径不变且优先级高于默认值。 ## **5. 测试结果**  ## **6. CheckList** - [x] 代码注释完备 - [x] 正确记录维测日志 - [x] 是否有UT用例 - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!874 | 13 小时前 |