服务器内存故障预测居然可以这样做!

大数据131

作者:vivo 互联网服务器团队- Hao Chan

随着互联网业务的快速发展,基础设施的可用性也越来越受到业界的关注。内存发生故障的故障率高、频次多、影响大,这些对于上层业务而言都是不能接受的。

[En]

With the rapid development of Internet business, the availability of infrastructure has attracted more and more attention from the industry. Memory failures have high failure rate, high frequency and great impact, which are unacceptable for upper-level business.

本文主要介绍EDAC(Error Detection And Correction)框架在内存预测方面的应用。首先介绍了EDAC应用的背景,接着是EDAC的原理介绍,然后通过EDAC安装——配置——测试过程详细地介绍了EDAC在vivo服务器上的应用,最后提出了内存预测使用EDAC的方案总结以及服务器RAS(Reliability, Availability and Serviceability)应用减小硬件故障对系统的影响的展望。

一、背景介绍

随着互联网业务的快速发展,基础设施的可用性也越来越受到业界的关注。然而硬件故障一直以来都是一种普遍存在的现象,由于硬件故障而造成的损失往往是巨大的。在服务器各个部件中,除硬盘故障以外,内存故障是第二大常见的硬件故障类型。并且服务器内存的数量众多,vivo的内存数量达到40w+条,内存故障造成的最严重的后果是会直接导致系统崩溃,服务器宕机,这些对于上层业务而言都是不能接受的。

内存故障可分为UCE(Uncorrectable Error)和CE(Correctable Error)。当硬件侦测到一个错误,它会通过两种方式报告给CPU的。其中一种方式是中断,这种情况如果是UCE也就是不可纠正错误,则可能会导致服务器立马宕机。如果是CE,即可纠正错误,硬件会利用一部分资源对该错误进行修复,而当内存CE累计过多,无法进行自我修复时,则会产生UCE,造成系统宕机重启。因此,我们需要尽早地发现CE过多的内存条,及时进行更换,避免造成重大的损失。

以往内存故障大多是通过MCE(Machine Check Exception)log 和BMC记录的SEL (System Error Log)日志结合去发现定位故障的,而这些最大的问题是不能够提前发现内存问题,往往是服务器宕机重启后才被动发现的。除此之外还存在以下几个方面的问题:

  1. MCE日志很难直接定位到故障内存槽位。
  2. 没有直观的CE/UCE错误计数。
  3. 无法根据内存条上CE/UCE的数量判断内存的健康状况。
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长