vllm-project/vllm-ascend

[Contribution] 任务 #9:[Correctness] `_invalid_block_ids` 锁保护范围审计

開放

#14,150 建立於 2026年8月13日

 (1 則留言) (0 個反應) (0 位負責人)C++ (2,048 個分叉)github user discovery
help wanted

倉庫指標

星標
 (2,637 顆星)
PR 合併指標
 (平均合併 4天 5小時) (30 天內合併 559 個 PR)

描述

背景

_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

貢獻者指南