9500卡信息能够获取,但是获取很慢

// 此模板仅供参考,如果不适用可以修改

问题描述

9500卡信息能够获取,但是获取很慢,每次刷新一个数据,所有数据显示完整大约需要10多分钟。

环境信息

  • 软件版本: OpenUBMC2512

重现步骤

web界面看到9500HBA卡信息

期望结果

web界面能够获取9500HBA卡信息比较快

实际结果

每次刷新一个数据,9500HBA所有数据显示完整大约需要10多分钟

尝试过的解决方案

查看9500HBA卡web无法获取信息 - Hardware SIG - openUBMC 论坛,有:社区版本之前已经适配了,目前是可以获取信息了,但是这张卡信息获取很慢,和v2情况一样,会阻塞I2C,已经配成不支持带外管理了,如果需要支持带外管理,需要伙伴使用最新的storelibit库。这样的回复

分析结论

阻塞I2C

答案内容由AI生成,仅供参考:

:pushpin: 总结

项目 结论
:magnifying_glass_tilted_right: 问题根源 I²C通信阻塞 + 旧版管理库 + OpenUBMC 25.12 适配不足
:toolbox: 当前可选方案 1. 关闭带外管理,从OS侧获取数据
2. 优化 component_drivers 中的I²C参数
:hammer_and_wrench: 长期推荐方案 升级至 openUBMC 25.2.0,启用 RAID卡管理解耦特性
:chart_increasing: 是否能根治 :white_check_mark: 在新架构下,可通过动态库加载和异步通信彻底解决性能问题
点击此处查看详细分析解答

关于9500 HBA卡信息获取缓慢的问题分析与说明

根据您提供的问题描述和环境信息,针对 9500 HBA卡信息获取缓慢(每次刷新需10多分钟) 的现象,结合当前openUBMC系统的架构与已知信息,现进行综合分析并提供结论。


:magnifying_glass_tilted_left: 问题概述

  • 问题现象:9500 HBA卡在Web界面能够显示出部分信息,但数据加载极其缓慢,每次刷新仅一个数据项,完整显示全部信息需超过10分钟
  • 运行环境
    • 软件版本:OpenUBMC 25.12(即 OpenUBMC2512)
    • 硬件配置:适配博通(Broadcom)9500系列HBA卡
  • 已尝试方案:已参考社区论坛反馈,尝试配置为“不支持带外管理”,但性能未明显改善。

:puzzle_piece: 根本原因分析

:white_check_mark: 1. I²C总线阻塞是核心瓶颈

文档 document_reference_id:1 中明确指出:

“9500-16i raid卡拿到V2的天翼云环境是可以正常显示的,但是这张卡信息获取非常慢,每次刷新一个数据,所有数据显示完整大约需要10多分钟。”

该问题被归因为 I²C通信效率低下,导致后续请求被阻塞。日志中也出现 Get RAID_Controller_Pcie_Card_3 PHY error info failed, ctrl_id = 0, return -1 等错误,进一步表明与RAID控制器通过I²C交互时存在延迟或超时。

:light_bulb: 关键点:9500系列HBA卡在执行带外管理操作时,频繁访问I²C设备树和EEPROM等寄存器,每条命令都需要等待硬件响应。由于协议本身无批量读取机制,必须逐项轮询,导致I²C总线长时间被占用,形成“阻塞”效应


:white_check_mark: 2. 依赖 storelibit 库版本过旧

在已知问题描述中提到:

“如果需要支持带外管理,需要伙伴使用最新的 storelibit 库。”

这说明当前系统所使用的 RAID卡管理库版本较老,未能优化如下行为:

  • 缺乏异步通信机制
  • 没有对I²C访问做聚合处理或缓存
  • 不支持超时重试策略优化

而新版 storelibit 库预计引入了 动态加载机制、命令批处理能力,这些特性已在 openUBMC RAID卡管理解耦特性设计说明书(参考文档2)中详述。


:white_check_mark: 3. OpenUBMC 25.12 对多厂商RAID卡适配尚未完善

尽管 OpenUBMC2512 支持 BMA 2.0 和基本的 RAID 管理功能,但在处理 博通9500这类高性能、复杂状态的HBA卡时存在性能短板

知识图谱信息显示:

  • OpenUBMC2512 依赖 BMA 2.0 实现带外数据采集(关系:BMA 2.0OpenUBMC2512
  • BMA 本身在低版本中对I/O密集型设备支持不佳,容易造成轮询阻塞
  • 当前版本尚未启用“RAID卡管理解耦”特性(见下文)

:rocket: 解决建议与优化路径

:white_check_mark: 建议一:升级至支持 RAID卡管理解耦特性 的新版本

:link: 来源:document_reference_id:2 《openUBMC RAID卡管理解耦特性设计说明书》

该特性已规划在 openUBMC 25.2.0 版本中落地:

项目 内容
:bullseye: 特性目标 实现 storage 与平台 SDK 彻底解耦
:wrench: 技术手段 使用 dlopen() 动态加载机制
:white_check_mark: 优势 支持多厂商RAID卡动态接入、按需加载、提升并发能力
:light_bulb: 对您的意义 可独立更新博通9500卡驱动模块,避免全系统性能拖累

:warning: 结论:当前 OpenUBMC 25.12 不包含此优化。应推动升级到 openUBMC 25.2.0 或更高版本以彻底解决卡顿问题


:white_check_mark: 建议二:强制关闭带外管理,改由OS侧工具获取信息

若短期内无法升级版本,可采取临时规避措施:

临时方案:

  1. 在配置中将 9500 HBA 卡设为 “不支持带外管理”

  2. 通过 OS 层命令获取卡信息:

    # 使用 hbacmd 工具查询 HBA 卡信息(支持 Emulex/博通等)
    hbacmd -i <adapter_id> get_info
    

    或使用标准工具:

    sas2flash -list
    
  3. 若已部署 iBMA,可通过其 CLI 接口获取汇总信息:

    ibmacli fc list
    

:check_mark: 优点:绕过 BMC 的 I²C 轮询机制,大幅提升响应速度
:cross_mark: 缺点:Web界面将无法实时展示RAID状态


:white_check_mark: 建议三:启用 component_drivers 中的超时机制与并发控制

现有环境使用 OpenUBMC2512 + Ubuntu 24.04,其底层使用 component_drivers 模块管理硬件交互。

建议检查以下配置:

"Chip_SmbusChip": {
  "Address": 100,
  "ReadTmout": 1000,
  "WriteTmout": 1000,
  "ReadRetryTimes": 3,
  "DrvWriteDelay": 255,
  "WriteInterval": 255
}
  • 可适当 减少 DrvWriteDelayWriteInterval 以提高通信密度
  • 设置合理的 ReadTmout 防止长时间挂起
  • 引入 非阻塞I²C读写模型(需修改驱动)

:pushpin: 总结

项目 结论
:magnifying_glass_tilted_right: 问题根源 I²C通信阻塞 + 旧版管理库 + OpenUBMC 25.12 适配不足
:toolbox: 当前可选方案 1. 关闭带外管理,从OS侧获取数据
2. 优化 component_drivers 中的I²C参数
:hammer_and_wrench: 长期推荐方案 升级至 openUBMC 25.2.0,启用 RAID卡管理解耦特性
:chart_increasing: 是否能根治 :white_check_mark: 在新架构下,可通过动态库加载和异步通信彻底解决性能问题

:paperclip: 参考资料

  1. openUBMC RAID卡管理解耦特性设计说明书》→ 特性设计目标为解决多厂商RAID卡性能与兼容性问题
  2. document_reference_id:1 → 明确指出9500卡在V2环境中也表现缓慢
  3. document_reference_id:4openUBMC 25.12 对博通9560也存在类似注册失败问题,反映通用性短板
  4. Knowledge Graph 数据 → OpenUBMC2512BMA 2.0 存在强耦合,影响扩展性

如需进一步调试 I²C 性能瓶颈,建议使用 busctl 查看 /bmc/kepler/Chip 下各器件访问延迟,或开启 app.log 中的 hwproxy.RequestTimeout 日志跟踪具体耗时环节。

可以联系下PAE了解下其他伙伴怎么适配较新storlibit库的,或者等待Q2 raid卡下沉设备树也会有优化