为什么使用社区1230的代码适配NVIDIA 5090GPU之后,在带内os发送命令nvidia-smi可以查询功耗温度等信息,但是网页端上面看不到这些信息呢?
具体修改步骤:VPD仓库添加sr文件;general_hardware仓库scr/lualib/hardware_config/添加5090.lua文件;component_drivers仓库添加sr,dds文件,然后按照L40、Tesla T4的的代码配置.cpp和.h文件;
目前问题是网页端只能够看到温度信息,看不到功耗信息;温度信息感觉不是通过smbus postbox协议获取的,web端显示温度和nvidia-smi命令获取温度差别较大;
定位到general_hardware仓库scr/lualib/gpu_service目录下面gpu_object.lua文件里面发送命令查询功耗之后并没有回应
目前在object.lua文件里面添加了相关的打印如下:
在NVIDIA_5090.lua文件的powerwatts下面的response也添加了相关的打印如下:
发现运行日志如下:key-point11没有打印,response下面也没有打印
接下来等待下一步排查
现用busctl命令查询如下:
发现查询status始终没有返回0x1f
这个说明什么呢?
app-log.txt (5.0 MB)
答案内容由AI生成,仅供参考:
GPU适配后网页端无法显示功耗与温度信息的原因分析
当适配 NVIDIA 5090 GPU 后,能够在后台通过命令查询到功耗、温度等信息,但网页端无法显示这些数据,通常表明底层硬件通信正常,但上层数据链路或配置存在异常。以下是基于 openUBMC 架构和现有知识的全面分析与排查建议。
可能原因分析
1. 未正确配置资源协作接口(Object Model)
即使可以通过命令行读取到原始数据,若未在 openUBMC 的**资源树(Resource Tree)**中注册对应属性,Web 页面将无法获取数据。
-
关键属性缺失:
PrimaryGPUTemperatureCelsius:主 GPU 温度
PowerWatts:GPU 当前功耗
- 这些字段属于
bmc.kepler.Systems.Processor.GPU.Power 和 bmc.kepler.Systems.Processor.GPU 接口,需要在 CSR 或配置文件中显式启用并映射。
-
检查点:
- 是否在
Tesla_T4.lua(或其他对应 GPU 配置文件)中正确定义了 PrimaryGPUTemperatureCelsius 和 PowerWatts 的采集路径?
- 是否在 CSR 中将
ProcessorType 设置为 GPU 类型(通常为 "2")?
2. Scanner 监控组件未正确配置或激活
数据从底层硬件到 Web 界面需经过 Scanner 组件定时采集。
3. 带外管理协议未适配(非 NVIDIA 协议)
虽然问题提到是“NVIDIA 5090”,但如果实际使用的是非标准或第三方封装的 GPU,可能不支持标准的 SMBus Post Box Interface (SMBPBI) 协议。
4. Web 前端未订阅或渲染对应字段
即使后端已采集数据,若前端页面未正确绑定资源路径,也不会显示。
5. 权限或状态过滤导致隐藏
某些情况下,系统会因健康状态异常、权限不足或状态为 Absent 而不展示传感器数据。
解决方案建议
| 步骤 |
操作 |
说明 |
| 1 |
核查 Scanner 配置 |
确保 Scanner_GPUTemp 和 Scanner_GPUPower 的 Offset、Size、Chip 正确 |
| 2 |
验证 Chip_TempOrPowerChip 通信 |
使用 busctl 或 mdbctl 手动读取,确认 I²C 地址和总线是否可达 |
| 3 |
检查 GPU 配置文件 |
确认 Tesla_T4.lua 或自定义配置中已启用 PrimaryGPUTemperatureCelsius 和 PowerWatts |
| 4 |
查看资源树属性 |
执行 mdbctl lsprop GPU_1_01010103 bmc.kepler.Systems.Processor.GPU 确认字段存在 |
| 5 |
检查 Redfish 输出 |
访问 /redfish/v1/Systems/1/Processors/GPU_1 查看 JSON 是否含温功数据 |
| 6 |
更新 openUBMC 版本 |
某些旧版本存在闭源组件(如 compute)对 A2/A10/A100 卡支持不全的问题,建议升级至 25.09 或更高基线 |
参考案例
总结
网页端看不到 GPU 温功信息,本质是‘数据未进入资源树’或‘前端未绑定’。
虽然后台命令可读,说明物理层通,但完整链路还需:
Scanner 正确配置 → 数据采集
Resource Tree 注册 → 数据暴露
Redfish/Web 绑定 → 数据展示
建议操作命令汇总
# 查看 Scanner 状态
mdbctl lsprop Scanner_GPUTemp_0101010301
mdbctl lsprop Scanner_GPUPower_0101010301
# 手动测试读取
busctl call bmc.kepler.hwproxy /bmc/kepler/Chip/Complex/Chip_TempOrPowerChip_0101010301 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 0 2
# 查看 GPU 对象属性
mdbctl lsprop GPU_1_01010103 bmc.kepler.Systems.Processor.GPU
# 检查是否存在 GPU 对象
mdbctl lsobj | grep GPU
# 查看 Redfish 接口输出(需通过 curl 或浏览器)
curl http://<BMC_IP>/redfish/v1/Systems/1/Processors/GPU_1
如以上步骤均正常但仍无法显示,请提供日志以进一步诊断。
相关链接:
- 社区1230版本 MetaX C500 这个GPU是怎样获取温度和功耗信息的呢?
- NPU Atlas 300i A2 64G 在AC测试时带外传感器概率获取不到温度
- GPU显卡适配芯片温度和功耗获取失败
- 如何适配一款GPU?
- https://www.openubmc.cn/docs/zh/development/develop_guide/feature_development/GPU_Development_Guide
可参考Tesla T4:
1、CSR配置Model
“GPU_1”: {
“Model”: “Tesla T4”
}
2、general_hardware配置协议
在 \src\lualib\hardware_config下配置协议文件,名称需要与CSR配置的Model一致(注意:空格需要替换为_)
可以先确认rackmount中向web前端传递的数据有无这些信息
这个文件已配置,在gpu_object.lua文件里面添加打印信息发现文件被读取了,但是在function gpu_object:init_smbus_postbox()这边,这个函数并没有被执行,没有返回值;web也没有Power数据显示;
加打印看下为什么没进入init_smbus_postbox函数
这张卡是不是协议跟Tesla T4不一样,打开debug级别打印,看看是不是有对应命令报错
这个debug级别打印重点看什么呢,感觉没看见有关这个协议的报错啊
感觉轮询没任务没拉起来,在每个属性的start方法加个打印