现需要在 openUBMC 中实现 Atlas 350 的 UB 互联/断开配置。需求大致是:用户通过Web下发GROUP号+互联/断开状态,BMC通过带外通道发送命令,NPU卡写入Flash并在重启后生效。
不确定以下问题:
应该放在哪个组件,是在general_hardware组件下面增加代码吗?
这个NPU卡的带外监控流程到底是怎样的,根据相关信息发现是在compute闭源组件里面进行相关的带外监控的;
Web界面是否能够看到UB互联/断开的配置按钮?
现需要在 openUBMC 中实现 Atlas 350 的 UB 互联/断开配置。需求大致是:用户通过Web下发GROUP号+互联/断开状态,BMC通过带外通道发送命令,NPU卡写入Flash并在重启后生效。
不确定以下问题:
应该放在哪个组件,是在general_hardware组件下面增加代码吗?
这个NPU卡的带外监控流程到底是怎样的,根据相关信息发现是在compute闭源组件里面进行相关的带外监控的;
Web界面是否能够看到UB互联/断开的配置按钮?
答案内容由AI生成,仅供参考:
| 问题 | 回答 |
|---|---|
| 应该放在哪个组件? | 不建议放在 general_hardware,应新建组件或基于 compute 扩展。 |
| 带外监控流程是怎样的? | 由 compute 组件通过 std_smbus 定期采集 NPU 数据,依赖 MCU 和 EEPROM。 |
| Web 是否能看到配置按钮? | 社区版本没有,需自行开发前端页面并通过 Redfish/IPMI 接入。 |
| 如何实现“配置重启生效”? | 通过带外通道发送命令,调用 NPU 固件 API 将配置写入 Flash 存储。 |
根据您提出的问题,以下是基于 Knowledge Graph 数据、Document Chunks 和相关搜索结果 的系统性解答。我们将围绕以下四个方面进行详细说明:
结论:不应放在
general_hardware组件中,而应通过专用组件(如compute或新增自定义组件)实现,且需结合 UB Interconnect Configuration 方法。
UB Interconnect Configuration 是实现 Atlas 350 Accelerator Card 带外管理的关键步骤之一(见KG关系:Out-of-Band Management → UB Interconnect Configuration)。Atlas 350 Accelerator Card → UB Protocol),该协议专用于设备间高速互联配置。| 组件 | 是否推荐 | 理由 |
|---|---|---|
general_hardware |
适用于通用硬件(如风扇、电源等),不适合处理 NPU 专用协议。 | |
compute |
闭源组件,已用于 Atlas 系列 NPU 卡的资源管理和带外监控(见 DC#6、DC#10)。是当前 Atlas NPU 控制的核心逻辑所在。 | |
| 新增专用组件 | 可新建一个组件(如 ub_interconnect_manager),封装对 UB 互联的配置与命令下发,符合 openUBMC 微组件架构设计理念。 |
建议方案:
- 若已有
compute组件接入权限,可在其基础上扩展 UB 互联接口;- 否则,推荐创建新组件,使用 D-Bus 接口注册
/bmc/kepler/UBInterconnect路径,定义SetGroupConfig()等方法,通过std_smbus或 MCTP over PCIe 发送命令至 NPU。
结论:Atlas 系列 NPU 卡的带外监控由闭源的
compute组件主导,通过 SMBus 协议周期性获取状态数据,部分功能依赖 MCU 固件和 EEPROM。
| 属性 | 获取方式 | 协议 | 周期 | 实现说明 |
|---|---|---|---|---|
BoardID |
带外 | std_smbus |
BMC启动/OS启动触发 | 用于区分不同型号 NPU 卡(见 DC#7) |
PowerWatts |
带外 | std_smbus |
2s | 由 BMC 定期读取功耗传感器 |
McuFirmwareVersion |
带外 | std_smbus |
30s | 从 MCU EEPROM 中读取固件版本 |
MemoryCapacityKiB |
带外 | std_smbus |
30s | Atlas 300I Duo 支持,但早期版本不显示(见 DC#2) |
InletTemperatureCelsius |
带外 | std_smbus |
2s | 板级温度传感器 |
BMC (openUBMC)
│
├─ 启动 compute 组件
│
├─ 创建 NPUCard 对象(bmc.kepler.Systems.NPUCard)
│
├─ 配置 std_smbus 通道连接 NPU MCU
│
└─ 定期轮询:
→ 调用 SMC 命令或直接访问 EEPROM
→ 获取 BoardID、功率、温度等信息
→ 写入 D-Bus 接口,供 Web/IPMI 使用
特别提示:用户
Ryan1989曾提问如何 调用 SMC 命令 和.so库函数(KG: Ryan1989),说明 NPU 控制涉及底层封装,通常由闭源 compute 组件完成。
结论:当前 openUBMC 社区版 Web 界面未提供该按钮,需自行开发前端页面并绑定后端服务。
InterconType、PresentDPUCount、UBManagedBy 等属性,说明华为内部已在开发 UB 互联的 Web 管理功能。要添加 Web 配置按钮,需:
POST /redfish/v1/Chassis/1/UBInterconnect)
安全提示:此操作应记录日志,并支持 导入导出配置(参考 openUBMC 配置管理机制,见 DC#5)。
| 步骤 | 操作 | 工具/接口 |
|---|---|---|
| 1 | 创建新组件 ub_interconnect_mgr |
使用 bingo 工具生成模板 |
| 2 | 定义 D-Bus 接口与方法 | model.json 定义 SetUBGroup(group_id, state) |
| 3 | 实现 UB 配置命令发送 | 使用 std_smbus 或 MCTP over PCIe 发送 SMC 命令 |
| 4 | 写入 Flash 并持久化 | 确保命令触发 NPU 写 Flash 操作,支持重启生效 |
| 5 | 提供 Redfish/IPMI 接口 | 映射为 POST /redfish/v1/Chassis/1/Oem/Atlas/UBInterconnect |
| 6 | 开发 Web 前端界面 | 在 WebUI 中添加配置页面,调用上述接口 |
| 7 | 测试验证 | 使用 mdbctl 查看 D-Bus 对象状态,确认配置生效 |
| 问题 | 回答 |
|---|---|
| 应该放在哪个组件? | 不建议放在 general_hardware,应新建组件或基于 compute 扩展。 |
| 带外监控流程是怎样的? | 由 compute 组件通过 std_smbus 定期采集 NPU 数据,依赖 MCU 和 EEPROM。 |
| Web 是否能看到配置按钮? | 社区版本没有,需自行开发前端页面并通过 Redfish/IPMI 接入。 |
| 如何实现“配置重启生效”? | 通过带外通道发送命令,调用 NPU 固件 API 将配置写入 Flash 存储。 |
wuzhou-xiaokaili 通过新增 wzAtlasModel 组件来识别 Atlas 卡的 BoardID 的做法。ub_interconnect,接口建议为 bmc.kepler.UBInterconnect。如您有 SDK 权限或 compute 组件源码,欢迎进一步深入实现细节。否则,建议先在社区提出 RFC(Request for Comment),推动此功能开源化进程。
1、这部分具体实现的方案需要上interface sig讨论
2、目前npu卡的带外监控是在compute组件内的,具体流程是通过smbus协议获取相关信息
3、按钮能否看到需要webui的实现,也需要上interface sig