一、软硬件信息
- 服务器厂家:新华三(H3C)R5500 G6
- 沐曦GPU型号:METAX C500 64G × 8卡(单机)
- 操作系统内核版本:Linux metax-host-042 5.15.0-119-generic #129-Ubuntu SMP x86_64
- 是否开启CPU虚拟化:否
- mx-smi回显:(贴
mx-smi输出) - docker info回显:(贴
docker info输出) - 镜像版本:
mx-devops-acr-cn-shanghai.cr.volces.com/pub-registry1/ai-opentest/release/maca/vllm-metax:0.21.0-maca.ai3.7.1.2-dsv4-torch2.8-py310-ubuntu22.04-amd64 - 启动容器命令:(贴你们的 docker run 命令)
- vLLM 启动命令:
vllm serve <model> \
--tensor-parallel-size 2 \
-dp 4 \
--enable-prefix-caching \
--max-model-len 33536 \
--kv-transfer-config '{"kv_connector":"LMCacheMetaXConnectorV1","kv_role":"kv_both"}'
二、问题现象
在 DP=4 TP=2(8 worker)配置下启动 vLLM + LMCache,服务卡死无法完成初始化,日志中出现大量 mxkwCreateQueueBlock timeout:
[MXKW][E]queues.c:844 : [mxkwCreateQueueBlock][Hint]ioctl create queue block timeout, gpu_id:X type:21. Retrying.
共出现 21 次,进程在 graph capture 阶段卡死。不加 LMCache、相同拓扑下正常启动(177s)。
三、已做实验汇总
| 实验 | 改动 | 结果 |
|---|---|---|
| baseline DP4 TP2 | 无 LMCache | ✅ 正常启动 177s |
| LMCache DP4 TP2 | 原始配置 | ❌ mxkwCreateQueueBlock × 21 |
| + --enforce-eager | 关闭 graph capture | ❌ mxkwCreateQueueBlock × 21 |
| + 关 pinned pool | max_local_cpu_size=0 | ❌ mxkwCreateQueueBlock × 21 |
| + 关 GPU stream | stream 改 no-op | ❌ mxkwCreateQueueBlock × 21 |
| MACA_MPS_MODE=1 | 开启 MPS 共享队列 | ❌ MCCL 通信失败,连接中止 |
| TP=8 DP=1 + LMCache | 改拓扑 | ✅ 正常启动,功能验证通过 |
四、根因分析
MetaX driver 的 GPU hardware queue pool 有固定上限。DP=4 下每个 GPU 需要为 4 个独立 DP 通信组各自初始化,底座 queue 消耗是 DP=1 的 4 倍。LMCache 初始化在此基础上额外消耗 queue,导致总量超限,后续申请全部阻塞超时。
TP=8 DP=1 无问题,是因为只有 1 个 DP 通信组,给 LMCache 留了足够余量。
五、咨询问题
- MetaX driver queue pool 的上限是多少?有没有环境变量或驱动参数可以调大?(类似 CUDA 的
CUDA_DEVICE_MAX_CONNECTIONS) MACA_MPS_MODE=1在 DP=4 多进程场景下导致 MCCL 通信建立失败:socketStartConnect: Connect to 10.1.36.2:XXXXX failed: Software caused connection abort,约 300s 后退出。请问 MPS 模式在 DP 多进程场景下是否支持?有无正确配置方式?