基于物理内存分配映射的内存检测方法
【技术领域】
[0001 ] 本发明涉及内存检测技术领域,尤其涉及一种基于物理内存分配映射的内存检测方法。
【背景技术】
[0002]现有的内存检测方法通常基于两种应用环境:一种基于B1S环境,另一种基于OS环境。
[0003]基于B1S环境的检测方法的运行环境相对单纯,且更贴近底层硬件,通常测试效果较好,错误定位较为准确。但是由于受限运行环境,难以执行并行化处理,因此测试效率通常相对较低。同时也不太适合执行更大规模的整合测试。
[0004]基于OS环境的检测方法基于OS环境,通常灵活性较好适合于大规模应用,但因为存在物理内存信息被OS以逻辑形式屏蔽的缺陷,通常检测效果较差,通常可以发现问题的存在,但是无法定位到具体的位置。
[0005]以检测工具memtester为例,虽然其程序声称可以实现基于物理内存的分配测试,但实际上该检测工具所采用的技术手段是映射/dev/mem设备文件,该方法在稍早一些的发行版本中出于安全性的考虑已被禁止使用,因此并不能实现相关功能。
【发明内容】
[0006]在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
[0007]本发明提供一种能执行并行处理,并实现准确定位的基于物理内存分配映射的内存检测方法。
[0008]本发明提供一种基于物理内存分配映射的内存检测方法,包括:
[0009]用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序;
[0010]所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间;
[0011]所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试;
[0012]当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。
[0013]本发明提供的基于物理内存分配映射的内存检测方法通过将物理内存分配映射技术与内存检测技术结合起来,实现了对内存进行高效并行检测处理,并准确有效地对出错位置进行定位,同时还可以采用多种内存检测算法进行检测,应用范围较为广泛,使用更灵活。综上所述,本发明基于物理内存分配映射的内存检测方法具有检测效率高、定位准确、应用范围广等优点。
【附图说明】
[0014]参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。附图中的部件只是为了示出本发明的原理。在附图中,相同的或类似的技术特征或部件将采用相同或类似的附图标记来表示。
[0015]图1为本发明基于物理内存分配映射的内存检测方法一种实施方式的流程示意图。
[0016]图2为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S20的流程示意图。
[0017]图3为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中步骤S20的流程示意图。
[0018]图4为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S40的流程示意图。
[0019]图5为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S80的流程示意图。
[0020]图6为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,在一个60核处理器的环境中启动60个测试线程测试60G内存的内存分配占用状况的示意图。
[0021]图7为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,用户态测试程序的地址空间的逻辑地址与物理内存地址的对应关系示意图。
[0022]图8为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,出错物理内存地址与SMB1S信息对应关系示意图。
【具体实施方式】
[0023]下面参照附图来说明本发明的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
[0024]图1为本发明基于物理内存分配映射的内存检测方法一种实施方式的流程示意图。
[0025]如图1所示,在本实施方式中,本发明基于物理内存分配映射的内存检测方法包括:
[0026]S20:用户态测试程序向内核模块请求分配物理内存,所述内核模块对物理内存进行检索,分配空闲的待测物理内存给所述用户态测试程序。
[0027]S40:所述内核模块将所述待测物理内存映射到所述用户态测试程序的地址空间。
[0028]S60:所述用户态测试程序通过运行内存检测算法对所述待测物理内存进行读写校验测试。
[0029]S80:当所述读写校验测试出错时,根据所述映射获取出错物理内存地址,根据所述出错物理内存地址查找到内存插槽。
[0030]图2为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤S20的流程示意图。
[0031 ] 如图2所示,步骤S20包括:
[0032]S23:用户态测试程序向内核模块请求分配物理内存。
[0033]S25:所述内核模块扫描物理内存使用状况信息,锁定当前状况为空闲的待测物理内存,将所述待测物理内存的页号返回给所述用户态测试程序。
[0034]S27:所述内核模块更新所述物理内存使用状况信息。
[0035]优选地,当所述用户态测试程序运行在多核处理器环境下时,所述用户态测试程序通过每个处理器核心发起一个测试线程。所述步骤S25还包括:所述内核模块将所述待测物理内存平均分配给所述测试线程。
[0036]图6为本发明基于物理内存分配映射的内存检测方法一种优选实施方式中,在一个60核处理器的环境中启动60个测试线程测试60G内存的内存分配占用状况的示意图。如图6所示,在测试过程中内核模块将60G内存分配给所述测试线程。
[0037]图3为图2所示步骤S20的优选实施方式的流程示意图。
[0038]相较于图2所示步骤S20,图3所示步骤S20还包括:
[0039]S21:加载支持物理内存相关操作的内核模块进入系统内核空间。
[0040]图4为本发明基于物理内存分配映射的内存检测方法一种实施方式中步骤