CN104809039A - 基于物理内存分配映射的内存检测方法 - Google Patents
基于物理内存分配映射的内存检测方法 Download PDFInfo
- Publication number
- CN104809039A CN104809039A CN201510201575.4A CN201510201575A CN104809039A CN 104809039 A CN104809039 A CN 104809039A CN 201510201575 A CN201510201575 A CN 201510201575A CN 104809039 A CN104809039 A CN 104809039A
- Authority
- CN
- China
- Prior art keywords
- physical memory
- memory
- test procedure
- user space
- kernel module
- 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.)
- Granted
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本发明提供一种基于物理内存分配映射的内存检测方法,包括:用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序;所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间;所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试;当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。本发明通过将物理内存分配映射技术与内存检测技术结合,实现了对内存进行高效并行检测处理,并准确有效地对出错位置进行定位,具有检测效率高、定位准确、应用范围广等优点。
Description
技术领域
本发明涉及内存检测技术领域,尤其涉及一种基于物理内存分配映射的内存检测方法。
背景技术
现有的内存检测方法通常基于两种应用环境:一种基于BIOS环境,另一种基于OS环境。
基于BIOS环境的检测方法的运行环境相对单纯,且更贴近底层硬件,通常测试效果较好,错误定位较为准确。但是由于受限运行环境,难以执行并行化处理,因此测试效率通常相对较低。同时也不太适合执行更大规模的整合测试。
基于OS环境的检测方法基于OS环境,通常灵活性较好适合于大规模应用,但因为存在物理内存信息被OS以逻辑形式屏蔽的缺陷,通常检测效果较差,通常可以发现问题的存在,但是无法定位到具体的位置。
以检测工具memtester为例,虽然其程序声称可以实现基于物理内存的分配测试,但实际上该检测工具所采用的技术手段是映射/dev/mem设备文件,该方法在稍早一些的发行版本中出于安全性的考虑已被禁止使用,因此并不能实现相关功能。
发明内容
在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
本发明提供一种能执行并行处理,并实现准确定位的基于物理内存分配映射的内存检测方法。
本发明提供一种基于物理内存分配映射的内存检测方法,包括:
用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序;
所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间;
所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试;
当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。
本发明提供的基于物理内存分配映射的内存检测方法通过将物理内存分配映射技术与内存检测技术结合起来,实现了对内存进行高效并行检测处理,并准确有效地对出错位置进行定位,同时还可以采用多种内存检测算法进行检测,应用范围较为广泛,使用更灵活。综上所述,本发明基于物理内存分配映射的内存检测方法具有检测效率高、定位准确、应用范围广等优点。
附图说明
参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
图1为本发明基于物理内存分配映射的内存检测方法一种实施方式的流程示意图。
图2为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S20的流程示意图。
图3为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中步骤S20的流程示意图。
图4为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S40的流程示意图。
图5为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S80的流程示意图。
图6为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,在一个60核处理器的环境中启动60个测试线程测试60G内存的内存分配占用状况的示意图。
图7为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,用户态测试程序的地址空间的逻辑地址与物理内存地址的对应关系示意图。
图8为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,出错物理内存地址与SMBIOS信息对应关系示意图。
具体实施方式
下面参照附图来说明本发明的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
图1为本发明基于物理内存分配映射的内存检测方法一种实施方式的流程示意图。
如图1所示,在本实施方式中,本发明基于物理内存分配映射的内存检测方法包括:
S20:用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序。
S40:所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间。
S60:所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试。
S80:当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。
图2为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S20的流程示意图。
如图2所示,步骤S20包括:
S23:用户态测试程序向内核模块请求分配物理内存。
S25:所述内核模块扫描物理内存使用状况信息,锁定当前状况为空闲的待测物理内存,将所述待测物理内存的页号返回给所述用户态测试程序。
S27:所述内核模块更新所述物理内存使用状况信息。
优选地,当所述用户态测试程序运行在多核处理器环境下时,所述用户态测试程序通过每个处理器核心发起一个测试线程。所述步骤S25还包括:所述内核模块将所述待测物理内存平均分配给所述测试线程。
图6为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,在一个60核处理器的环境中启动60个测试线程测试60G内存的内存分配占用状况的示意图。如图6所示,在测试过程中内核模块将60G内存分配给所述测试线程。
图3为图2所示步骤S20的优选实施方式的流程示意图。
相较于图2所示步骤S20,图3所示步骤S20还包括:
S21:加载支持物理内存相关操作的内核模块进入***内核空间。
图4为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S40的流程示意图。
如图4所示,在本实施方式中,步骤S40包括:
S43:所述用户态测试程序发送所述页号和映射请求至所述内核模块。
S45:所述内核模块以所述页号作为参数对页表进行配置,完成所述待测物理内存对所述用户态测试程序的地址空间的映射。
优选地,所述步骤S60中,所述测试线程各自运行所述内存检测算法,并行对各自分配到的待测物理内存进行读写校验测试。
所述读写校验测试包括对所述待测物理内存分别进行写操作和读操作并进行比对校验,当比对结果一致时校验结果为正常,当比对结果不一致时校验结果为错误。
图5为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S80的流程示意图。
如图5所示,在本实施方式中,步骤S80包括:
S83:当所述读写校验测试出错时,根据所述映射获取出错物理内存地址。
S85:将所述出错物理内存地址与SMBIOS信息进行比对,得到所述出错物理内存地址对应的内存插槽。
图7为完成所述映射后,所述地址空间的逻辑地址和所述待测物理内存的物理地址的对应关系示意图。图8为出错物理内存地址与SMBIOS信息对应关系示意图。
如图7和图8所示,通过校验出错的逻辑地址,和所述逻辑地址与所述物理的对应关系,获得出错物理内存地址。在图8所示示例中,当出错物理内存地址在“0x00000000000”(图中所示starting address)与“0x0007FFFFFFF”(图中所示ending address)之间时,找到相对应的type20中的物理设备句柄(physical device handle)0x0024,从而在对应的句柄0x0024中找到定位信息(locator):CPU0_DimmA0,最终准确定位到出错的内存插槽。
综上所述,本发明提供的基于物理内存分配映射的内存检测方法通过将物理内存分配映射技术与内存检测技术结合起来,实现了对内存进行高效并行检测处理,并准确有效地对出错位置进行定位,同时还可以采用多种内存检测算法进行检测,应用范围较为广泛,使用更灵活。本发明具有检测效率高、定位准确、应用范围广等优点。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于物理内存分配映射的内存检测方法,其特征在于,包括:
用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序;
所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间;
所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试;
当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。
2.根据权利要求1所述的内存检测方法,其特征在于,所述“用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序”包括:
用户态测试程序向内核模块请求分配物理内存;
所述内核模块扫描物理内存使用状况信息,锁定当前状况为空闲的待测物理内存,将所述待测物理内存的页号返回给所述用户态测试程序;
所述内核模块更新所述物理内存使用状况信息。
3.根据权利要求2所述的内存检测方法,其特征在于,所述用户态测试程序运行在多核处理器环境下,所述用户态测试程序通过每个处理器核心发起一个测试线程,所述“所述内核模块扫描物理内存使用状况信息,锁定当前状况为空闲的待测物理内存,将所述待测物理内存的页号返回给所述用户态测试程序”还包括:
所述内核模块将所述待测物理内存平均分配给所述测试线程。
4.根据权利要求2或3所述的内存检测方法,其特征在于,所述“用户态测试程序向内核模块请求分配物理内存”之前还包括:
加载支持物理内存相关操作的内核模块进入***内核空间。
5.根据权利要求4所述的内存检测方法,其特征在于,所述“所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间”包括:
所述用户态测试程序发送所述页号和映射请求至所述内核模块;
所述内核模块以所述页号作为参数对页表进行配置,完成所述待测物理内存对所述用户态测试程序的地址空间的映射。
6.根据权利要求3所述的内存检测方法,其特征在于,所述测试线程各自运行所述内存检测算法,并行对各自分配到的待测物理内存进行读写校验测试。
7.根据权利要求6所述的内存检测方法,其特征在于,所述读写校验测试包括对所述待测物理内存分别进行写操作和读操作并进行比对校验,当比对结果一致时校验结果为正常,当比对结果不一致时校验结果为错误。
8.根据权利要求1所述的内存检测方法,其特征在于,所述“当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽”包括:
当所述读写校验测试出错时,根据所述映射获取出错物理内存地址;
将所述出错物理内存地址与SMBIOS信息进行比对,得到所述出错物理内存地址对应的内存插槽。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510201575.4A CN104809039B (zh) | 2015-04-24 | 2015-04-24 | 基于物理内存分配映射的内存检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510201575.4A CN104809039B (zh) | 2015-04-24 | 2015-04-24 | 基于物理内存分配映射的内存检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104809039A true CN104809039A (zh) | 2015-07-29 |
CN104809039B CN104809039B (zh) | 2019-01-01 |
Family
ID=53693884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510201575.4A Active CN104809039B (zh) | 2015-04-24 | 2015-04-24 | 基于物理内存分配映射的内存检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104809039B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824730A (zh) * | 2016-03-16 | 2016-08-03 | 北京珠穆朗玛移动通信有限公司 | 一种硬件诊断修复方法及装置 |
CN107402813A (zh) * | 2017-06-21 | 2017-11-28 | 努比亚技术有限公司 | 一种资源分配的方法及移动终端、计算机可读存储介质 |
TWI620191B (zh) * | 2016-12-13 | 2018-04-01 | 英業達股份有限公司 | 依記憶體模組之物理位址範圍測試記憶體之系統及方法 |
CN108132860A (zh) * | 2016-12-01 | 2018-06-08 | 英业达科技有限公司 | 依存储器模块的物理地址范围测试存储器的***及方法 |
CN108984423A (zh) * | 2017-05-31 | 2018-12-11 | 龙芯中科技术有限公司 | 一种***级芯片的地址空间验证方法和*** |
CN109901956A (zh) * | 2017-12-08 | 2019-06-18 | 英业达科技有限公司 | 内存整体测试的***及其方法 |
CN111221685A (zh) * | 2018-11-26 | 2020-06-02 | 中兴通讯股份有限公司 | 一种物理内存检测方法、装置、设备及可读存储介质 |
CN113821369A (zh) * | 2021-11-23 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种内存巡检的方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040181656A1 (en) * | 2003-03-10 | 2004-09-16 | Dell Products L.P. | System and method for testing memory during boot operation idle periods |
CN1932773A (zh) * | 2005-09-16 | 2007-03-21 | 英业达股份有限公司 | 物理存储器的测试方法 |
CN1991770A (zh) * | 2005-12-28 | 2007-07-04 | 英业达股份有限公司 | Linux***下物理内存的测试方法 |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN102841832A (zh) * | 2011-06-24 | 2012-12-26 | 鸿富锦精密工业(深圳)有限公司 | 出错内存条定位***及方法 |
-
2015
- 2015-04-24 CN CN201510201575.4A patent/CN104809039B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040181656A1 (en) * | 2003-03-10 | 2004-09-16 | Dell Products L.P. | System and method for testing memory during boot operation idle periods |
CN1932773A (zh) * | 2005-09-16 | 2007-03-21 | 英业达股份有限公司 | 物理存储器的测试方法 |
CN1991770A (zh) * | 2005-12-28 | 2007-07-04 | 英业达股份有限公司 | Linux***下物理内存的测试方法 |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN102841832A (zh) * | 2011-06-24 | 2012-12-26 | 鸿富锦精密工业(深圳)有限公司 | 出错内存条定位***及方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824730A (zh) * | 2016-03-16 | 2016-08-03 | 北京珠穆朗玛移动通信有限公司 | 一种硬件诊断修复方法及装置 |
CN108132860A (zh) * | 2016-12-01 | 2018-06-08 | 英业达科技有限公司 | 依存储器模块的物理地址范围测试存储器的***及方法 |
TWI620191B (zh) * | 2016-12-13 | 2018-04-01 | 英業達股份有限公司 | 依記憶體模組之物理位址範圍測試記憶體之系統及方法 |
CN108984423A (zh) * | 2017-05-31 | 2018-12-11 | 龙芯中科技术有限公司 | 一种***级芯片的地址空间验证方法和*** |
CN108984423B (zh) * | 2017-05-31 | 2020-10-27 | 龙芯中科技术有限公司 | 一种***级芯片的地址空间验证方法和*** |
CN107402813A (zh) * | 2017-06-21 | 2017-11-28 | 努比亚技术有限公司 | 一种资源分配的方法及移动终端、计算机可读存储介质 |
CN107402813B (zh) * | 2017-06-21 | 2020-10-30 | 泰州市元和达电子科技有限公司 | 一种资源分配的方法及移动终端、计算机可读存储介质 |
CN109901956A (zh) * | 2017-12-08 | 2019-06-18 | 英业达科技有限公司 | 内存整体测试的***及其方法 |
CN111221685A (zh) * | 2018-11-26 | 2020-06-02 | 中兴通讯股份有限公司 | 一种物理内存检测方法、装置、设备及可读存储介质 |
WO2020108494A1 (zh) * | 2018-11-26 | 2020-06-04 | 中兴通讯股份有限公司 | 一种物理内存检测方法、装置、设备及可读存储介质 |
CN113821369A (zh) * | 2021-11-23 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种内存巡检的方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104809039B (zh) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104809039A (zh) | 基于物理内存分配映射的内存检测方法 | |
US8713568B2 (en) | System and method for detecting deadlock in a multithread program | |
CN103399818B (zh) | 操作***中的死锁检测方法 | |
CN102609254B (zh) | 获取对象级访存行为的方法及装置 | |
CN103116536B (zh) | 存储装置的容量检测方法 | |
CN103488563A (zh) | 并行程序的数据竞争检测方法、装置及多核处理*** | |
WO2015116125A1 (en) | File system analysis in user daemon | |
CN117033003B (zh) | 基于SystemVerilog的内存管理方法、电子设备和介质 | |
CN105159834B (zh) | 一种软件动态测试运行数据提取方法 | |
CN111581217B (zh) | 数据检测方法、装置、计算机设备和存储介质 | |
CN106055467B (zh) | 包括逻辑分析器电路的装置和逻辑分析方法 | |
CN104239170A (zh) | Pci设备测试方法及*** | |
CN109582513A (zh) | 一种基于通用服务器的jbod测试方法及*** | |
CN104182290A (zh) | 除错装置及除错方法 | |
US7350109B2 (en) | System and method for testing a memory using DMA | |
KR20200077297A (ko) | 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치 | |
CN101751283A (zh) | 虚拟机监视器,虚拟机***及客户操作***状态获取方法 | |
CN114428749A (zh) | 用于验证cache的检测器 | |
CN110688266B (zh) | 故障内存条定位方法、装置及存储介质 | |
CN100410889C (zh) | 物理存储器的测试方法 | |
TWI620191B (zh) | 依記憶體模組之物理位址範圍測試記憶體之系統及方法 | |
CN107465762B (zh) | 一种分布式存储***的测试方法及*** | |
US20020026303A1 (en) | Transaction conflict testing method and apparatus | |
CN115658399A (zh) | 硬盘线缆检测方法、装置、电子设备及存储介质 | |
CN108762689B (zh) | 一种自动创建磁盘阵列的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |