vllm-project/vllm-ascend
[Contribution] 任务 #9:[Correctness] `_invalid_block_ids` 锁保护范围审计
オープン
#14,150 opened on 2026/08/13
help wanted
Repository metrics
- Stars
- (2,637 個のスター)
- PR merge metrics
- (平均マージ 4d 5h) (30d で 559 merged PRs)
説明
背景
_invalid_block_ids 有锁保护,但读取它的路径(如 get_block_ids_with_load_errors)是否都在锁内未核实。若存在锁外读取,可能与 recv 线程的并发写入产生竞态,导致返回不一致的 invalid 集合(漏报或重复)。
相关代码:_init_kv_transfer_config 内 _invalid_block_ids 与 _invalid_block_ids_lock 定义、_start_kv_transfer_threads 将其传给 recv 线程。
相关代码路径:vllm_ascend/distributed/kv_transfer/kv_pool/ascend_store。
任务
确保 _invalid_block_ids 所有访问点都在锁保护内(或通过不可变快照返回),消除竞态。
- 范围:所有
_invalid_block_ids读写访问点 - 目标:并发场景下
get_block_ids_with_load_errors返回一致结果
验收标准
1. 功能正确性
- 所有
_invalid_block_ids读写均在锁保护内(或通过不可变快照返回) - 并发场景下
get_block_ids_with_load_errors返回一致结果
2. 回归保护
- 现有单测全绿
- 新增并发读写单测(多线程同时 load 失败 + 查询)
3. 交付件
- PR + 审计清单(每个访问点的锁状态) + 单测
环境约定
- vllm-ascend:最新 main
- 硬件:Ascend NPU(注明型号 + 卡数 + TP/CP/PP 配置)
- 关联任务池:#9079
- 验收人:@赵鹏博
重点关注
get_block_ids_with_load_errors是否被计算流热路径调用(若是,锁竞争需评估)
任务周期
- 发布:2026-08-12
- 回收:2026-10-31