内存RAS技术介绍:内存故障预测

news2024/12/26 22:26:53
故障预测是内存可靠性、可用性和服务性(RAS)领域中的一个重要方面,旨在提前识别潜在的不可纠正错误(UE),以防止系统崩溃或数据丢失。

4.1 错误日志记录与预测基础

错误一般通过Linux内核模块Mcelog记录到文件中,包括时间戳、物理地址、服务器名称、物理地址所在的插槽、通道和bank信息,以及错误发生时的内存访问类型(读或写)。由于UE(不可纠正错误)通常导致较高的系统崩溃率,2010年代起,基于历史CE(可纠正错误)统计的UE预测方法被广泛采用。该方法基于一定的历史数据,当某段时间内CE超过一定阈值时,预判可能即将发生UE,并提前更换相关内存部件。

4.2 预测后的预防措施

为阻止预测到的UE发生,采取了诸如控制缓存行隔离错误区域(如牺牲8KB或更小的系统开销)、页面离线(Page Offline)等策略。页面离线通过隔离4KB或更大容量的错误区域,无需额外硬件成本,能有效移除超过94%的UE,且作为系统可控制的最小内存单位,有助于最小化内存容量浪费。

图片

图15描述了传统的页面离线政策,通过设置一个时间窗口T内允许的最大CE次数X来监控错误。当错误计数在指定时间内超过X,触发页面隔离。X的设定依据设备特性调整,考虑了不同DIMM的使用状况和可靠性随时间递增的故障概率,需动态调整以达到最优解决方案。

图片

图16展示了通过调整X来控制强弱ECC策略,Pn(X)代表与X相关的纠错能力概率密度函数。

图片

确定X的其中一个方法是漏桶算法,如图17所示。该算法通过设置阈值X,监控UE、DIMM、Socket、页面和CE等部分的错误情况,当累积错误超过阈值时发出警告。漏桶概念中,水流入速率代表错误发生频率,漏水速率(即错误计数衰减速度)根据压力(即系统对错误的容忍度)变化。

图片

图18展示了基于警告等级和泄漏速率的简单漏桶算法示例,根据不同的配置,决定离线页面的大小和预警级别。

4.3 CE与UE的关联

尽管CE计数在预测UE方面至关重要,但跨页错误关联性使得基于单页CE计数的预测面临挑战。图19显示了来自两台服务器的两个不同行的CE与UE关联性,表明拥有更高CE率的行并不一定伴随UE。这促使研究转向基于特定CE模式的UE预测方法。

图片

如图20所示,通过分析列、行或bank的错误模式长度,来预测UE的可能性。

图片

4.3.1 基于列Column预测UE

基于列模式的不可纠正错误(UE)预测主要利用了这样一个现象:UE通常在内存列中更频繁地发生且分布分散。这是因为在内存操作中,信号通过晶体管栅极传输时影响较小,但数据沿位线(bit lines)移动,连接到源或漏极时,由于位线的电阻或电容效应,电荷流动可能会受到干扰,导致较高的错误率。在高密度内存中,由于位线细薄且周围信号线众多,这一问题尤为突出。

传统的基于列故障的预测方法通过精确度(Precision)和召回率(Recall)两个指标来评估其性能。精确度衡量当预测发生UE时预测的准确程度,而召回率则表示预测出的UE占实际发生UE总数的比例。公式定义如下:

  • 精确度(Precision)= TP / (TP + FP)

  • 召回率(Recall)= TP / (TP + FN)

其中,TP(True Positive)是指正确预测出的UE次数,FP(False Positive)是指错误预测出UE但实际上未发生的次数,FN(False Negative)是指实际发生了UE但未预测出的次数。

图21展示了针对CE率(Correctable Error Rate)和列故障的精确度、召回率以及修复次数(维修次数通常指需要隔离或更换的内存模块数量)。横轴上的X值代表重复次数的阈值,即错误发生次数达到多少时触发预测或响应。

图片

分析结果显示,基于CE率的页面离线策略中,当阈值设为500时,精确度和召回率表现最佳。然而,当阈值提高到2000时,精确度和召回率分别降到了10%和7%,这意味着许多不必要的内存隔离,导致内存资源浪费。相比之下,基于列故障的预测策略在多数情况下提供了更好的性能。即使在较低的阈值(X=6)下,精确度和召回率也能达到45%和35%,尽管此时需要修复的次数较多,意味着维护成本或内存模块替换成本较高。但即便如此,相比于CE率导致的高维修成本,列故障引起的维修成本在较低阈值时仍然较低。当阈值设为最高(X=25)时,基于列故障的预测在精确度、召回率和维修次数上均优于基于CE率的方法。

总结来说,基于列故障的UE预测方法相比基于CE率的方法,能够提供更优的预测效果,减少误报和漏报,同时在一定程度上降低了因过度维修而导致的成本开销。

4.3.2 基于行Row预测UE

图22介绍了一种基于行Row预测模型的应用,它专门分析特定长度lr的行中CE(Correctable Errors,可纠正错误)的扩散情况,用于辅助页面离线方法。类似于之前提到的列预测器,当某个特定模式X的错误重复次数超过预设的行故障阈值(Row Fault, X)时,就认为该错误可能会演变为不可纠正错误(UE)。

图片

图22(a)展示了当X设置为6、10、16、和24时,相应页面会被标记为离线。在这种情况下,预测的最高精确度(Precision)和召回率(Recall)分别为7.2%和0.4%。然而,当采用行故障预测方法,如图22(b)所示,最高精确度和召回率分别达到了60%和33%。这表明,通过特定行和列的错误模式来进行预测,在精确度和召回率上都优于直接使用CE率进行UE预测。

图片

图23进一步对比了基于行故障和列故障的UE预测在精确度和召回率上的表现。在这两种方法中,随着阈值的提高,精确度往往增加而召回率下降。行故障预测在精确度上表现更优,有利于提高UE预测的准确性;相反,列故障预测在召回率方面更有优势,能更好地覆盖实际发生的UE事件。这些结果的差异可能源于多种因素,包括DIMM的工作环境、状态、以及所承受的工作负载等。

综上所述,行和列故障预测各有千秋,行预测在精确度上更胜一筹,适合追求预测准确性的场景,而列预测则在召回率上表现更好,适用于需要广泛捕获潜在UE情况的场合。选择合适的预测策略应基于对系统具体需求和工作条件的综合考量。

4.3.3 混合UE预测

Hybrid UE Prediction方法旨在克服单一预测器在随机出现的DRAM错误面前难以保证高精确度的问题。由于错误的发生受工作负载或数据类型的影响,单纯依靠行或列的错误模式进行UE预测可能不够全面。实际上,有研究表明大约15%-30%的错误发生在列或行中,并且其中约40%的错误是重复出现的。

混合预测方法利用了时间局部性和空间局部性两种特征。时间局部性意味着最近访问过的数据再次被访问的可能性较高。当首次发现符号错误后,若紧接着出现附加的符号错误,那么在1分钟内触发chipkill(一种强大的ECC纠错机制)的概率超过90%。通过关联这种时间特征与UE的发生,可以预测UE的时间点。空间局部性则是指临近的数据点被访问的可能性较大,一旦某单元或特定区域出现错误,周围的单元也应被检查。结合这两种特性,预测覆盖率可提升至80%,重复错误能减少76%,意味着大约63%的故障得以预防,但采用chipkill的开销比SECDED高出38%。

为了解决单预测模型的局限性,可以结合多种类型的预测器形成混合模型。例如,通过深度学习技术,可以整合逻辑回归(LR)、支持向量机(SVM)、分类与回归树(CART)、反向传播(BP)、梯度提升决策树(GBDT)、随机森林(RF)以及极端梯度提升(XGBoost)等多种模型。近期,基于提升法的深度学习技术在UE预测中得到了广泛应用。

在特定研究中,采用了混合预测器策略,结合了列、行和bank预测器,按照0.474、0.246、0.219的比例进行加权,以优化预测效果。这意味着通过智能地组合不同维度的预测模型,可以更全面地覆盖错误模式,提高预测准确性和效率,进而有效减少内存系统中的不可纠正错误,提升系统的稳定性和可靠性。通过这种多维度、多层次的分析与预测,混合UE预测方法为数据中心内存的高效管理与维护提供了一种先进策略。

4.3.4 离线策略性能分析

图24展示了对不同预测模型在页面离线策略中的性能分析,该分析基于来自四台不同服务器的数据。评价指标包括精确度(Precision)、召回率(Recall)、F-measure(F-分数)以及成本节省。结果显示,混合方法(特别是采用提升法的Boost)通常比单一模式的预测模型表现更优。当设置的阈值X较低,或者错误模式长度L较长时,预测性能更佳。

图片

F-measure是精确度和召回率的一种调和平均值,旨在平衡两者之间的关系,公式为:
 

图片


高的F-measure意味着既有较高的精确度也有较高的召回率。例如,尽管CE(Correctable Errors)的召回率相对较高,但由于精确度低,其F-measure可能较低。而对于具有较长模式长度L的行模式预测,由于精确度和召回率较为均衡,F-measure通常会高于CE。

成本节省是通过正确预测UE而减少的维护或替换成本。公式表达如下:
 

图片


这里,Cc是由于UE发生的单位成本,Cr是DIMM替换的单位成本,Cm是由于数据迁移而产生的单位成本。该公式用于判断基于成本节省的UE预测是否有利。在图24(b)中,CE的情况显示,由于频繁的替换或迁移导致的成本高于因正确预测UE带来的好处,成本节省呈现负值,意味着预测策略在经济上是不利的。

4.3.5 故障检测与刷新

故障检测与刷新(Error Check and Scrub)是提高内存系统可靠性的关键技术之一,尤其是对于早期诊断和识别内存故障,以减少不可纠正错误(UE)带来的成本。这一领域内的研究分为两大类:企业界倾向于研究不增加硬件面积负担的方法,而学术界则更关注即使消耗一定的硬件面积和功耗,也要准确预测UE的技术。

(1)OBET(On-Byte-Error Tracking)技术

图25展示的OBET硬件模块图例中,该技术通过在特定数据单元间增设错误标志来追踪字节错误,这一设计虽然带来了1.6%的面积开销和3%的功率消耗,但提供了有效的错误监测机制。错误标志具有三种状态:0表示无错误,0x00FF表示存在多个错误,0xFFFF表示奇偶校验错误,其余情况则可能为单比特错误或其他类型错误。

图片

OBET技术的最大优点在于,通过在数据间添加标志并利用这些信息进行选择性刷新(Selective Scrubbing),相比传统的ECS(Error Checking and Scrubbing)方法,它能以更低的开销和功耗运作。传统ECS方法通常需要对特定数据进行全面刷新来检测内存中的CE或UE,这会导致较大的功率消耗或较长的提取错误延迟。因此,OBET特别适用于检测多比特错误或UE,而不是单一错误。

(2)类似技术:DUO和XED
  • DUO:这是一种利用RS码进行小规模冗余设计的方法,尽管它能够提供较强的错误纠正能力,但伴随着较长的延迟。与OBET相似,DUO也是通过牺牲一定的硬件资源来实现更强大的错误处理能力。

  • XED(eXtra Error Detection):XED技术通过在存储奇偶校验信息的第9个芯片中存储带有错误信息的catchwords(捕捉词,或称为错误指示信息),擅长处理多比特错误而非简单的单比特纠正。与OBET类似,XED也因使用寄存器而需要占用一小部分硬件面积,但它在处理复杂错误模式方面表现出色。

综上所述,OBET、DUO和XED等技术均通过创新的错误检测与刷新机制,以不同程度的硬件开销和功耗为代价,实现了对内存错误的高效管理。它们在提高系统可靠性和数据完整性方面发挥着重要作用,特别是对于那些对错误容忍度要求严格的高性能计算和数据中心应用。

完整分析解读参考:数据中心内存RAS技术全景剖析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.31、基于长短记忆网络(LSTM)的发动机剩余寿命预测(matlab)

1、基于长短记忆网络(LSTM)的发动机剩余寿命预测的原理及流程 基于长短期记忆网络(LSTM)的发动机剩余寿命预测是一种常见的机器学习应用,用于分析和预测发动机或其他设备的剩余可用寿命。下面是LSTM用于发动机剩余寿命预测的原理和流程: 数据收集&#…

实践之K近邻算法实现红酒聚类

前言 K近邻算法是一种用于分类和回归的非参数统计方法,通过计算样本与训练样本的距离,找出最接近的k个样本进行投票来确定分类结果。算法的基本要素包括K值、距离度量和分类决策规则。 K值决定了邻居的影响程度,距离度量反映了样本间的相似度…

python条件

条件语句 if语句 if...else语句 if...elif...else语句 嵌套 is is 是一个身份运算符,用于比较两个对象的身份,即它们在内存中的地址是否相同。这与比较两个对象是否相等的 运算符不同。 运算符比较的是两个对象的值是否相等。 比较对象 比较基本数据…

npm发布的包如何快速在cnpm上使用

npm发布的包如何快速在cnpm上使用 解决方案 前往淘宝npm镜像官网 搜索插件库并点击同步 等待一分钟即可查看最新版本

C++ 类和对象 赋值运算符重载

前言: 在上文我们知道数据类型分为自定义类型和内置类型,当我想用内置类型比较大小是非常容易的但是在C中成员变量都是在类(自定义类型)里面的,那我想给类比较大小那该怎么办呢?这时候运算符重载就出现了 一 运算符重载概念&…

ts踩坑!vue3中defineEmits接收父组件向子组件传递方法,以及方法所需传的参数及类型定义!

使用说明 1、在子组件中调用defineEmits并定义要发射给父组件的方法 const emits defineEmits([‘foldchange’]) 2、使用defineEmits会返回一个方法,使用一个变量emits(变量名随意)去接收 3、在子组件要触发的方法中,调用emits并传入发射给父组件的方法…

【C语言初阶】探索编程基础:深入理解分支与循环语句的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言入门 🌹🌹期待您的关注 🌹🌹 ❀分支与循环语句 📒1.…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

Kafka:Kafka详解

Kafka 消息中间件 区别于rabbitmq,kafka更适用于量级较大的数据(100w级),主要在大数据领域使用 Kafka介绍 一个分布式流媒体平台,类似于消息队列或企业消息传递系统 Kafak的结构如下 producer:发布消息的对象 topic:Kafak将消息分门别类,每类的消息称为一个主题(Topic) …

《0基础》学习Python——第十一讲__时间函数

一、时间函数是Python中的内置函数和模块,用于处理日期和时间相关的操作。以下是常用的时间函数的种类和用法: 1、time.time():返回当前时间的时间戳。 时间戳(timestamp)是一种表示日期和时间的方式,它是一…

高频面试题基本总结回顾4(含笔试高频算法整理)

目录 一、基本面试流程回顾 二、基本高频算法题展示 三、基本面试题总结回顾 (一)Java高频面试题整理 (二)JVM相关面试问题整理 (三)MySQL相关面试问题整理 (四)Redis相关面试…

使用 SSH 通过 VS Code 连接企业服务器并拉取 Git 仓库代码的指南

文章目录 前言一、SSH 是什么?1.1 SSH 的主要特性和用途1.2 SSH 的工作原理 二、 为什么使用 SSH 而不是 HTTPS三、使用步骤3.1 生成 SSH 密钥3.2 配置 VS Code 远程连接3.3 通过 SSH 克隆 Git 仓库3.4 安装必要的组件 总结 前言 在现代软件开发中,远程…

Sentinel-1 Level 1数据处理的详细算法定义(四)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下: Sentinel-1 L…

鸿蒙语言基础类库:【@ohos.data.storage (轻量级存储)】

轻量级存储 轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。 说明: 开发前请熟悉鸿蒙开发…

红色文化3D虚拟数字展馆搭建意义深远

在房地产与土地市场的浪潮中,无论是新城规划、乡村振兴,还是商圈建设,借助VR全景制作、虚拟现实和web3d开发技术打造的全链条无缝VR看房新体验。不仅极大提升了带看与成交的转化率,更让购房者足不出户,即可享受身临其境…

前端Vue组件化实践:自定义轮播图组件的探索与应用

在前端开发领域,随着业务逻辑的不断丰富和系统规模的日益扩大,传统的开发方式逐渐暴露出种种弊端。其中,最突出的问题之一便是修改一个小的功能或细节可能导致整个系统的逻辑调整,造成开发效率低下和维护困难。为了应对这些挑战&a…

部署大语言模型并对话

随着人工智能技术的飞速发展,大语言模型(Large Language Models, LLMs)因其强大的语言理解和生成能力而备受关注。OpenWebUI ,原名 Ollama WebUI ,是一款专为大语言模型(LLM)设计的先进 Web 交互…

pdf文件怎么转换为jpg图片?这几种转换方法操作起来很简单!

pdf文件怎么转换为jpg图片?在数字化洪流席卷职场的当下,PDF文档虽一度稳坐信息传输与储存的宝座,却逐渐显露出其在效率与便捷性追求中的疲态,随着技术疆界的不断拓宽,我们愈发深刻地意识到,PDF那复杂的格式…

Python array的特点及使用

1、Python array的特点及使用 1.1、python array为什么只能接收指定类型数据 array 模块提供了一种叫做 array 的数据结构,它表示一块连续的内存空间,所有的元素必须是相同的类型。这是因为在内存中,数组元素存储在连续的位置上&#xff0c…

【256 Days】我的创作纪念日

目录 🌼01 机缘 🌼02 收获 🌼03 日常 🌼04 成就 🌼05 憧憬 最近收到官方来信, 突然发现,不知不觉间,距离发布的第一篇博客已过256天,这期间我经历了春秋招、毕业答辩…