问题描述
满配内存、硬盘环境长稳加压场景,光模块出现不停的拔插导致BMC重启
环境信息
重现步骤
**满配内存、硬盘环境长稳加压,带内不断查询传感器信息
期望结果
能够正常获取各个传感器的信息
实际结果
偶现Drawer Power、Disk F Power、Disk power值为0,OCPNIC0_OPT_T传感器值为no reading现象,其中Drawer Power、Disk F Power、Disk power为0时,dmesg出现IPMI BT:timeout in RD_WA日志,OCPNIC0_OPT_T传感器值为no reading时,操作日志出现光模块拔插记录
初步定位
光模块出现不停的拔插:MCTP 请求经常超时,导致光模块 presence不停跳变(“插入-移除-插入…”)
BMC重启
- 触发点:
network_adapter 因网卡 MCTP 通道长时间不可达而挂死,maca 对其执行组件重启恢复。
- 致命操作:重启
network_adapter 会连带重载整个 hardware skynet 节点,此时与共享内存注册表(shmlock/harbor)发生读写竞态。
- 死锁形成:
shmlock_health.c 在 force_unlock 掉一个陈旧 sysv 锁后,全局读写锁 object=1 被残留 holder(logical_proc=9, actual_pid=1, service=11)永远占用不释放,导致全部组件(framework/om/interface/redfish/sensor/security/bmc_core/Tencent/hardware…)读/写加锁全部 60s 超时(LOCK_TIMEOUT),消息队列随之溢出,无限循环告警。
- 结果:BMC 管理平面整体无响应,硬件看门狗在超时后触发 warm reset。
BMC重启后 MCTP 与系统恢复正常
日志无法上传 需要日志的话 给个邮箱 通过邮箱传递
答案内容由AI生成,仅供参考:
结论
该问题属于典型的长稳加压场景下,由 MCTP 通信超时 引发组件挂死,进而因共享内存锁(Shm Lock)死锁导致 BMC 系统级重启的复合故障。您初步定位中的逻辑链条完整,与知识库中关于 BMC 重启、Shm Lock、组件重启及 MCTP 超时等概念的知识相互印证。解决方向建议从优化 MCTP 通信健壮性(如超时重试机制)和加固组件重启时与共享内存的交互流程两方面入手,以避免死锁的形成。
点击此处查看详细分析解答
根据您提供的详细问题描述及初步定位信息,结合知识库中的相关内容,我对该问题进行了综合分析。以下是结构化的问题梳理与总结:
问题现象复现
- 环境:满配内存与硬盘环境,运行 OpenUBMC 2606。
- 触发条件:进行长稳加压测试时,带内持续查询传感器信息。
- 异常表现:
- 偶现
Drawer Power、Disk F Power、Disk Power 传感器值为 0,伴随 dmesg 中的 IPMI BT: timeout in RD_WA 日志。
OCPNIC0_OPT_T 传感器显示 no reading,操作日志中出现光模块反复拔插的记录。
- 最终导致 BMC 重启。
初步定位与因果链分析
您提供的初步定位信息与知识库中的某些概念高度吻合,形成了清晰的因果链条:
1. 触发点:MCTP 通信超时
知识库中将 “MCTP Over PCIe 通信超时” 定义为一个概念,描述为“请求超时,尽管 BMC 从对端设备收到了响应”。这与您定位的“MCTP 请求经常超时,导致光模块 presence 不停跳变”完全一致。
2. 组件挂死与重启
由于 MCTP 通道长时间不可达,network_adapter 组件发生挂死。知识库中的 “组件重启” 实体(描述为“配置热备盘会引发多次组件重启,表明系统不稳定”)以及 Bmc_Reset 与 Long_Term_Stability_Test 的关系(Bmc_Reset 在长稳测试中反复导致组件重启)均支持此环节。maca 对挂死的组件执行重启恢复操作。
3. 致命操作与死锁形成
重启 network_adapter 导致整个 hardware 节点的重载,此时与共享内存注册表(shmlock/harbor)发生竞态。知识库中的 “Shm Lock” 实体明确指出:“共享内存锁机制导致系统不稳定,并导致了多次错误和 BMC 重启”,完全佐证了此关键步骤。shmlock_health.c 在 force_unlock 陈旧锁后,导致全局读写锁被残留持有者永久占用,形成死锁。
4. 结果:系统崩溃与 BMC 重启
死锁导致全部组件加锁超时,消息队列溢出,管理平面无响应,最终硬件看门狗触发 warm reset。知识库中的 “System Restart Cycle” 概念(“BMC 因底层进程和锁故障经历重复重启周期”)以及 “BMC 重启” 事件(“由于组件启动失败等内部条件触发”)均与此结果吻合。BMC 重启后,所有资源重新初始化,因此 MCTP 与系统恢复正常。
结论
该问题属于典型的长稳加压场景下,由 MCTP 通信超时 引发组件挂死,进而因共享内存锁(Shm Lock)死锁导致 BMC 系统级重启的复合故障。您初步定位中的逻辑链条完整,与知识库中关于 BMC 重启、Shm Lock、组件重启及 MCTP 超时等概念的知识相互印证。解决方向建议从优化 MCTP 通信健壮性(如超时重试机制)和加固组件重启时与共享内存的交互流程两方面入手,以避免死锁的形成。