vllm-project/vllm-ascend

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

オープン

#14,150 opened on 2026/08/13

 (1 件のコメント) (0 件のリアクション) (0 人の担当者)C++ (2,048 件のフォーク)github user discovery
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

コントリビューターガイド