部分GPU卡温度无法获取

  1. 问题描述:920B机型,在前置后置Riser模组一共接入8张Vastai Technologies VG1000 Accelerator卡,其中有四张卡能读到温度,四张卡读不到(返回32768)。
  2. BMC版本信息:社区br_release_openUBMC2603_20260630分支最新代码。尝试更新iBMC 26.01.62.07,也有一样的问题。
  3. 现象:
    1. ~ ~ $ mdbctl lsobj GPU
      GPU_1_0101010301
      GPU_1_0101010302
      GPU_1_0101010901
      GPU_1_0101010902
      GPU_1_0101010D01
      GPU_1_0101010D02
      GPU_1_0101011101
      GPU_1_0101011102

      ~ ~ $ mdbctl lsprop GPU_1_0101010301 | grep -i temp
      PrimaryGPUTemperatureCelsius=34.7
      ~ ~ $ mdbctl lsprop GPU_1_0101010302 | grep -i temp
      PrimaryGPUTemperatureCelsius=35.7
      ~ ~ $ mdbctl lsprop GPU_1_0101010901 | grep -i temp
      PrimaryGPUTemperatureCelsius=33.8
      ~ ~ $ mdbctl lsprop GPU_1_0101010902 | grep -i temp
      PrimaryGPUTemperatureCelsius=33.65
      ~ ~ $ mdbctl lsprop GPU_1_0101010D01 | grep -i temp
      PrimaryGPUTemperatureCelsius=32768
      ~ ~ $ mdbctl lsprop GPU_1_0101010D02 | grep -i temp
      PrimaryGPUTemperatureCelsius=32768
      ~ ~ $ mdbctl lsprop GPU_1_0101011101 | grep -i temp
      PrimaryGPUTemperatureCelsius=32768
      ~ ~ $ mdbctl lsprop GPU_1_0101011101 | grep -i temp
      PrimaryGPUTemperatureCelsius=32768

    2. ~ ~ $ busctl --user --no-pager tree bmc.kepler.devmon | grep -i vastai

      │ │ │ ├─/bmc/dev/topology/Hisport_12_dev/Pca9545_PCA9545_01010109_dev/I2cMux_Pca9545_PCA9545_1_01010109_dev/Complex/Chip_Vastai_0101010901_dev
      │ │ │ ├─/bmc/dev/topology/Hisport_12_dev/Pca9545_PCA9545_01010109_dev/I2cMux_Pca9545_PCA9545_2_01010109_dev/Complex/Chip_Vastai_0101010902_dev
      │ │ │ ├─/bmc/dev/topology/Hisport_18_dev/Pca9545_PCA9545_01010103_dev/I2cMux_Pca9545_PCA9545_1_01010103_dev/Complex/Chip_Vastai_0101010301_dev
      │ │ │ ├─/bmc/dev/topology/Hisport_18_dev/Pca9545_PCA9545_01010103_dev/I2cMux_Pca9545_PCA9545_2_01010103_dev/Complex/Chip_Vastai_0101010302_dev
      │ │ │ └─/bmc/dev/topology/Hisport_3_dev/Pca9545_PCA9545_01010111_dev/I2cMux_Pca9545_PCA9545_1_01010111_dev/Complex/Chip_Vastai_0101011101_dev
      │ │ │ └─/bmc/dev/topology/Hisport_3_dev/Pca9545_PCA9545_01010111_dev/I2cMux_Pca9545_PCA9545_2_01010111_dev/Complex/Chip_Vastai_0101011102_dev
      │ │ │ └─/bmc/dev/topology/Hisport_6_dev/Pca9545_PCA9545_0101010D_dev/I2cMux_Pca9545_PCA9545_1_0101010D_dev/Complex/Chip_Vastai_0101010D01_dev
      │ │ │ └─/bmc/dev/topology/Hisport_6_dev/Pca9545_PCA9545_0101010D_dev/I2cMux_Pca9545_PCA9545_2_0101010D_dev/Complex/Chip_Vastai_0101010D02_dev
      ~ ~ $
      ~ ~ $ busctl --user --no-pager call bmc.kepler.devmon /bmc/dev/topology/Hisport_12_dev/Pca9545_PCA9545_01010109_dev/I2cMux_Pca9545_PCA9545_2_01010109_dev/Complex/Chip_Vastai_0101010902
      dev bmc.dev.Chip BlockIORead uu 5 3
      ay 3 240 2 13
      ~ ~ $ busctl --user --no-pager call bmc.kepler.devmon /bmc/dev/topology/Hisport_6_dev/Pca9545_PCA9545_0101010D_dev/I2cMux_Pca9545_PCA9545_1_0101010D_dev/Complex/Chip_Vastai_0101010D01

      dev bmc.dev.Chip BlockIORead uu 5 3
      ay 3 0 0 0

  4. GPU SR: 社区vpd下vendor/Vastai/GPU/14140130_1ec60200_1ec60063.sr

答案内容由AI生成,仅供参考:

总结与排查建议

核心结论:您遇到的温度读取失败问题,根源在于 目标GPU卡未能返回有效的温度数据给BMC,而不是BMC的硬件拓扑或I2C通信链路故障。读值32768是BMC对“无效数据”的一种标准化标记。

建议排查方向

  1. 检查GPU卡驱动状态:确认操作系统是否正确识别并加载了Vastai Technologies VG1000 Accelerator的官方驱动。尝试重新加载或更新驱动。
  2. 检查GPU卡工作状态:确认读取不到温度的4张卡在操作系统中是否被正常识别,其工作状态是否正常(如是否处于挂起、未初始化或其他非正常工作状态)。可尝试在OS下通过 nvidia-smi 或其他厂商工具查询卡的温度和状态。
  3. 检查I2C通信细节:虽然基础I2C链路正常,但可以进一步分析I2C通信波形或与芯片厂商确认,BMC发起的读温度命令(偏移地址等)是否符合芯片的精确时序要求。社区问题 【gpu适配带外管理求助】 中提及时序问题会导致BMC挂死或不返回数据。

由于上下文信息有限,以上是基于现有知识库给出的分析和建议。更精确的根因可能需要对特定Vastai GPU芯片的带外管理协议进行更深入的分析。

点击此处查看详细分析解答

根据您提供的上下文信息,以下是对您所描述的GPU温度获取失败问题的分析和解答。

问题根因分析

从您提供的现象和日志来看,部分Vastai GPU卡(GPU_1_0101010D01GPU_1_0101010D02GPU_1_0101011101GPU_1_0101011102)的温度读值为 32768,这是一个关键信号。

根据知识库中的信息,数值 32767 及其相近值通常用于表示传感器数据异常或无效:

  • 在传感器数据系统中,32767 用于表示 无效或未定义的温度读数。它表明BMC成功从传感器获取到数据,但硬件(如NPU卡)未能提供有效的温度测量值。
  • 具体到NPU卡场景,32767 指示 BMC收到了温度读数,但NPU卡未能检索到实际温度
  • TemperatureCelsius 属性的定义中, 32767 也被列为 S16 类型数据的无效或默认值。

因此,读值 32768 和 32767 本质上都属于 无效温度值 的范畴。这通常指向 BMC与目标GPU芯片之间的I2C通信本身是正常的,但GPU芯片未能返回有效的温度数据

关键证据与定位

通过对比正常与异常的GPU卡在BMC层面的I2C读取结果,可以进一步确认问题:

状态 读取命令及结果 解读
正常卡 (例如 Chip_Vastai_0101010902) busctl ... BlockIORead uu 5 3
ay 3 240 2 13
返回了有效的、非零的3个字节数据 240 2 13,表明GPU芯片能够响应并返回温度数据。
异常卡 (例如 Chip_Vastai_0101010D01) busctl ... BlockIORead uu 5 3
ay 3 0 0 0
返回了全零的3个字节数据 0 0 0,表明GPU芯片没有返回有效的温度值。

这个对比清晰地表明,问题不在于BMC侧的配置或I2C链路,而在于 GPU芯片本身没有返回正确数据

原因推测

结合社区相关问题和硬件管理的一般经验,可能导致GPU芯片无法返回温度数据的原因包括:

  1. GPU驱动未正常加载或异常:这是社区问题中常见的因素。如文档 【待评审】支持redfish接口回显PCIe卡NPU Atlas 300i A2 相关问题中所述,当OS侧驱动未正确安装或初始化时,BMC无法从GPU卡获取有效信息。知识库中也提到 “GPU无法报告有效温度数据…在未安装GPU驱动时尤为常见”
  2. GPU卡本身处于特殊状态:例如在系统初始化阶段,或者GPU处于低功耗、未完全激活的状态时,其温度传感器可能尚未准备好提供数据。
  3. 特定硬件时序或初始化问题:某些GPU芯片对I2C读取的时序有严格要求。如果I2C通信流程不满足芯片的特定时序要求,芯片可能返回错误数据或保持静默。

总结与排查建议

核心结论:您遇到的温度读取失败问题,根源在于 目标GPU卡未能返回有效的温度数据给BMC,而不是BMC的硬件拓扑或I2C通信链路故障。读值32768是BMC对“无效数据”的一种标准化标记。

建议排查方向

  1. 检查GPU卡驱动状态:确认操作系统是否正确识别并加载了Vastai Technologies VG1000 Accelerator的官方驱动。尝试重新加载或更新驱动。
  2. 检查GPU卡工作状态:确认读取不到温度的4张卡在操作系统中是否被正常识别,其工作状态是否正常(如是否处于挂起、未初始化或其他非正常工作状态)。可尝试在OS下通过 nvidia-smi 或其他厂商工具查询卡的温度和状态。
  3. 检查I2C通信细节:虽然基础I2C链路正常,但可以进一步分析I2C通信波形或与芯片厂商确认,BMC发起的读温度命令(偏移地址等)是否符合芯片的精确时序要求。社区问题 【gpu适配带外管理求助】 中提及时序问题会导致BMC挂死或不返回数据。

由于上下文信息有限,以上是基于现有知识库给出的分析和建议。更精确的根因可能需要对特定Vastai GPU芯片的带外管理协议进行更深入的分析。

补充:读不到温度的卡,可以读取功耗数据

可以尝试一下手动发送相关命令查询问题,明确是温度查询不到的具体原因

谢谢。后面发现升级Riser MCU版本可以解决这个问题。

麻烦点一下已解决