NPU Atlas 300i A2 64G 在AC测试时带外传感器概率获取不到温度问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:openUBMC 25.09;
  • 涉及功能:传感器;
  • 触发条件:NPU对象与NPUCard对象的数据来源不一致。
  • 业务表现:预期服务器AC重启后,NPU传感器正常显示温度信息,处理器界面正常显示卡基础信息;实际带外概率获取不到温度传感器,NPU界面无法显示序列号,固件版本等信息。

问题复现步骤

服务器AC重启后,BMC初始化完成后,NPU加载的传感器概率无法获取到温度值,处理器界面无法获取到序列号,固件版本等信息,功耗信息获取正常。

关键日志信息

app.log中重复打印错误日志为:

text
2026-01-14 06:32:37.488104 compute ERROR: app_preloader.lua(212): ./opt/bmc/apps/compute/lualib/compute_app.lua:662: app(compute/service/main) count(1219) pcall failed(kepler.class.SetSyncPropertyError: The property Health of the object NPU_1_01010502 is a synchronous property and cannot be set)

定位过程

  • Atlas 300I A2卡的温度、健康状态等信息来源于 NPU对象(如 NPU_1),而 Atlas 300I Duo/Pro 等其他型号则通常依赖 NPUCard对象.
  • 当驱动未加载时,NPU对象的温度默认值为 0,不会触发异常调速或告警。
  • NPUCard对象 会在读取失败时返回 32768 或 32767(表示传感器异常),从而触发监控系统的容错机制。

因此,在AC上电初期、驱动尚未加载完成前,NPU对象返回0°C是“合法”的软性缺省值,但监控系统误认为这是有效数据,导致显示异常或判断滞后。

问题原因

  • NPU对象与NPUCard对象的数据来源不一致。
  • AC重启后,BMC快速尝试从NPU对象读取温度,但此时OS侧驱动尚未初始化完成,NPU对象无法提供真实温度,返回0,造成“温度丢失”。

解决方案

调整采集策略 —— 优先使用 NPUCard 带外信息

  • 建议修改配置,使温度、序列号、固件版本等关键信息从 带外MCU接口的NPUCard对象 获取,而非依赖需OS驱动支持的NPU对象。
  • 依据NPU卡适配指南 明确定义了(PowerWatts、Core0TemperatureCelsius、Core1TemperatureCelsius、SerialNumber、FirmwareVersion)属性应从带外管理协议获取。
  • 检查CSR文件中 NPUCard_1 是否配置了 RefChip 指向正确的MCU对象(如 Chip_Dmini_xxxx)。
  • 验证 StorageType 是否设为 MCU,确保信息来源非依赖OS驱动。