BMC解决方案丨服务器故障诊断与预测平台方案设计与实现
近日,OurBMC社区理事成员单位浪潮计算机科技有限公司基于开放原子开源大赛的成果梳理了一份成熟的可落地方案——《基于BMC技术的服务器故障诊断与预测平台方案设计与实现》。该方案为开放原子开源大赛的冠军之作,极大推动了社区产业化落地的发展和工作。
产业化落地SIG包括软硬件及系统解决方案,重点对产业化落地中遇到的困难点进行分析,并贡献解决方案,为产业化做贡献。
《基于BMC技术的服务器故障诊断与预测平台方案设计与实现》针对 “故障预测” 提出了DTF(Dynamic Threshold Funnel 动态阈值漏斗)算法和CPU高温降频算法。DTF算法解决了用户频繁收到CE(Correctable Error 可纠正错误)告警的问题,并利用CE告警对固定位置部件进行故障预测,提前预知服务器部件的健康状态。CPU高温降频算法可辅助CPU降温,一方面缓解了整机散热的压力,另一方面也降低了CPU因高温带来的一系列损耗和负面影响。
服务器故障诊断与预测平台整体方案
本方案系统架构如下图所示,以飞腾服务器芯片搭配浪潮自研主板为基础硬件,从BMC软件应用角度,设计出集故障数据收集、故障诊断、故障预测为一体的完整方案,主要监控CPU、MEM、PCIe、NVMe、PSU等部件。
故障采集模块的实现
- CPU、MEM、PCIe故障数据采集
OS运行期间,当CPU发生error interrupt或者error register时,PBF模块对硬件错误信息进行收集,并通过MM(Management Mode)模块以及SDEI(software Delegated exception interface)模块将CPER(common platform error record)格式的错误数据发送给BMC和OS。
- PSU、NVMe故障数据采集
针对NVMe硬盘,可以通过BMC透过Smbus协议读NVMe的寄存器,具体命令为i2ctransfer -y {bus} w2@0xd4 0x00 0x04 r1,或者通过代码中Smbus标准接口获取寄存器信息。
针对PSU电源,可以通过BMC透过Pmbus协议读PSU的寄存器,具体命令为i2ctransfer -y {bus} w1@addr 0x79 r2, 或者通过代码中Pmbus标准接口获取寄存器信息。
故障诊断模块的实现
- 对CPU、MEM、PCIe故障数据进行诊断
BMC在进行CPER数据组包接收后,若判断接收到完整的CPER数据,会进行后续数据解析处理。主要流程包括对CPER格式转换,把原始CPER数据转换成JSON格式以及根据所得JSON数据提取重要字段记录错误信息。
- 对PSU、NVMe故障数据进行诊断
针对NVMe硬盘,可以通过BMC透过I2C链路读NVMe的寄存器,当使用Smbus 0x00命令读取0x04寄存器时获取到的数据就是NVMe硬盘的寿命。
BMC通过Smbus接口与PSU进行通讯,通过读取PSU的STATUS_WORD(0x79)寄存器来获取PSU的状态,当电源有Predict_failure情况时上报SEL日志。
故障预测模块的实现
- 对CPU、MEM、PCIe故障数据进行预测
针对飞腾服务器CE告警,采用DTF( Dynamic Threshold Funnel )算法进行故障预测,其故障预测流程图如下:
- 对PSU、NVMe故障数据进行预测
根据IPMI协议,当满足如下条件时,说明电源有Predict_failure情况,此时上报SEL日志。
- NVMe故障预测
BMC通过mi basic command命令向NVMe的物理地址发送命令码获取到NVMe的状态、使用的驱动器寿命百分比(PDLU)等信息,进而对NVMe进行故障预测。获取到NVMe的使用寿命信息后,BMC会将其与预设的阈值进行比较,设定当使用寿命低于10%时,系统将触发告警机制,生成SEL日志。
关注OurBMC公众号,后台回复 “平台方案”,获取《基于BMC技术的服务器故障诊断与预测平台方案设计与实现》完整版
欢迎各成员单位及开发者积极投稿,为社区建设添砖加瓦,投稿请联系:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
试用 Kubernetes Gateway API 的五大理由
原文作者:Michael Pleshakov - F5平台集成工程师 原文链接:试用 Kubernetes Gateway API 的五大理由 转载来源:NGINX 中文官网 NGINX 唯一中文官方社区 ,尽在nginx.org.cn Kubernetes从早期阶段就包含一个 API — 内置Ingress 资源,用于配置外部 HTTP 流量到Service的请求路由。虽然已被用户广泛采用并得到许多实现(如 Ingress controller)的支持,但 Ingress 资源在以下三大方面限制了其用户: 功能不足– 减少了支持的用例数量。 可扩展性模型不佳– 限制了对 NGINX 等许多数据平面中已有的高级功能的访问。 缺少不同的用户角色– 阻碍了集群内多个团队之间安全共享数据平面基础设施。 为了应对这些限制,Kubernetes 社区设计了Gateway API,这个新项目可更有效地替代 Ingress 资源。本文阐释了试用 Gateway API 的五大理由,并将其与 Ingress 资源进行了比较,另外还介绍了我们的开源项目NGINX Gateway Fabric。该项目支持...
- 下一篇
Apache SeaTunnel Zeta 引擎源码解析(一)Server端的初始化
引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本,围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程,希望通过这篇文档,对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文章将会分成三篇,从以下方向给大家介绍: SeaTunnel Server端的初始化 Client端的任务提交流程 Server端的接收到任务的执行流程 由于涉及源码解析,涉及篇幅较大,所以分成系列文章来记录下一个任务的整体流程。 参考 [ST-Engine][Design] The Design of LogicalPlan to PhysicalPlan:https://github.com/apache/seatunnel/issues/2269 作者介绍 大家好,我是刘乃杰,一名大数据开发工程师,参与Apache SeaTunnel的开发也有一年多的时间了,不仅给SeaTunnel提交了一些PR,而且添加的一些功能也非常有意思,欢迎大家来找我交流,其中包括支持Avro格式文件,SQL Transform中支持嵌套结构查询,给节点添加Tag达到资源隔离等。 近期推送Sea...
相关文章
文章评论
共有0条评论来说两句吧...