Readfish获取NPU信息不完整

设备中插入了300I Pro 和 300I Duo两种NPU卡。

Atlas 300I Pro Inference Card PCI-E 1*16x (HHHL) PCIeRiser1 Huawei 4 03028DFH -- 0x19e5 0xd500 0x0200 0x0100 CPU1 0000:5f:00.0 0000:60:00.0
Atlas 300I Duo Inference Card PCI-E 1*16x(FHFL) PCIeRiser1 Huawei 5 03029WRV -- 0x19e5 0xd500 0x0200 0x0110 CPU1 0000:40:02.0 0000:42:00.0

通过Readfish https://X.X.X.X/redfish/v1/Systems/1/Processors获取NPU信息时获取不到300I Pro的信息 :

“Members@odata.count”: 4,

"Members": \[

    {

        "@odata.id": "/redfish/v1/Systems/1/Processors/1"

    },

    {

        "@odata.id": "/redfish/v1/Systems/1/Processors/2"

    },

    {

        "@odata.id": "/redfish/v1/Systems/1/Processors/Npu5-1"

    },

    {

        "@odata.id": "/redfish/v1/Systems/1/Processors/Npu5-2"

    },

通过Readfish https://X.X.X.X/redfish/v1/Systems/1/Processors/Npu5-1获取NPU信息时获取不到Model信息:

“Name”: “Npu5-1”,

"Id": "Npu5-1",

"ProcessorType": "NPU",

"ProcessorArchitecture": "",

"InstructionSet": "",

"Manufacturer": "Huawei",

"Model": "",

"ProcessorId": {

    "EffectiveFamily": **null**,

    "EffectiveModel": **null**,

    "Step": **null**,

    "VendorId": **null**

},

"MaxSpeedMHz": **null**,

"TotalCores": **null**,

"TotalThreads": **null**,

"TotalEnabledCores": **null**,

"Socket": **null**,

"Links": {

    "Chassis": {

        "@odata.id": "/redfish/v1/Chassis/1"

    }

},

"SerialNumber": **null**,

"PowerState": "On",

"Status": {

    "State": "Enabled",

    "Oem": {

        "openUBMC": {

            "Severity": "Informational"

        }

    },

    "Health": "OK"

},

"FirmwareVersion": "7.5.0.9.220",

答案内容由AI生成,仅供参考:
:white_check_mark: 总结与建议

问题 原因 解决建议
1. 300I Pro 卡未出现在 Redfish /Processors 中 BMC 未通过 BoardIDDeviceID 等识别该卡,或其类型未被归类为 Processor.NPU :white_check_mark: 检查 SR 配置中是否为 300I Pro 卡添加了正确的 PCIeDevicebmc.kepler.Systems.Processor.NPU 对象
:white_check_mark: 确认 300I ProDeviceID 是否与 300I Duo 冲突(如搜索结果 #2 所述)
:white_check_mark: 参考 300V Pro 的适配方式,新建对象并绑定 BoardID 进行区分
2. 300I Duo 卡 Model 等信息为空 Redfish 到 BMC 内部属性的映射缺失,或 SR 配置未正确同步 :white_check_mark: 检查 sr 文件中 Processor.NPU.Model 是否配置为 "Atlas_300I_Duo"
:white_check_mark: 验证 Redfish 服务是否正确挂载了 bmc.kepler.Systems.Processor.NPU.Model 属性
:white_check_mark: 参考 300I A2bmc.kepler.Object.Properties 配置,确保 ObjectIdentifierModelSN 等字段准确传递
点击此处查看详细分析解答

Redfish 获取 NPU 信息不完整问题分析

根据您提供的信息,系统中同时插入了 Atlas 300I ProAtlas 300I Duo 两种 NPU 卡,但通过 Redfish 接口查询时存在两个主要问题:

  1. 无法获取 Atlas 300I Pro 卡的信息
  2. 获取的 Atlas 300I Duo 卡信息中缺少 Model 等关键字段

以下将基于您提供的知识库和搜索结果,对这两个问题进行详细分析。


问题一:Redfish 未识别 Atlas 300I Pro NPU 卡

:pushpin: 现象

查询 /redfish/v1/Systems/1/Processors 接口时,返回的 Members 列表中只包含了两个 CPU 和两个 Npu5-* 对象,没有 Atlas 300I Pro 卡的条目。

:magnifying_glass_tilted_left: 原因分析

此问题的根本原因在于 硬件识别逻辑的差异

  • Atlas 300I DuoAtlas 300I A2 等型号,它们的设备类型通常是 NPU(Neural Processing Unit),并被 BMC 的 Compute Servicebmc.kepler.Systems.Processor.NPU 对象直接识别和管理。
  • Atlas 300I Pro 卡虽然也属于 AI 加速卡,但其在硬件层面或固件标识上可能被归类为其他类型(如 GPU 或通用加速器),或者其 BoardIDDeviceID 等四元组信息在当前的 SR 配置中未被正确识别。

相关知识库中有明确证据支持这一点:

:link: 搜索结果 #2
“在今年使用 openubmc 适配 atlas300ipro、300vpro、300v 的时候,由于这三张卡的四元组信息是一致的,bmc 无法正常区分这三张卡…”

这表明,在 BMC 系统中,不同型号的 NPU 卡可能依赖 VendorIDDeviceIDSubsystem Vendor IDSubsystem Device ID 这“四元组”来唯一识别。如果 300I Pro 卡的识别信息与系统预设不符,BMC 的 Redfish 服务就不会为其创建 /Processor/NpuX-X 的资源对象。

此外,Redfish 的 /Processors 资源通常映射自 BMC 的内部数据模型(如 bmc.kepler.Systems.Processor)。如果 300I Pro 卡没有被成功注册到这一模型中,它就不会出现在 Redfish 接口中。


问题二:Atlas 300I Duo 卡信息中 Model 为空

:pushpin: 现象

通过 https://X.X.X.X/redfish/v1/Systems/1/Processors/Npu5-1 查询具体 NPU 信息时,Model 字段为空字符串 "",且 SerialNumberTotalCores 等字段为 null

:magnifying_glass_tilted_left: 原因分析

此问题属于 信息映射缺失或属性未正确填充

  • Model 为空:在知识库的 KG 数据中,Atlas 300I DuoModel 属性被定义为 "Atlas_300I_Duo",但它在 Redfish 输出中为空。这表明 BMC 系统虽然识别了设备是 NPU(通过 Manufacturer: Huawei),但 未能将内部模型信息正确映射到 Redfish 的 Model 字段

    类似问题在社区中已有报告:

    :link: 搜索结果 #5 (2509版本 NPU卡信息显示问题)
    “使用2509原生支持的NPU卡 300I A2,在NPU页面有很多信息为空:②型号(Model)在sr文件中有配置,但是NPU页面没有显示”

    这说明即使 SR(静态资源)文件中配置了 Model,如果 BMC 的 Redfish 服务逻辑或映射配置未正确连接,该信息依然无法展示。

  • SerialNumbernull:该信息通常来源于芯片的 DIE ID 或 FRU 中的 SN 字段。对于 Atlas 300I A2,其序列号在 bmc.kepler.Systems.Processor 中通过 SN=xxx 定义。但当前 Npu5-1null,说明 获取路径配置错误或驱动未正确上报

  • TotalCoresMaxSpeedMHz 等为 null:这些字段需要 NPU 驱动在操作系统中加载后,通过 NPU-SMI 等工具获取。如果 OS 侧驱动未加载或 BMC 无法通过 I2C/IPMB 与 NPU 通信,则这些运行时信息无法获取。


:white_check_mark: 总结与建议

问题 原因 解决建议
1. 300I Pro 卡未出现在 Redfish /Processors 中 BMC 未通过 BoardIDDeviceID 等识别该卡,或其类型未被归类为 Processor.NPU :white_check_mark: 检查 SR 配置中是否为 300I Pro 卡添加了正确的 PCIeDevicebmc.kepler.Systems.Processor.NPU 对象
:white_check_mark: 确认 300I ProDeviceID 是否与 300I Duo 冲突(如搜索结果 #2 所述)
:white_check_mark: 参考 300V Pro 的适配方式,新建对象并绑定 BoardID 进行区分
2. 300I Duo 卡 Model 等信息为空 Redfish 到 BMC 内部属性的映射缺失,或 SR 配置未正确同步 :white_check_mark: 检查 sr 文件中 Processor.NPU.Model 是否配置为 "Atlas_300I_Duo"
:white_check_mark: 验证 Redfish 服务是否正确挂载了 bmc.kepler.Systems.Processor.NPU.Model 属性
:white_check_mark: 参考 300I A2bmc.kepler.Object.Properties 配置,确保 ObjectIdentifierModelSN 等字段准确传递

:hammer_and_wrench: 排查步骤建议

  1. 登录 BMC CLI,查询设备是否存在

    mdbctl lsprop NPUCard_1_01010101010X  # 查看是否识别到 300I Pro
    mdbctl lsprop PCIeDevice_X              # 检查 PCIe 设备识别情况
    
  2. 检查 SR 配置文件
    确保 300I Pro 卡的 DeviceID (如 0xd500) 和 VendorID (如 0x19e5) 已正确定义,并绑定到 Processor.NPU 类型。

  3. 验证 Redfish 映射逻辑
    检查 Redfish 模块是否从 bmc.kepler.Systems.Processor.NPU.Model 获取 Model 字段,而非硬编码或未映射。

  4. 更新 BMC 固件或适配包
    确认当前 BMC 版本(如 7.5.0.9.220)是否支持 300I Pro 卡的完整 Redfish 展示。可尝试升级到支持更全型号的版本。


:paperclip: 补充信息

  • FirmwareVersion: 7.5.0.9.220 显示的是 系统固件版本,通常指 BMC 或整体平台的版本。
  • NPU 卡自身的 MCU 固件版本(如 24.5.9)通常不会通过 Redfish 的 Processor 接口直接暴露,而是通过专用工具如 npu-smi 查询。

如需进一步定位,建议收集 BMC 日志(app.log)并搜索 NPUProcessorRedfish 相关的初始化和注册记录。

300I Duo sr文件中有如下NPU配置,300I Pro sr文件中没有NPU配置,是否是processor下找不到300I Pro的原因?是如何判断要不要加NPU配置的?

“NPU_1”: {
“Name”: “NPU${Slot}-1”,
“Id”: “${Slot} |> expr($1 * 2 - 1)”,
“SystemId”: 1,
“Presence”: 1,
“Slot”: “${Slot}”,
“Position”: “<=/PCIeDevice_1.DeviceName”,
“ComputeCapability”: “”,
“Architecture”: “”,
“InstructionSet”: “”,
“Version”: “”,
“Model”: “”,
“CapabilitySupportMask”: 0,
“TotalCores”: 0,
“Location”: “”,
“ECCAlarmStatus”: 0,
“DiagnosticFault”: 0,
“PredictiveFault”: 0,
“PowerOn”: 1,
“ThermalTrip”: 0,
“PowerState”: “On”,
“SN”: “”,
“Manufacturer”: “<=/PCIeCard_1.Manufacturer”,
“Health”: “<=/Component_PCIeCard.Health”
},
“NPU_2”: {
“Name”: “NPU${Slot}-2”,
“Id”: “${Slot} |> expr($1 * 2)”,
“SystemId”: 1,
“Presence”: 1,
“Slot”: “${Slot}”,
“Position”: “<=/PCIeDevice_1.DeviceName”,
“ComputeCapability”: “”,
“Architecture”: “”,
“InstructionSet”: “”,
“Version”: “”,
“Model”: “”,
“CapabilitySupportMask”: 0,
“TotalCores”: 0,
“Location”: “”,
“ECCAlarmStatus”: 0,
“DiagnosticFault”: 0,
“PredictiveFault”: 0,
“PowerOn”: 1,
“ThermalTrip”: 0,
“PowerState”: “On”,
“SN”: “”,
“Manufacturer”: “<=/PCIeCard_1.Manufacturer”,
“Health”: “<=/Component_PCIeCard.Health”
},

问题1 pro卡查询不到npu
npu对象来源于对象分发,需要再csr中配置对应对象,目前pro卡确实没有配置npu对象

问题2 查询不到model
csr中没有配置对应属性
“NPU_1”: {
“Name”: “NPU${Slot}-1”,
“Id”: “${Slot} |> expr($1 * 2 - 1)”,
“SystemId”: 1,
“Presence”: 1,
“Slot”: “${Slot}”,
“Position”: “PCIe Card ${Slot} (NPU)”,
“ComputeCapability”: “”,
“Architecture”: “”,
“InstructionSet”: “”,
“Version”: “”,
“Model”: “”,
“CapabilitySupportMask”: 0,
“TotalCores”: 0,
“Location”: “”,
“ECCAlarmStatus”: 0,
“DiagnosticFault”: 0,
“PredictiveFault”: 0,
“PowerOn”: 1,
“ThermalTrip”: 0,
“PowerState”: “On”,
“SN”: “”,
“Manufacturer”: “<=/PCIeCard_1.Manufacturer”,
“Health”: “<=/Component_PCIeCard.Health”
},

这个是openUBMC原有的配置,想问一下为什么300I pro和300I duo有这个差别?另外我在“Model”: “Atlas_300I_Duo”赋值是不是就可以解决第2个问题了。

第一个,可以参考其他npu卡配置,自行增加npu对象。第二个这样修改确实会让北向显示model,但是Atlas_300I_Duo是卡的model不是npu的,不建议这样修改。

好的,感谢