vllm-project/vllm-ascend

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

Ouverte

#14 150 ouverte le 13 août 2026

 (1 commentaire) (0 réaction) (0 personne assignée)C++ (2 048 forks)github user discovery
help wanted

Métriques du dépôt

Stars
 (2 637 étoiles)
Métriques de merge PR
 (Merge moyen 4j 5h) (559 PRs mergées en 30 j)

Description

背景

_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

Guide contributeur