非统一存储器存取环境下的存储器检测方法 【技术领域】
本发明是关于一种存储器检测方法, 尤其是关于一种非统一存储器存取 (NUMA) 环境下的存储器检测方法。背景技术
现今, 非统一存储器存取 (Non Uniform Memory Access, 以下简称 NUMA) 技术可以 使众多服务器像单一系统那样运转, 同时保留小系统便于编程和管理的优点。在含有许多 中央处理单元 (Central Processing Unit, 以下简称 CPU) 的电脑上, NUMA 硬件可将专用存 储器与 CPU 配对, 进而大幅改善效能。
目前, 硬件的趋势已走向可提供多个系统总线, 而每一个总线都可服务一小组处 理器。每一组处理器都有自己的存储器, 可能的话, 也会有自己的输入 / 输出 (I/O) 通道。 不过, 每个 CPU 都可存取与使用相同方法设计的其他群组相关联的存储器。每一个群组就 称为 NUMA 节点 (node)。NUMA 节点内的 CPU 数目取决于硬件供应商。存取本机存储器会比 存取与其他 NUMA 节点相关联的存储器更快。
在 NUMA 硬件上, 有些存储器区域实际上是位于其他区域的不同总线上。 因为 NUMA 使用本机和外部存储器, 所以存取某些存储器区域的时间有时会比存取其他区域更久。 “本 机存储器” 和 “外部存储器” 通常是用来参考目前执行的执行线程。本机存储器是与目前 执行的执行线程的 CPU 位于相同节点上的存储器。不属于目前执行的执行线程节点的存储 器, 就是外部存储器。外部存储器也称为 “远端存储器” 。
NUMA 的主要优点是延展性。NUMA 架构是为了超越对称性多重处理 (Symmetric Multiprocessing, 简称 SMP) 架构的延展性限制而设计的。使用 SMP 时, 所有存储器存取都 会公佈到相同共用存储器总线。这适合只有少数几个 CPU 的时候使用, 当有几十个甚至几 百个 CPU 争相存取共用存储数目, 并利用高速互连的方式来连接不同的节点。
已知的 NUMA 环境下的存储器检测方法只是简单的通过驱动程序实现了分配实体 存储器对其进行检测的功能。并没有能够利用 NUMA 系统本身所固有的硬件环境特点来进 行更加优化的存储器检测处理, 因此通过优化现有的测试方法, 测试压力及测试效率还有 进一步提升的空间。
请参考图 1, 此图为现有技术的 NUMA 环境下的存储器检测方法所运行的系统方块 图。如图所示, 现有技术的 NUMA 环境下的存储器检测方法在具有多个 CPU 及其专属存储器 的 NUMA 硬件架构的环境中仅仅通过一个存储器测试执行线程 10 来遍历测试所有的实体存 储器, 现有技术的这种检测方法存有诸多缺陷或限制, 特别是 :
1、 没有能够利用多 CPU 的硬件环境来尽可能地并行作业以提升系统的测试压力。
2、 存储器测试执行线程始终绑定在一个固定的 CPU 上, 这样当测试远端存储器 ( 属于其他 CPU 的专属存储器 ) 的时候, 访问及存取速度会大幅降低, 进而严重影响测试效 率及测试压力。发明内容 为了解决上述现有技术中的问题与缺陷, 本发明的目的在于提供一种可减少测试 用时并可大幅提升测试压力的 NUMA 环境下的存储器检测方法。
本发明所提供的一种 NUMA 环境下的存储器检测方法, 包含以下步骤 :
获得 NUMA 环境下系统的节点个数 ;
根据节点个数, 将存储器测试程序的执行线程复制多份 ;
将每一执行线程分别绑定到不同的 CPU 上加以执行 ; 以及
利用各执行线程并行地测试各 CPU 专属的存储器。
其中, 上述本发明所提供的一种 NUMA 环境下的存储器检测方法中, 利用各执行线 程并行地测试各 CPU 专属的存储器可进一步包含如下步骤 :
当各执行线程运行之后, 分别在各自的节点中利用驱动程序分配实体存储器 ;
将实体存储器映射到用户进程空间 ; 以及
应用针对各种不同目的的演算法对各存储器进行读写验证, 当全部的读写验证结 果均一致时, 则测试通过, 否则报错并退出测试。
此外, 上述本发明的方法中, 各执行线程以 CPU 间规格书上的相互间的访问延迟 时间较短的单方向访问和测试存储器, 或者在某两个 CPU 空闲时单方向互测存储器。
综上所述, 本发明所提供的一种 NUMA 环境下的存储器检测方法, 由于通过复制多 份存储器测试程序的执行线程, 并将每一个执行线程分别绑定到不同的 CPU 上面去并行的 测试各 CPU 专属的存储器, 因而相对于现有技术具有如下的优点 :
1、 由于利用 NUMA 架构的硬件特性而使得存储器测试的并行度大幅提高, 进而因 测试并行度的提升使系统的测试压力得到提升。
2、 由于每一份独立的存储器测试执行线程都不会去访问远端存储器, 因而可使测 试所需时间大幅降低, 同时提高了测试效率及测试压力。
附图说明
图 1 为现有技术的 NUMA 环境下的存储器检测方法所运行的系统方块图 ; 图 2 为本发明一实施例的 NUMA 环境下的存储器检测方法的整体步骤流程图 ; 图 3 为图 2 中步骤 104 的分解步骤流程图 ; 以及 图 4 为本发明一实施例的 NUMA 环境下的存储器检测方法所运行的系统方块图。 附图标记说明 10 存储器测试执行线程具体实施方式
有关本发明的特征与实作, 兹配合图示作较佳实施例详细说明如下。
请参考图 2, 此图为本发明一实施例的 NUMA 环境下的存储器检测方法的整体步骤 流程图, 如图所示, 本发明的一种 NUMA 环境下的存储器检测方法, 包含以下步骤 :
获得 NUMA 环境下系统的节点个数 ( 步骤 101) ;
根据节点个数, 将存储器测试程序的执行线程复制多份 ( 步骤 102) ;
将每一执行线程分别绑定到不同的 CPU 的上加以执行 ( 步骤 103) ; 以及利用各执行线程并行地测试各 CPU 专属的存储器 ( 步骤 104)。
其中, 如图 3 所示, 上述本发明一实施例的一种 NUMA 环境下的存储器检测方法中 的步骤 104 可进一步包含如下步骤 :
当各执行线程运行之后, 分别在各自的节点中利用驱动程序分配实体存储器 ( 步 骤 1041) ;
将实体存储器映射到用户进程空间 ( 步骤 1042) ;
应用针对各种不同目的的演算法对各存储器进行读写验证 ( 步骤 1043) ;
判断读写验证结果是否均一致 ( 步骤 1044) ; 以及
当全部的读写验证结果均一致时, 则测试通过 ( 步骤 1045), 否则报错并退出测试 ( 步骤 1046)。
此外, 上述本发明一实施例的 NUMA 环境下的存储器检测方法中, 各执行线程以 CPU 间规格书上的相互间的访问延迟时间较短的单方向访问和测试存储器, 或者在某两个 CPU 空闲时单方向互测存储器。
现在请参考图 4, 此图为本发明一实施例的 NUMA 环境下的存储器检测方法所运行 的系统方块图, 如图所示, 应用本发明的存储器检测方法, 在具体测试的时候首先会获得系 统的节点 (CPU 与本地存储器的集合称为节点 ) 个数, 随后根据节点的个数派生出多个存储 器测试执行线程 10, 然后分别将各执行线程 10 绑定到每个 CPU 上面去执行, 当存储器测试 执行线程 10 运行起来之后, 首先会分别在各自的节点中利用驱动程序 (driver) 分配实体 存储器, 随后将它们映射到用户进程空间, 接下来就应用针对各种不同目的的演算法来对 存储器进行读写验证, 当所有的读写验证结果都一致时, 则测试通过。 当在上述测试过程中 出现读写验证不一致的情况时, 就说明系统存储器存有相应的品质缺陷, 进而使问题被检 测出来。因此, 採用如上所述的本发明的 NUMA 环境下的存储器检测方法将会很好地解决现 有技术的 NUMA 环境下的存储器检测方法所存在的诸多问题。
当然, 本发明还可有其它多种实施例, 在不背离本发明精神及其实质的情况下, 熟 悉本领域的普通技术人员当可根据本发明做出各种相应的改变和变形, 但这些相应的改变 和变形都应属于本发明所附的权利要求的保护范围。