基于机器学习的内存故障预测了解一下 | 双11备战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文通过对服务器日志的分析,综合服务器的一些静态信息和状态信息,利用机器学习模型,进行服务器内存故障进行预测。

内存(DRAM)故障是常见的计算机硬件故障之一。在现在的大规模数据中心中,常常有内存故障导致的宕机事件出现。为了降低非预期的宕机率,预测潜在的内存故障是重要手段之一。

本文通过对服务器日志的分析,综合服务器的一些静态信息和状态信息,利用机器学习模型,进行服务器内存故障进行预测。

特征选择

(一)内存预测相关日志
服务器记录的和内存故障相关的特征可以分为三类,分别是服务器状态信息,服务器的日志记录,以及服务器的静态信息记录。

状态信息

状态信息包括服务器负载,CPU使用率,内存使用率,缓存使用率,磁盘使用率,流入流出流量,CPU温度,内存温度,内存功耗,总功耗等,可以反应出服务器的整体运行状态。状态信息都是时间序列数据,每分钟都在变化。

日志信息

日志信息是系统运行过程中产生的与硬件状况直接相关的日志,如mcelog 等,日志信息主要来自带内和带外日志信息。

静态信息

静态信息是指在预测任务的时间区间内保持不变的、或是表征服务器和 内存属性的特征。服务器相关特征包括服务器的厂商,部件Firmware信息,上线时间、所在城市、所属应用分组等,内存相关特征则包括内存的speed, manufacturer, type等。

(二)如何选取预测特征
为了筛选出对内存故障预测有帮助的特征,降低训练数据的特征维度,我们使用了不同的方法进行了特征选择。

T检验的方法

针对特征中的状态序列信息,我们采用T检验的方法来检验特征在内存故障发生前六天内的均值和正常服务器在相同时间段内的均值有没有显著性差异。经过实验,发现三个参数的差异性较为显著,P值小于0.05。具体如表1所示。

因此,我们选择状态信息中的,XXXX1、XXXX2、XXXX3 作为模型的输入特征。

表1. 重要性较高的时序特征T检验结果

image.png

系统日志选取
对于日志信息,我们统计了发生内存故障的服务器出现各不同日志内容的数量。为了让预测具有意义(预测后还有时间做出反应),我们只统计了内存故障发生5分钟以前的日志。结果发现出现最多的是xxx log 相关的信息。

因此,xxx log作为模型的输入参数。

表2.内存故障机器中不同日志机器数量

image.png

静态信息处理
针对静态信息,因为它们都是字符串,首先我们对这些特征各自进行编号。因为这些编号是人工引入的,而且是离散值,难以进行显著性的统计。我们采用基于互信息的特征选择方法,来对不同特征进行排序。互信息表达的是该特征与目标值的相关性程度。实验表明内存的三个特性与内存故障的相关性较大。

因此选取XXX1、XXX2、XXX3 3个静态信息作为输入。

表3. 静态信息相关性程度

静态信息 XXX1 XXX2 XXX3
相关性系数 0.9 0.6 0.1

数据预处理

数据预处理包括滑窗处理,正负样本平衡,和宕机标签移动。

滑窗针对的是高层信息和日志这样的时序序列。

虽然内存故障是主要硬件故障之一,但是对于数据中心的所有机器来说,发生故障的还是少数。所以存在正(内存故障)负(正常)样本比例悬殊的问题。尤其当数据还是时序序列时,负样本因为滑窗会增加很多倍,达到一比数万的比例。如此悬殊的正负样本比例,倘若不经任何处理,模型将难以训练,模型会很容易把所有样本都预测为负样本。所以需要合适的算法,调整正负样本的比例。

此外,因为机器的故障与机器的使用情况息息相关,存在在一段时间内有许多相关日志,但是一段时间后才发生内存故障的状况,这可能是这一段时间恰好使用不频繁或者未触碰到故障位置造成的。为了不干扰模型的判断,此时需要将宕机标签向前移动到最近存在相关日志的那一段时间。

模型选择

内存故障预测任务本质上是一个分类任务。模型在拿到相关的输入特征后判断该服务器是否会发生内存内存故障导致的宕机。因此在模型的选择和研究方面,我们首先选择有监督的分类模型。

经过对比,我们最终使用了基于树的集成模型,来进行预测。树模型的优点包括:可以处理数字和数据的类别;可解释性强,能够得到判断依据,还能输出特征重要性排序;需要的数据量不大;泛化能力强,对正负样本平衡性没有过分敏感。相比于其他传统机器学习模型,如K近邻模型(KNN),支持向量机(SVM),决策树等算法,拥有更强的拟合能力,能够达到更好的实验结果。

预测效果

以下是本文的预测模型跟业界预测效果的对比,相比当前业界水平,本文的预测模型recall 和 precision 提升至少10% 。

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
19天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
44 4
|
1月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
【10月更文挑战第1天】智能化运维:机器学习在故障预测和自动化响应中的应用
69 3
|
3月前
|
机器学习/深度学习 运维 监控
智能化运维:机器学习在故障预测和自动化响应中的应用
【8月更文挑战第2天】 本文探讨了将机器学习技术应用于IT运维领域,特别是在故障预测和自动化响应方面的潜力与挑战。通过分析机器学习如何优化传统运维流程,我们揭示了数据驱动的决策制定对提升系统稳定性和效率的影响。文章进一步讨论了实施机器学习模型时可能遇到的技术和非技术性问题,并提出了相应的解决策略。最后,我们反思了这一转变对IT专业人员技能要求的影响,以及如何在不断变化的技术环境中维持竞争力。
71 4
|
3月前
|
机器学习/深度学习 数据采集 运维
预见未来:机器学习引领运维革命——故障预测与自动化响应的新篇章
【8月更文挑战第2天】智能化运维:机器学习在故障预测和自动化响应中的应用
60 1
|
3月前
|
存储 机器学习/深度学习 PyTorch
深入理解GPU内存分配:机器学习工程师的实用指南与实验
给定一个模型架构、数据类型、输入形状和优化器,你能否计算出前向传播和反向传播所需的GPU内存量?
45 0
|
4月前
|
缓存 Java Linux
开发与运维内存问题之线上遇到故障,使用jstat命令发现Old区持续增长如何解决
开发与运维内存问题之线上遇到故障,使用jstat命令发现Old区持续增长如何解决
47 2
|
4月前
|
机器学习/深度学习 人工智能 运维
智能化运维:利用机器学习优化故障预测与响应
【7月更文挑战第23天】本文深入探讨了智能化运维的前沿技术,特别是机器学习在故障预测和响应中的应用。文章首先介绍了智能化运维的概念及其对现代IT运维的重要性,随后详细阐述了机器学习模型如何被训练来识别潜在的系统故障并提前预警。通过分析真实案例,我们展示了机器学习算法在实际运维中的有效性,以及如何通过这些算法减少系统停机时间,提高运维效率。最后,文章讨论了实施智能化运维时可能遇到的挑战及应对策略,为读者提供了一套实用的智能化运维解决方案。
|
4月前
|
机器学习/深度学习 数据采集 弹性计算
智能化运维:机器学习在故障预测中的应用
随着信息技术的飞速发展,系统运维面临着数据量激增、故障类型复杂化等挑战。传统的运维手段已难以满足现代企业的需求,智能化运维应运而生。本文重点探讨机器学习在智能化运维中的故障预测应用,通过案例分析展示其在提升运维效率、降低维护成本方面的显著作用,并讨论实施智能化运维时可能遇到的挑战与对策。
|
4月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测中的应用
【7月更文挑战第16天】随着信息技术的飞速发展,企业对IT系统的依赖程度不断加深。传统的运维模式已经难以满足现代业务的需求,智能化运维应运而生。本文将探讨如何通过机器学习技术提高故障预测的准确性,减少系统停机时间,并提升运维效率。我们将分析机器学习在故障预测中的具体应用案例,讨论实施过程中的挑战与对策,以及评估机器学习模型的性能。文章旨在为运维人员提供一种全新的视角和方法,以期达到优化系统稳定性和提升用户体验的目的。
|
4月前
|
机器学习/深度学习 运维 监控
智能化运维:机器学习在故障预测和自动化修复中的应用
随着信息技术的迅猛发展,企业对运维工作的效率和准确性要求越来越高。传统的运维模式已难以应对日益复杂的系统环境和数据量。本文将探讨如何利用机器学习技术提升运维工作的智能化水平,实现故障的早期预测和自动化修复,从而减少系统停机时间,提高企业运营效率。通过分析机器学习在运维领域的应用实例,揭示其在实际工作中的有效性和潜力。
74 0

热门文章

最新文章