BMC解决方案丨服务器故障诊断与预测平台方案设计与实现

ops/2024/9/22 14:51:11/

近日,BMC.html" title=OurBMC>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日志。


http://www.ppmy.cn/ops/102297.html

相关文章

【python】Python如何通过FFmpeg处理音视频

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

vscode解决运行程序无法从控制台输入问题

在vscode中运行一些简单的程序代码,需要从控制台接受输入参数,发现不能通过键盘输入。 本章教程,提供该问题的解决方法。 解决办法 由于我是使用的Code Runner这个插件,Code Runner插件支持运行多种编程语言,很方便。打…

什么是IP地域封锁?有什么作用?

在互联网的广阔世界里,信息流通无界,但出于安全、管理或特定业务需求,对访问者的地域进行限制成为了一种常见的做法。这就是所谓的“IP地域封锁”。本文将深入探讨IP地域封锁的定义、实施方式以及其在实际应用中的作用。 一、IP地域封锁的定…

Qt QTableWidget可编辑设置,设置部分可编辑

1. 设置表格整体可编辑设置: # 设置全部单元格可编辑 ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);# 设置全部单元格不可编辑 ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);QAbstractItemView的参…

命令模式在手游后端的应用

利用命令模式(Command Pattern)在游戏后端架构中实现复杂功能的模块化、解耦以及灵活控制,是一种高级设计技巧。尤其是在手游这种需要处理大量玩家交互、实时数据更新、游戏逻辑复杂且需要高度可扩展性的环境中,命令模式显得尤为重…

【c++】设计一个功能更强大的遍历数组的函数 printArrWith

函数概念: printArrWith函数用来遍历一个数组,printArrWith方法以指定字符串作为分隔符,将所有数组成员连接为一个字符串并打印出来。如果不提供参数,默认用空格分隔 函数定义: void printArrWith(int arr[], int s…

【PyQt6 应用程序】视频百叶窗效果一键生成模块

在现代的多媒体创作中,音频和视频的结合是提升作品感染力的关键因素之一。尤其是短视频的制作,往往需要根据音频的节奏进行精细的剪辑和特效添加。PyQt6 作为一个功能强大的 Python GUI 库,为我们提供了极大的便利,使得我们可以轻松地创建功能丰富的应用程序。 本教程将一…

人工智能基础总结

一,AI人工智能概览 人工智能产业图谱 1.基础层:AI芯片(GPU,ascend),云计算,大数据 2.算法层:机器学习,深度学习 3.框架层:Mindspore,TensorFlow,PyTorch,PaddlePaddle 4.技术方向:计算机视觉处理,语音处理,自然语言处…