CN108958993B - 一种基于Linux的在线内存检测器MEMDOG - Google Patents
一种基于Linux的在线内存检测器MEMDOG Download PDFInfo
- Publication number
- CN108958993B CN108958993B CN201710351727.8A CN201710351727A CN108958993B CN 108958993 B CN108958993 B CN 108958993B CN 201710351727 A CN201710351727 A CN 201710351727A CN 108958993 B CN108958993 B CN 108958993B
- Authority
- CN
- China
- Prior art keywords
- memory
- user space
- timer
- linux
- reliable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明专利公开了一种基于Linux的在线内存检测器MEMDOG,MEMDOG主要包括四个部分:检测算法框架、可靠内存池、应用程序内存迁移和定时器。检测算法框架从Linux内存管理器中请求内存,使用用户选中的内存检测算法对请求的内存进行检测;可靠内存池中存放经过内存检测算法检测没有错误的内存,应用程序需要从该内存池中获取内存,从而保证应用程序使用的内存都是经过检测的;内存错误会随着时间的延续而发生,因此应用程序内存迁移部分会定期将应用程序的数据和代码从过期的内存迁移到最近检测过的内存中,这需要借助定时器;定时器的另一个作用是定期更新可靠内存池,将内存池中过期的内存释放给Linux***。MEMDOG在线内存检测器解决了应用程序受到内存错误影响的问题。
Description
技术领域
本发明专利属于计算机软件类,属于操作***领域,涉及MEMDOG:一种基于Linux的在线内存检测器。
背景技术
随着内存芯片的体积越来越小,容量越来越大,表示一个位(bit)的存储单元在不断的缩小,内存芯片更容易受到外部因素(高温、灰尘、宇宙射线等)的影响而发生错误。这些错误中最常见的是内存单元中的一个或者多个位发生了翻转(flip),通常它们会造成操作***和应用程序崩溃;危害更大的是静默错误,即发生错误的内存被程序使用,却没有被发觉,程序仍然继续运行,这种情况会造成程序的运行结果不确定,出错原因难以查找。
Google的工程师Bianca Schroeder在从2006年1月到2008年6月为期2.5年的时间内对Google机房中大量的机器进行跟踪,以统计内存错误发生的概率,研究结果表明每年有超过8%的内存芯片会受到硬件错误的影响;来自微软的工程师Edmund B.Nightingale所做的研究结果表明内存错误是造成机器崩溃的三大原因之一。因此对内存可靠性的研究具有非常重要的意义,而目前现存的内存检测器较少且效率低下,基于这个原因本文开发了一种基于Linux的在线内存检测器。
发明内容
本发明提供了一种基于Linux的在线内存检测器MEMDOG,解决了应用程序受到内存错误影响的问题。
为解决上述技术问题,本发明采用如下技术方案:一种基于Linux的在线内存检测器MEMDOG,它包括Linux内存管理器、检测算法框架、检测算法、用户空间接口a、错误内存收集器、用户空间内存错误报告程序、可靠内存池、可靠内存池定时器、用户空间接口b、***中所有的进程、应用程序内存迁移定时器、用户空间接口c、总开关,用户空间接口d,其特征是:所述的Linux内存管理器是Linux操作***中的内存管理子***;所述的检测算法框架是用来收集各种检测算法的一个容器;所述的检测算法是指被收集在检测算法框架中,用来检测内存中是否包含错误的算法;所述的用户空间接口a是一个用来供用户选择检测算法的配置文件;所述的错误内存收集器是一个用来收集包含错误的内存的链表;所述的用户空间内存错误报告程序是一个用于向用户报告检测过程中发现的内存错误的程序;所述的可靠内存池是一个收集经过检测算法检测没有发现错误的内存,并且为应用程序分配内存的链表;所述的可靠内存池定时器是一个周期性的对可靠内存池中过期的内存进行清理的定时器;所述的用户空间接口b是一个用来供用户设置可靠内存池定时器周期和可靠内存池中内存过期期限的配置文件;所述的***中所有的进程是指***中所有的应用程序;所述的应用程序内存迁移定时器是一个周期性的将应用程序使用的超过一定期限的内存中的数据和代码迁移到最近检测过的内存中的定时器;所述的用户空间接口c是一个设置内存迁移定时器周期和应用程序使用的内存的过期期限的定时器;所述的总开关是打开和关闭MEMDOG的开关;所述的用户空间接口d是一个操作MEMDOG总开关的用户空间接口。
本发明的技术方案的工作原理:用户通过用户空间接口a设置MEMDOG使用的内存检测算法,检测算法框架从Linux内存管理器中请求内存,使用用户选中的内存检测算法对请求的内存进行检测。如果检测算法检测到内存中包含错误,就将包含错误的内存放入到错误内存收集器中,保证这些内存不会再被程序使用到,并使用用户空间内存错误报告程序报告错误;如果被检测的内存中没有包含错误,将内存放入到可靠内存池中供应用程序使用,保证了应用程序使用内存的可靠性。因为内存会随着时间的增长而发生错误,可靠内存池定时器会周期性的将可靠内存池中超过一定时间期限的内存进行释放,可靠内存池定时器的时间周期和内存的过期期限可以由用户通过用户空间接口b进行设置。内存迁移定时器会周期性的对应用程序使用的超过一定期限的内存中的数据和代码进行迁移,将它们迁移到最近检测过的内存中,防止内存使用时间过长而发生错误,内存迁移定时器的时间周期和应用程序使用内存的过期期限可以由用户通过用户空间接口c设置。通过用户空间接口d可以打开和关闭MEMDOG。
本发明的有益效果为:
1、保护运行在Linux操作***中的应用程序不受内存硬件错误的影响。
2、提出了一种新的高效的内存可靠性的机制,为内存可靠性机制的多样性做出了贡献。
附图说明
附图1为本发明的总体设计方案示意图。图中,1为Linux内存管理器,2为用户空间接口a,3为检测算法,4为检测算法框架,5为错误内存收集器,6为用户空间内存错误报告程序,7为可靠内存池,8 为可靠内存池定时器,9为用户空间接口b,10为***中所有的进程,11为应用程序内存迁移定时器,12 为用户空间接口c,13为总开关,14为用户空间接口d。
具体实施方式
用户使用设置检测算法的用户空间接口a选择需要的检测算法,使用设置可靠内存池定时器的用户空间接口b设置可靠内存池定时器的周期和可靠内存池中内存的过期期限,使用设置内存迁移定时器的用户空间接口c设置内存迁移周期和应用程序内存的过期期限,使用用户空间接口d使能在线内存检测器,此后在线内存检测器进入开启状态,保护应用程序不受内存错误的影响。
实施例1
用户通过Linux操作***提供的命令行工具terminal进入到设置检测算法的用户空间接口a所在的目录,向设置检测算法的用户空间接口a中写入March检测算法;进入到设置可靠内存池定时器的用户空间接口b所在的目录,向设置可靠内存池定时器的用户空间接口b写入定时器的时间周期和内存过期期限分别为3600秒和7200秒;进入到设置内存迁移定时器的用户空间接口c所在的目录,向设置内存迁移定时器的用户空间接口c中写入内存迁移周期和内存过期期限分别为7200秒和10800秒;进入到用户空间接口d所在的目录,向用户空间接口d中写入“yes”打开在线内存检测器MEMDOG;此后***中的应用程序就会进入到MEMDOG的保护状态之下,每隔3600秒可靠内存池定时器就会触发一次,检测可靠内存池中的内存是否超过了过期期限7200秒;每隔7200秒内存迁移定时器就会触发一次,检测***中应用程序使用的内存是否超过了过期期限10800秒,如果MEMDOG检测到内存错误会通过用户空间错误报告程序向用户报告错误。
Claims (8)
1.一种基于Linux的在线内存检测器(也可称为MEMDOG),它包括Linux内存管理器、检测算法框架、检测算法用户空间接口a、错误内存收集器、用户空间内存错误报告程序、可靠内存池、可靠内存池定时器、用户空间接口b、***中所有的进程、应用程序内存迁移定时器、用户空间接口c、总开关,用户空间接口d,其特征是:所述的Linux内存管理器是Linux操作***中的内存管理子***;所述的检测算法框架是用来收集各种检测算法的一个容器;所述的检测算法是指被收集在检测算法框架中,用来检测内存中是否包含错误的算法;所述的用户空间接口a是一个用来供用户选择检测算法的配置文件;所述的错误内存收集器是一个用来收集包含错误的内存的链表;所述的用户空间内存错误报告程序是一个用于向用户报告检测过程中发现的内存错误的程序;所述的可靠内存池是一个收集经过检测算法检测没有发现错误的内存,并且为应用程序分配内存的链表;所述的可靠内存池定时器是一个周期性的对可靠内存池中过期的内存进行清理的定时器;所述的用户空间接口b是一个用来供用户设置可靠内存池定时器周期和可靠内存池中内存过期期限的配置文件;所述的***中所有的进程是指***中所有的应用程序;所述的应用程序内存迁移定时器是一个周期性的将应用程序使用的,超过一定期限的内存中的数据和代码迁移到最近检测过的内存中的定时器;所述的用户空间接口c是一个设置内存迁移定时器周期和应用程序使用的内存的过期期限的定时器;所述的总开关是打开和关闭MEMDOG的开关;所述的用户空间接口d是一个操作MEMDOG总开关的用户空间接口。
2.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的检测算法框架是实现在Linux内核之中,检测算法框架提供了一个算法注册接口用于收集内存检测算法,被收集在检测算法框架中的检测算法可以由用户空间接口进行选择。
3.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的错误内存收集器是一个存在于内核中的链表,并且被用于收集包含错误的内存。
4.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的用户空间内存错误报告程序的执行是由内核触发的。
5.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的可靠内存池是实现在内核空间的一个链表,并且被用于收集经过内存检测算法检测的内存。
6.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的可靠内存池定时器会周期性的对可靠内存池中的内存进行检査,将过期的内存进行释放,并且可靠内存池定时器的周期和内存过期期限可以由用户空间接口b进行设置。
7.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的内存迁移定时器会周期性的对***中应用程序使用的内存进行检查,将它们使用的超过一定期限的内存中的数据和代码迁移到最近检测过的内存中,并且内存迁移定时器的周期和内存过期期限可以由用户空间接口c进行设置。
8.根据权利要求1所述的一种基于Linux的在线内存检测器(也可称为MEMDOG),其特征在于所述的总开关可以打开和关闭在线内存检测器MEMDOG,并且总开关可以由用户空间接口d进行设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351727.8A CN108958993B (zh) | 2017-05-18 | 2017-05-18 | 一种基于Linux的在线内存检测器MEMDOG |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351727.8A CN108958993B (zh) | 2017-05-18 | 2017-05-18 | 一种基于Linux的在线内存检测器MEMDOG |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108958993A CN108958993A (zh) | 2018-12-07 |
CN108958993B true CN108958993B (zh) | 2021-11-19 |
Family
ID=64461860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710351727.8A Active CN108958993B (zh) | 2017-05-18 | 2017-05-18 | 一种基于Linux的在线内存检测器MEMDOG |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108958993B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111223516B (zh) * | 2019-12-26 | 2021-09-07 | 曙光信息产业(北京)有限公司 | Raid卡检测方法以及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及*** |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式***的内存控制方法 |
CN106598871A (zh) * | 2016-12-29 | 2017-04-26 | 山东鲁能智能技术有限公司 | Linux下的崩溃文件自动化分析方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501389B1 (en) * | 2015-08-20 | 2016-11-22 | International Business Machines Corporation | Test machine management |
-
2017
- 2017-05-18 CN CN201710351727.8A patent/CN108958993B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110044A (zh) * | 2007-08-28 | 2008-01-23 | 中兴通讯股份有限公司 | 一种内存监控管理的方法及*** |
CN102915276A (zh) * | 2012-09-25 | 2013-02-06 | 武汉邮电科学研究院 | 一种用于嵌入式***的内存控制方法 |
CN106598871A (zh) * | 2016-12-29 | 2017-04-26 | 山东鲁能智能技术有限公司 | Linux下的崩溃文件自动化分析方法及*** |
Non-Patent Citations (2)
Title |
---|
MEI: A Light Weight Memory Error Injection Tool for Validating Online Memory Testers;Xiaoqiang Wang等;《IEEE》;20170116;全文 * |
MEMDOG:一种基于Linux的在线内存检测器;王小强;《万方数据》;20180613;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108958993A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100419695C (zh) | 将进程删除错误引向应用程序 | |
Schroeder et al. | DRAM errors in the wild: a large-scale field study | |
Hwang et al. | Cosmic rays don't strike twice: Understanding the nature of DRAM errors and the implications for system design | |
Sridharan et al. | A study of DRAM failures in the field | |
Mukherjee et al. | Cache scrubbing in microprocessors: Myth or necessity? | |
CN111552590B (zh) | 一种电力二次设备内存位翻转的检测恢复方法及*** | |
US8095759B2 (en) | Error management firewall in a multiprocessor computer | |
Alter et al. | SSD failures in the field: symptoms, causes, and prediction models | |
CN100383746C (zh) | 将合并缓冲器的***删除差错转换成进程删除差错 | |
WO2017079454A1 (en) | Storage error type determination | |
Messer et al. | Susceptibility of commodity systems and software to memory soft errors | |
CN105224888B (zh) | 一种基于安全预警技术的磁盘阵列数据保护*** | |
Siddiqua et al. | Analysis and modeling of memory errors from large-scale field data collection | |
CN112559395B (zh) | 基于双Soc存储***异常处理机制的继电保护装置及方法 | |
US10095570B2 (en) | Programmable device, error storage system, and electronic system device | |
Anderson et al. | Neutron radiation beam results for the Xilinx UltraScale+ MPSoC | |
Bottoni et al. | Heavy ions test result on a 65nm sparc-v8 radiation-hard microprocessor | |
US20200387423A1 (en) | Electronic circuit with integrated seu monitor | |
CN108958993B (zh) | 一种基于Linux的在线内存检测器MEMDOG | |
Meza | Large scale studies of memory, storage, and network failures in a modern data center | |
Dweik et al. | Reliability-aware exceptions: Tolerating intermittent faults in microprocessor array structures | |
CN105068969B (zh) | 用于数字信号处理平台架构的单粒子效应防护***及方法 | |
US20040003313A1 (en) | Black box recorder using machine check architecture in system management mode | |
CN104167224A (zh) | 降低dram软错误的方法 | |
CN103514071A (zh) | 非破坏性的内存在线测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |