服务器可靠性提升(一)内存CE增强隔离技术

简介: 为了提升系统的稳定, 阿里巴巴基础设施服务器系统创新团队联合阿里云等业务团队,对服务器硬件问题导致非预期的宕机进行治理。

image.png

“稳定性及性价比是云服务的核心竞争力。稳定性是基础,没有它云服务的摩天大楼分分钟就变成危房。虽然云原生架构的应用能更好地容忍单点的故障,但这并不意味着我们可放低标准,因为即使是单点故障也通常会对客户造成影响、破坏口碑,更不要说是系统整体故障。”阿里巴巴研究员余锋曾在2018年杭州云栖大会技术分享时表示。

为了提升系统的稳定, 阿里巴巴基础设施服务器系统创新团队联合阿里云等业务团队,对服务器硬件问题导致非预期的宕机进行治理。

提升系统的整体可靠性,为什么首先从内存入手?

1)内存部件作为冯诺伊曼的计算机体系结构中,发展的最快的部件之一,内存的发展和演进速度已经超过CPU的发展速度,同时内存占据最重要的位置之一,作为直接向中央处理器提供数据缓存的关键部件,内存系统的故障,直接导致处理器停止响应,导致系统宕机;

2)从计算机内存的工程工艺角度,内存作为近几年技术飞速发展的一个部件,单DIMM容量从几百M到今天的最大几百G,内存的存储密度越来越高,内存的电压越来越低,与之相反的,内存的主频反而越来越高,内存作为一个半导体的器件,存储单元的密度上升,电压降低,主频的提升,这些不利因素,抵消掉半导体可靠性技术提升的红利以后,导致内存的故障率升高。

3)随着CPU处理器技术的发展,单CPU支持的内存容量越来越大,当前主流的CPU,从两年前的两个通道,发展到现在的六个通道,DDR通道的带宽和频率相对两年前提升一倍以上,与之对应的服务器配置的内存条数越来越多,总容量越来越大,运行频率越来越高,这些也导致了整个计算机系统中,内存出现问题的比率越来越高。从统计数据上看,内存故障导致的宕机比率占到很大一部分,这符合预期,内存失效问题比例高也在情理之中。

image.png

因此对于硬件导致的非预期宕机问题的治理也是先从降低内存故障率入手。

通过对某典型产品业务硬件宕机数据分析, 发现UCE(不可纠正错误)问题占比在内存故障导致的宕机问题中超过大半, 因此内存故障治理也主要聚焦在如何降低内存UCE问题,服务器团队当前主要做了以下方面的工作:

内存故障隔离增强,避免持续恶化

1.内存错误的分级处理

2.服务器故障诊断系统

未来针对服务器可靠性提升,还会陆续开展以下几个方面:

1.资源级/硬件级的故障隔离

2.内存故障预测

3.HDD &SSD 故障预测

为什么要做内存CE的增强隔离?

现在的内存都已经有ECC校验功能,单个bit错误会自动纠正过来,不会对系统造成影响。既然内存最常见的错误已经能够被自动纠正过来,且不会对系统的运行造成影响,那么我们还有必要做增强的故障内存隔离吗,内存故障增强隔离到底增强了些什么,我们这样做的收益到底是什么?

首先,这里直接引用google paper《DRAM Errors in the Wild: A Large-Scale Field Study》中的结论。如下

image.png

Correlations between correctable and uncorrectable errors in the same DIMM.The left graph shows the UE probability in a month depending on whether there were CEs in the same month or in the previous month. The numbers on top of the bars give the increase in UE probability compared to a month without Ces (three left-most bars) and the case where there were no Ces in the previous month (three right-most bars). The right graph shows the factor increase in the probability of observing an UE as a function of the number of Ces in the same month.

内存条在一段时间内有可纠正错误产生,这条内存再次出现问题的概率会明显增加,出现CE和UE的概率都会变高。CE需要操作系统来处理,会消耗系统的处理资源,UE在当前的Intel Xeon处理器上,会直接导致宕机。内存增强隔离通过对已经出现错误的内存单元进行处理,来达到消除影响系统正常运行的潜在风险,从而提升系统可靠性。所以,虽然当前的服务器内存,已经支持了单bit自动纠错的功能,但是为了提升系统的可靠性,降低内存问题导致的性能下降,宕机风险,内存的单bit纠错功能是不够的,还需要采取一些额外的方式,来提升系统的可靠性。

了解内核的人可能会问,linux操作系统中有一整套完备的机制,来对内存的故障进行管理。操作系统也支持内存的故障管理了,阿里的增强隔离和Linux中的内存故障管理有什么差异,难道比Linux的内存故障管理还要全面吗?Linux对内存的故障管理定义的比较完整。Linux对内存的错误主要是依照MCE来进行处理的。

当前OS中,对于内存page的隔离是通过系统的mcelog服务实现。mcelog中的MCE隔离动作如下:

image.png

通过这些表格可以看到linux操作系统对内存的故障做了一些处理,Linux对内存的故障处理使用了一些故障管理的脚本,留了一些处理接口,依照这些脚本和接口,能够减少一些内存故障对系统的影响,但是这些接口和处理脚本,还存在一些问题解决不了,其中最大的一个障碍就是OS能够感知,能够处理的问题,都不算是太严重的问题,都是可以解决的问题。有相当一部分的问题,OS感知到的时候,OS已经死掉了。对于这一类的问题,是当前引起服务器宕机的主要问题。

为此,基础设施服务器系统创新团队,独创一套机制,通过带内带外的方式,成功的在OS的基础上,设计出一套内存故障隔离增强的解决方案。

——当检测到系统的内存出现一些轻微的故障的时候,我们通过基于出错存储单元物理位置的相关性,统计出错单元的故障频度和故障数变化率,使用基本的漏桶算法加上人工智能的自学习算法,来评估这个故障会不会恶化,从而决策是否需要将这个内存单元从系统中隔离出来。

——通过和阿里内核,阿里固件的配合,来确保隔离操作成功,并且不会对操作系统的运行以及业务软件的运行造成影响,从而将内存故障成功的控制在问题发生的初期。

——通过提前对故障的内存单元进行处理,确保业务运行的稳定性,降低宕机率,提升系统稳定性, 当前阿里的内存故障隔离技术对优化宕机率的贡献,已经做到了25%。

总结

针对当前OS中mcelog 服务的不足,基础设施服务器创新团队做了上述的增强改进。通过对故障内存page 的有效隔离,避免进一步出现不可纠正的内存错误,降低宕机率提升系统稳定性。

对于内存故障隔离,未来将会根据内存故障地址解析所在的 row 、colom 、bank ,rank 等,更加精准的判读出故障单位在内存DIMM上分布情况, 了解内存错误在一个DIMM上的分布情况。同时也会基于预测算法对故障单元周围的颗粒进行提前隔离。

目前关键的技术已经突破,核心idea也已经申请专利。

image.png

目录
相关文章
|
2天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
7 3
|
3天前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
16 2
|
16天前
|
API Windows
揭秘网络通信的魔法:Win32多线程技术如何让服务器化身超级英雄,同时与成千上万客户端对话!
【8月更文挑战第16天】在网络编程中,客户/服务器模型让客户端向服务器发送请求并接收响应。Win32 API支持在Windows上构建此类应用。首先要初始化网络环境并通过`socket`函数创建套接字。服务器需绑定地址和端口,使用`bind`和`listen`函数准备接收连接。对每个客户端调用`accept`函数并在新线程中处理。客户端则通过`connect`建立连接,双方可通过`send`和`recv`交换数据。多线程提升服务器处理能力,确保高效响应。
31 6
|
11天前
|
运维 Cloud Native 开发者
云原生技术演进:从微服务到无服务器的旅程
【8月更文挑战第20天】在数字化时代的浪潮中,云原生技术如同一艘航船,承载着企业转型的梦想与挑战。本文将深入探讨云原生技术的发展路径,从微服务的兴起到无服务器架构的革新,揭示这一技术演进背后的逻辑与动力。通过分析云原生技术的优势、面临的挑战以及未来的发展趋势,我们将描绘出一幅云原生技术演进的宏伟蓝图。
|
2天前
|
缓存 Linux 调度
Linux服务器如何查看CPU占用率、内存占用、带宽占用
Linux服务器如何查看CPU占用率、内存占用、带宽占用
9 0
|
3天前
|
前端开发 JavaScript API
Web服务器与前端技术的集成
【8月更文第28天】随着Web开发技术的发展,现代前端框架如React、Vue.js等已经成为构建复杂Web应用的标准工具。为了提供更好的用户体验,这些前端应用通常需要与后端Web服务器进行紧密集成。本文将详细介绍如何将React和Vue.js与后端Web服务器无缝集成,以创建高性能且用户友好的Web应用。
12 0
|
28天前
|
弹性计算 固态存储 ice
阿里云服务器ECS内存型r8i、通用算力u1、r7、AMD内存r8a、高主频内存hfr8i价格和性能差异
2024年阿里云提供2核16G、4核32G及8核64G等多种服务器配置,用户可根据需求选择不同实例规格如内存型r8i、通用算力型u1等。以华北2(北京)为例,2核16G月费从286.2元起,4核32G从572.4元起,8核64G则从1144.8元起。公网带宽1Mbps预付费为23元/月,系统盘如ESSD PL1按量计费0.0021元/小时/GiB。具体价格与折扣请参考阿里云官网。
|
2月前
|
弹性计算 运维 云计算
云服务器 ECS产品使用问题之如何解决幻兽帕鲁服务器内存溢出
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
15天前
|
Cloud Native 安全 云计算
云原生技术的未来:探索服务网格和无服务器架构
随着企业数字化转型的深入,云计算已成为推动业务创新的核心力量。本文将深入探讨云原生技术的最新发展趋势,重点分析服务网格和无服务器架构如何重塑云计算的未来。通过实际案例和技术解析,揭示这些前沿技术如何解决现代应用部署的复杂性,提高系统的可伸缩性和弹性。文章旨在为读者提供云原生领域的深度见解,并激发对云技术未来发展的思考。
56 0
|
2月前
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之如何扩容服务器(内存和带宽)
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。

热门文章

最新文章

下一篇
云函数