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驱动。