CN102362464A - 内存访问监测方法和装置 - Google Patents
内存访问监测方法和装置 Download PDFInfo
- Publication number
- CN102362464A CN102362464A CN2011800009015A CN201180000901A CN102362464A CN 102362464 A CN102362464 A CN 102362464A CN 2011800009015 A CN2011800009015 A CN 2011800009015A CN 201180000901 A CN201180000901 A CN 201180000901A CN 102362464 A CN102362464 A CN 102362464A
- Authority
- CN
- China
- Prior art keywords
- coarseness
- monitoring
- page
- fine granularity
- node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种内存访问监测方法和装置,其中,该内存访问监测方法包括:对本地内存页面进行粗粒度监测,若所述本地内存页面中存在粗粒度监测的热点页面,则请求操作***对所述热点页面的内容进行优化迁移;若所述本地内存页面中存在粗粒度监测的半热点页面,则启动对所述半热点页面的细粒度监测;对所述半热点页面进行细粒度监测,若所述半热点页面存在细粒度监测的热点区域,则请求操作***对所述热点区域的内容进行优化迁移。本发明实施例采用粗粒度监测和细粒度监测结合方式,减少了内存访问监测所需的计数器数量,可以有效识别跨节点的需要优化的热点区域,可以提升NUMA架构中的内存访问优化效率。
Description
内存访问监测方法和装置 技术领域
本发明实施例涉及通信技术领域, 尤其涉及一种内存访问监测方法和装 置。 背景技术
在非一致性内存访问 ( Non-Uniform Memory Access; 简称: NUMA ) 系 统架构下, 远近端内存访问开销相差很大, 过多远端内存访问会造成***性 能急剧下滑。 对跨节点的内存访问进行监测, 可以识别出热点跨节点数据访 问页面, 动态调整内存分布情况, 提升本地内存访问比例, 提升***整体性 能。
现有技术在每个节点上设置内存访问监测模块, 对每个页面的远近节点 访问情况(读、 写次数)进行计数, 如果发现某个页面被远端节点访问频率 超过一定阀值, 该监测模块将以中断或其它方式通知操作***, 操作***将 对该页面进行优化处理。
现有技术多采用 4K 大小的页面粒度进行监控, 该页面粒度较细, 对于 超过 100G的内存容量, 需要大量的计数器监测内存访问, 硬件开销过大。 发明内容
本发明实施例提供一种内存访问监测方法和装置, 用以解决现有技术中 内存访问硬件开销过大的缺陷, 实现采用较少的硬件开销覆盖大范围内存访 问监测, 提升内存访问优化效率。
本发明实施例提供一种内存访问监测方法, 包括:
对本地内存页面进行粗粒度监测, 若所述本地内存页面中存在粗粒度监 测的热点页面, 则请求操作***对所述热点页面的内容进行优化迁移; 若所
述本地内存页面中存在粗粒度监测的半热点页面, 则启动对所述半热点页面 的细粒度监测;
对所述半热点页面进行细粒度监测, 若所述半热点页面存在细粒度监测 的热点区域, 则请求操作***对所述热点区域的内容进行优化迁移。
本发明实施例提供一种内存访问监测装置, 其特征在于, 包括: 粗粒度监测模块, 用于对本地内存页面进行粗粒度监测, 若所述本地内 存页面中存在粗粒度监测的热点页面, 则指示监测控制模块请求操作***对 所述热点页面的内容进行优化迁移; 若所述本地内存页面中存在粗粒度监测 的半热点页面, 则通过监测控制模块启动对所述半热点页面的细粒度监测; 细粒度监测模块, 用于对所述半热点页面的细粒度监测, 若所述半热点 页面存在细粒度监测的热点区域, 则指示监测控制模块请求操作***对所述 热点区域的内容进行优化迁移;
监测控制模块, 用于指示所述粗粒度监测模块启动对本地内存页面的粗 粒度监测, 请求操作***对所述粗粒度监测模块监测到的所述热点页面的内 容进行优化迁移; 若所述粗粒度监测模块监测到所述本地内存页面中存在粗 粒度监测的半热点页面, 则指示所述细粒度监测模块启动对所述半热点页面 的细粒度监测, 请求操作***对所述细粒度监测模块监测到的所述热点区域 的内容进行优化迁移。
本发明实施例的内存访问监测方法和装置, 采用粗粒度监测和细粒度监 测结合方式, 先采用粗粒度监测, 再对粗粒度监测得到的热点页面在采用细 粒度监测, 减少了内存访问监测所需的计数器数量, 不仅采用较少的硬件开 销覆盖大范围内存访问监测, 还能对关键数据页面进行细粒度监测, 可以有 效识别跨节点的需要优化的热点区域; 应用于 NUMA***架构中, 可以提升 NUMA架构中的内存访问优化效率。 附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实 施例或现有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下 面描述中的附图是本发明的一些实施例, 对于本领域普通技术人员来讲, 在 不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图 1为本发明实施例一提供的内存访问监测方法的流程图;
图 2a为本发明实施例二提供的内存访问监测方法应用于 NUMA***架 构的示意图;
图 2b为本发明实施例二提供的内存访问监测方法应用于 NUMA***架 构中的 NC芯片的结构示意图;
图 2c 为本发明实施例二提供的内存访问监测方法中粗粒度监测的示意 图;
图 2d 为本发明实施例二提供的内存访问监测方法中细粒度监测的示意 图;
图 3为本发明实施例三提供的内存访问监测装置的结构示意图; 图 4为本发明实施例四提供的内存访问监测装置的结构示意图。 具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发 明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获 得的所有其他实施例, 都属于本发明保护的范围。
图 1为本发明实施例一提供的内存访问监测方法的流程图,如图 1所示, 该内存访问监测方法可以包括:
步骤 101、 对本地内存页面进行粗粒度监测, 若所述本地内存页面中存 在粗粒度监测的热点页面, 则请求操作***对所述热点页面的内容进行优化
迁移; 若所述本地内存页面中存在粗粒度监测的半热点页面, 则启动对所述 半热点页面的细粒度监测;
其中, 步骤 101具体可以包括:
步骤 1011、 将***中各个节点访问一个粗粒度页面对应的各个计数器的 数值保存到粗粒度监测表的一个表项中, 所述粗粒度页面由所述本地内存页 面按照粗粒度划分得到;
步骤 1012、 根据***中各个节点访问一个粗粒度页面的访问量, 判断该 粗粒度页面被一个远端节点访问的远端访问比率是否超过第一预设阀值, 如 果是, 则该粗粒度页面为热点页面, 执行步骤 1013; 否则, 执行步骤 1014; 步骤 1013、 请求操作***对所述热点页面的内容进行优化迁移, 结束; 步骤 1014、 判断该粗粒度页面被所有远端节点访问的总的远端访问比率 是否超过第二预设阀值, 如果是, 则该粗粒度页面为半热点页面, 启动对所 述半热点页面的细粒度监测, 执行步骤 102。
步骤 102、 对所述半热点页面进行细粒度监测, 若所述半热点页面存在 细粒度监测的热点区域, 则请求操作***对所述热点区域的内容进行优化迁 移。
其中, 步骤 102具体可以包括:
步骤 1021、 将***中各个节点访问一个细粒度区域对应的各个计数器的 数值保存到细粒度监测表的一个表项中, 所述细粒度区域由所述半热点页面 按照细粒度划分得到;
步骤 1022、 根据***中各个节点访问一个细粒度区域的访问量, 判断该 细粒度区域被一个远端节点访问的远端访问比率是否超过第三预设阀值, 如 果是, 则该细粒度区域为热点区域, 请求操作***对所述热点区域的内容进 行优化迁移。
其中, 采用计数器统计每一个粗粒度页面或细粒度页面被一个节点访问 的访问量的方法具体可以包括:
若截获***中一个本地节点访问一个粗粒度页面, 则启动所述粗粒度监 测模块中的该本地节点访问该粗粒度页面对应的计数器的数值加" Γ;
若截获***中一个远端节点访问一个粗粒度页面, 则指示所述粗粒度监 测模块中的该远端节点访问该粗粒度页面对应的计数器的数值加 "1";
若截获***中一个本地节点访问一个细粒度页面, 则启动所述粗粒度监 测模块中的该本地节点访问该细粒度页面对应的计数器的数值加 "1";
若截获***中一个远端节点访问一个细粒度页面, 则启动所述粗粒度监 测模块中的将该远端节点访问该细粒度页面对应的计数器的数值加" 1"。
进一步地, 该内存访问监测方法还包括老化的步骤, 具体可以分为以下 任一情况:
情况一、 若收到一个粗粒度页面的老化信号, 则将所述粗粒度页面对应 的各个计数器清零, 将所述粗粒度页面对应的粗粒度监测表中的表项删除; 该情况一可以经过步骤 1011 在粗粒度监测表中建立某一粗粒度页面的表项 之后执行。
情况二、 若收到一个细粒度区域的老化信号, 则将所述细粒度区域对应 的各个计数器清零, 将所述细粒度区域对应的细粒度监测表中的表项删除。 该情况二可以经过步骤 1021 在细粒度监测表中建立某一细粒度区域的表项 之后执行。
本发明实施例中的粗粒度页面可以为例如: 2M、 4M、 16M、 64M、 512M、 1G、 4G、 16G等大小的内存空间, 细粒度区域可以为例如: 4K、 8Κ、 16Κ、 32Κ、 64Κ等大小的内存空间, 粗粒度页面大于细粒度区域所占的内存空间, 本发明实施例中不具体限制其大小。
本实施例的内存访问监测方法,采用粗粒度监测和细粒度监测结合方式, 先采用粗粒度监测, 再对粗粒度监测得到的热点页面在采用细粒度监测, 减 少了内存访问监测所需的计数器数量, 不仅采用较少的硬件开销覆盖大范围 内存访问监测, 还能对关键数据页面进行细粒度监测, 可以有效识别跨节点
的需要优化的热点区域; 应用于 NUMA***架构中, 可以提升 NUMA架构 中的内存访问优化效率。
实施例二
图 2a为本发明实施例二提供的内存访问监测方法应用于 NUMA***架 构的示意图, 其中, 节点控制器(Node Controller简称: NC )芯片是 NUMA ***架构中是节点间访问的通信芯片, 用于所有跨节点的内存访问, 内存访 问监测装置可以设置在 NC芯片上,如图 2a所示,假设内存— 1为本地内存页 面, CPU— 1为内存— 1的本地节点, CPU— 2为内存— 1的远端节点, 内存— 2为 CPU— 2对应的远端内存。
图 2b为本发明实施例二提供的内存访问监测方法应用于 NUMA***架 构中的 NC芯片的结构示意图, 如图 2b所示, 监测控制模块可以为 NC芯片 的内存访问管理模块( Memory Visit Management Model; 简称: MVMM) , 粗 粒度监测模块保存有内存页面访问的粗粒度监测表 ( Memory Page Visit Table; 简称: MPVT ) , 细粒度监测模块保存有页面内存访问的细粒度监测 表( Memory Visit Table For One Page; 简称: MVTFOP ) 。 监测控制模块可 以包括远端内存页面访问信息 ( Remote Memory Page Visit Message; 简称: RMPVM ) 单元、 本地内存页面访问信息( Local Memory Page Visit Message 简称: LMPVM ) 单元、 单页面远端内存访问信息 (Remote Memory Visit Message For One Page; 简称: RMVMFOP)单元和单页面本地内存访问信息 ( Remote Memory Visit Message For One Page; 简称: LMVMFOP )单元。 其中, MPVT的表项格式如下表 1 , 每个被监控的页面对应一个表项(如表 1 中 Page l的一行), 每一个表项包括该页面被 N个节点读访问或写访问的访 问量, N为该***包括的节点数, 对表项的搜索可以采用哈希(Hash )计算 的方式, 提升检索效率。
表 1 MPVT的表项格式
页面 本地读 本地写 节点 1读 节点 1写 节点 2读 节点 2写 节点 N读 节点 N写 编号 访问量 访问量 访问量 访问量 访问量 访问量 访问量 访问量
图 2c 为本发明实施例二提供的内存访问监测方法中粗粒度监测的示意 图, 如果 2c和图 2b所示, 粗粒度监测具体可以包括以下步骤:
步骤 201、 NC芯片的 MVMM可以指示粗粒度监测模块对节点访问本地 内存页面进行粗粒度监测, 例如: 如果 MVMM的 RMPVM单元截获远端访 问; 或者 MVMM的 LMPVM单元截获本地访问, 可以指示粗粒度监测模块 对节点访问本地内存页面进行粗粒度监测。
步骤 202、 粗粒度监测模块判断该访问是否是该节点访问该粗粒度页面 的第一次访问, 如果是, 则执行步骤 203; 否则, 执行步骤 204;
步骤 203、 粗粒度监测模块为 MPVT的某一表项的记录建立该节点访问 该粗粒度页面对应的计数器; 执行步骤 205;
步骤 204、 由于 MPVT的某一表项的记录已有该节点访问该粗粒度页面 对应的计数器, 粗粒度监测模块可以将该节点访问该粗粒度页面对应的计数 器中的数值加 "1"; 执行步骤 205;
步骤 205、 粗粒度监测模块根据 MPVT中某一页面的各个计数器判断该 粗粒度页面被某一远端节点访问的远端访问比率是否超过第一预设阀值, 例 如: 远端节点 A访问该粗粒度页面的计数器的数值为" 300", 本地节点 B访 问该粗粒度页面的计数器的数值为 "3", 第一预设阀值为" 50", 则远端访问比 率" 300/3=100"超过了第一预设阀值。 如果超过第一预设阀值, 可以确定该粗 粒度页面为热点页面, 执行步骤 206; 否则, 执行步骤 207;
步骤 206、粗粒度监测模块通过 MVMM向操作***发出中断信号, 并将 该热点页面对应的计数器的数值发送至操作***, 删除该热点页面在 MPVT 中对应的表项, 由操作***对热点页面进行优化迁移例如: 将该热点页面存
储的内容迁移到远端节点对应的远端内存中保存。 然后, 返回执行步骤 201 继续监测。
步骤 207、 粗粒度监测模块根据所有远端节点访问某一粗粒度页面的计 数器的数值总和, 判断总的远端访问比率是否超过第二预设阀值(即表明该 页面同时被多个远端节点频繁访问) , 如果是, 可以确定该粗粒度页面为半 热点页面, 执行步骤 208; 否则执行步骤 209 (如果没有老化模块, 也可以返 回执行步骤 201 ) ; 这是由于, 如果采用 4M、 1G等的大页面粒度进行监控, 一个粗粒度页面可能同时被多个节点访问, 单一远端节点对某一粗粒度页面 的远端访问比率可能难以超过设定阀值, 为了提高优化效率, 可以按照多个 远端节点对某一粗粒度页面的总的远端访问比率确定是否需要细粒度监测。
步骤 208、 MVMM指示细粒度监测模块在 MVTFOP中开启对该半热点 页面的细粒度监测的表项, 细粒度监测模块对该半热点页面的地址区域划分 的细粒度区域进行监测。 并且, 从 MPVT中删除该半热点页面对应的表项, 细粒度监测完成后, 返回执行步骤 201继续监测。 MVTFOP中保存的细粒度 表项格式可以参照表 1中 MPVT的粗粒度表项格式。
步骤 209、 老化模块( Memery page age message )确定是否接收到某一页 面的老化信号, 如果是, 则根据预设的老化机制将该粗粒度页面的计数器老 化清零, 删除该粗粒度页面在 MPVT中对应的表项后, 返回执行步骤 201 ; 否则直接返回步骤 201。 其中, 步骤 209也可以与步骤 208没有时序关系, 而是根据老化信号随时执行。
图 2d 为本发明实施例二提供的内存访问监测方法中细粒度监测的示意 图, 如图 2d所示, 进一步地, 步骤 208中细粒度监测模块在 MVTFOP中开 启对该半热点页面的细粒度监测的表项后, 细粒度监测模块对该半热点页面 的地址区域划分的细粒度区域进行监测的具体过程可以包括以下步骤:
步骤 301、 NC芯片的 MVMM可以指示细粒度监测模块在 MVTFOP中 开启对某半热点页面的细粒度区域的内存访问监测的表项, MVMM可以指示
细粒度监测模块对节点访问本地内存页面进行细粒度监测,例如: NC芯片的 MVMM的 RMVMFOP单元截获该半热点页面的某一细粒度区域的远端访问 或 LMVMFOP单元截获该半热点页面某一细粒度区域的本地访问,可以指示 细粒度监测模块对节点访问本地内存页面进行细粒度监测。
步骤 302、 细粒度监测模块判断该访问是否是该节点访问该细粒度区域 的第一次访问, 如果是, 则执行步骤 303; 否则, 执行步骤 304;
步骤 303、 细粒度监测模块为 MVPFOT的某一表项的记录建立该节点访 问该细粒度区域对应的计数器; 执行步骤 305;
步骤 304、 由于 MVPFOT的某一表项的记录已有该节点访问该细粒度区 域对应的计数器, 细粒度监测模块可以将该节点访问该细粒度区域对应的计 数器的数值加 "1" ; 执行步骤 305;
步骤 305、 细粒度监测模块根据 MVPFOT中的某一细粒度区域的各个计 数器, 判断该细粒度区域被某一节点访问的远端访问比率是否超过第三预设 阀值, 如果是, 可以确定该细粒度区域为热点区域, 执行步骤 306; 否则执 行步骤 307;
步骤 306、 MVMM向操作***发出中断信号, 并将该热点区域对应的计 数器的数值发送至操作***, 从 MVPFOT删除该热点区域对应的表项。 由操 作***对热点区域进行优化迁移例如: 将该热点区域存储的内容迁移到远端 节点对应的远端内存中保存。 然后, 返回执行步骤 301继续进行细粒度监测。
步骤 307、 老化模块( Memery page age message )确定是否接收到某一区 域的老化信号, 如果是, 则根据预设的老化机制将该细粒度区域的计数器老 化清零,删除该细粒度区域在 MVPFOT中对应的表项后,返回执行步骤 301 ; 否则直接返回步骤 301。
本实施例中 NC芯片仅是一种示例, 而非限制, 也可以不在 NC芯片上 执行该内存访问监测方法,而由 NUMA***架构中的互连总线或其他互连设 备执行。
本实施例的内存访问监测方法,采用粗粒度监测和细粒度监测结合方式, 先采用粗粒度监测, 再对粗粒度监测得到的热点页面在采用细粒度监测, 只 将远端节点访问的半热点页面在 MVPFOT中建立相应表项,可以节省计数器 的数量, 不仅采用较少的硬件开销覆盖大范围内存访问监测, 还能对关键数 据页面进行细粒度监测, 可以有效识别跨节点的需要优化的热点区域; 应用 于 NUMA***架构中, 可以提升 NUMA架构中的内存访问优化效率。
实施例三
图 3为本发明实施例三提供的内存访问监测装置的结构示意图, 如图 2 所示, 该内存访问监测装置具体可以包括:
粗粒度监测模块 11 , 用于对本地内存页面进行粗粒度监测, 若所述本地 内存页面中存在粗粒度监测的热点页面, 则指示监测控制模块请求操作*** 对所述热点页面的内容进行优化迁移; 若所述本地内存页面中存在粗粒度监 测的半热点页面,则通过监测控制模块启动对所述半热点页面的细粒度监测; 细粒度监测模块 13, 用于对所述半热点页面的细粒度监测, 若所述半热 点页面存在细粒度监测的热点区域, 则指示监测控制模块请求操作***对所 述热点区域的内容进行优化迁移;
监测控制模块 15, 用于指示所述粗粒度监测模块 11 启动对本地内存页 面的粗粒度监测,请求操作***对所述粗粒度监测模块 11监测到的所述热点 页面的内容进行优化迁移;若所述粗粒度监测模块 11监测到所述本地内存页 面中存在粗粒度监测的半热点页面,则指示所述细粒度监测模块 13启动对所 述半热点页面的细粒度监测,请求操作***对所述细粒度监测模块 13监测到 的所述热点区域的内容进行优化迁移。
具体地, 本发明实施例包括: 监测控制模块 15、 粗粒度监测模块 11 和 细粒度监测模块 13。 其中, 粗粒度监测模块 11可以定位热点页面, 若某一 粗粒度页面被某一远端节点访问的远端访问比率超过设定阀值, 则该粗粒度 页面为热点页面, 监测控制模块 15可以以中断等方式通知操作***, 并将该
热点页面对应的各个计数器监测的数值发送给操作***, 操作***可以对该 热点页面实施优化迁移策略, 例如: 将该热点页面的内容迁移到该远端节点 对应的远端内存中保存。 粗粒度监测模块 11还可以定位半热点页面, 若某一 粗粒度页面被单一远端节点访问的远端访问比率尚未超过设定阀值, 但被多 个远端节点访问的总的远端访问比率超过设定阀值, 则该粗粒度页面为半热 点页面, 监测控制模块 15可以指示细粒度监测模块 13对该半热点页面进行 细粒度监测。 若细粒度监测模块 13对半热点页面进行细粒度监测, 发现某细 粒度区域被某一远端节点的访问频率超过设定阀值, 则该细粒度区域为热点 区域, 监测控制模块 15可以以中断或其它方式通知操作***, 并将该热点区 域的各个计数器的数值发送给操作***, 操作***可以对该热点页面实施优 化迁移策略, 例如: 将该热点区域的内容迁移到该远端节点对应的远端内存 中保存。
本实施例的内存访问监测方法,采用粗粒度监测和细粒度监测结合方式, 先采用粗粒度监测, 再对粗粒度监测得到的热点页面在采用细粒度监测, 减 少了内存访问监测所需的计数器数量, 不仅采用较少的硬件开销覆盖大范围 内存访问监测, 还能对关键数据页面进行细粒度监测, 可以有效识别跨节点 的需要优化的热点区域; 应用于 NUMA***架构中, 可以提升 NUMA架构 中的内存访问优化效率。
实施例四
图 4为本发明实施例四提供的内存访问监测装置的结构示意图, 如图 4 所示, 该内存访问监测装置的粗粒度监测模块 11具体可以包括:
粗粒度计数单元 21 , 用于将***中各个节点访问一个粗粒度页面对应的 各个计数器的数值保存到粗粒度监测表的一个表项中, 所述粗粒度页面由所 述本地内存页面按照粗粒度划分得到;
热点页面确定单元 23 , 用于根据***中各个节点访问一个粗粒度页面的 访问量, 判断该粗粒度页面被一个远端节点访问的远端访问比率是否超过第
一预设阀值, 如果是, 则该粗粒度页面为热点页面, 请求操作***对所述热 点页面的内容进行优化迁移;
半热点页面确定单元 25 , 用于如果该粗粒度页面被一个远端节点访问的 远端访问比率未超过第一预设阀值, 判断该粗粒度页面被所有远端节点访问 的总的远端访问比率是否超过第二预设阀值, 如果是, 则该粗粒度页面为半 热点页面, 启动对所述半热点页面的细粒度监测。
进一步地, 该细粒度监测模块 13包括:
细粒度计数单元 31 , 用于将***中各个节点访问一个细粒度区域对应的 各个计数器的数值保存到细粒度监测表的一个表项中, 所述细粒度区域由所 述半热点页面按照细粒度划分得到;
热点区域确定单元 33 , 用于根据***中各个节点访问一个细粒度区域的 访问量, 判断该细粒度区域被一个远端节点访问的远端访问比率是否超过第 三预设阀值, 如果是, 则该细粒度区域为热点区域, 请求操作***对所述热 点区域的内容进行优化迁移。
再进一步地, 监测控制模块 15可以包括:
本地粗粒度监测启动单元 41 , 用于若截获***中一个本地节点访问一个 粗粒度页面,则启动所述粗粒度监测模块 11中的该本地节点访问该粗粒度页 面对应的计数器的数值加 "1";参见图 2b的 LMPVM单元和图 2c的相关描述。
远端粗粒度监测启动单元 42, 用于若截获***中一个远端节点访问一个 粗粒度页面,则指示所述粗粒度监测模块 11中的该远端节点访问该粗粒度页 面对应的计数器的数值加 "1";参见图 2b的 RMPVM单元和图 2c的相关描述。
本地细粒度监测启动单元 43, 用于若截获***中一个本地节点访问一个细 粒度页面,则启动所述粗粒度监测模块 11中的该本地节点访问该细粒度页面对 应的计数器的数值加 "1"; 参见图 2b的 LMVMFOP单元和图 2d的相关描述。
远端细粒度监测启动单元 44, 用于若截获***中一个远端节点访问一个细 粒度页面,则启动所述粗粒度监测模块 11中的将该远端节点访问该细粒度页面
对应的计数器的数值加 "1"。参见图 2b的 RMVMFOP单元和图 2d的相关描述。 此外, 该监测控制模块 15还可以包括:
老化模块 45 , 用于若收到一个粗粒度页面的老化信号, 则将所述粗粒度 页面对应的各个计数器清零, 将所述粗粒度页面对应的粗粒度监测表中的表 项删除; 或若收到一个细粒度区域的老化信号, 则将所述细粒度区域对应的 各个计数器清零, 将所述细粒度区域对应的细粒度监测表中的表项删除。
本实施例中各个模块和单元的工作流程和工作原理参见上述各方法实施 例中的描述, 在此不再赘述。
本实施例的内存访问监测方法,采用粗粒度监测和细粒度监测结合方式, 先采用粗粒度监测, 再对粗粒度监测得到的热点页面在采用细粒度监测, 减 少了内存访问监测所需的计数器数量, 不仅采用较少的硬件开销覆盖大范围 内存访问监测, 还能对关键数据页面进行细粒度监测, 可以有效识别跨节点 的需要优化的热点区域; 应用于 NUMA***架构中, 可以提升 NUMA架构 中的内存访问优化效率。
本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分步骤 可以通过程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读 取存储介质中, 该程序在执行时, 执行包括上述方法实施例的步骤; 前述的 存储介质包括: ROM, RAM,磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是: 以上实施例仅用以说明本发明的技术方案, 而非对其 限制; 尽管参照前述实施例对本发明进行了详细的说明, 本领域的普通技术 人员应当理解: 其依然可以对前述各实施例所记载的技术方案进行修改, 或 者对其中部分技术特征进行等同替换; 而这些修改或者替换, 并不使相应技 术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
- 权 利 要 求1、 一种内存访问监测方法, 其特征在于, 包括:对本地内存页面进行粗粒度监测, 若所述本地内存页面中存在粗粒度监 测的热点页面, 则请求操作***对所述热点页面的内容进行优化迁移; 若所 述本地内存页面中存在粗粒度监测的半热点页面, 则启动对所述半热点页面 的细粒度监测;对所述半热点页面进行细粒度监测, 若所述半热点页面存在细粒度监测 的热点区域, 则请求操作***对所述热点区域的内容进行优化迁移。
- 2、 根据权利要求 1所述的内存访问监测方法, 其特征在于, 所述对本地 内存页面进行粗粒度监测, 若所述本地内存页面中存在粗粒度监测的热点页 面, 则请求操作***对所述热点页面的内容进行优化迁移; 若所述本地内存 页面中存在粗粒度监测的半热点页面, 则启动对所述半热点页面的细粒度监 测, 包括:将***中各个节点访问一个粗粒度页面对应的各个计数器的数值保存到 粗粒度监测表的一个表项中, 所述粗粒度页面由所述本地内存页面按照粗粒 度划分得到;根据***中各个节点访问一个粗粒度页面的访问量, 判断该粗粒度页面 被一个远端节点访问的远端访问比率是否超过第一预设阀值, 如果是, 则该 粗粒度页面为热点页面,请求操作***对所述热点页面的内容进行优化迁移; 否则, 判断该粗粒度页面被所有远端节点访问的总的远端访问比率是否 超过第二预设阀值, 如果是, 则该粗粒度页面为半热点页面, 启动对所述半 热点页面的细粒度监测。
- 3、 根据权利要求 1或 2所述的内存访问监测方法, 其特征在于, 所述对 所述半热点页面进行细粒度监测, 若所述半热点页面存在细粒度监测的热点 区域, 则请求操作***对所述热点区域的内容进行优化迁移, 包括:将***中各个节点访问一个细粒度区域对应的各个计数器的数值保存到 细粒度监测表的一个表项中, 所述细粒度区域由所述半热点页面按照细粒度 划分得到;根据***中各个节点访问一个细粒度区域的访问量, 判断该细粒度区域 被一个远端节点访问的远端访问比率是否超过第三预设阀值, 如果是, 则该 细粒度区域为热点区域,请求操作***对所述热点区域的内容进行优化迁移。
- 4、根据权利要求 1或 2所述的内存访问监测方法,其特征在于,还包括: 若截获***中一个本地节点访问一个粗粒度页面, 则启动所述粗粒度监 测模块中的该本地节点访问该粗粒度页面对应的计数器的数值加" Γ;若截获***中一个远端节点访问一个粗粒度页面, 则指示所述粗粒度监 测模块中的该远端节点访问该粗粒度页面对应的计数器的数值加 "1";若截获***中一个本地节点访问一个细粒度页面, 则启动所述粗粒度监 测模块中的该本地节点访问该细粒度页面对应的计数器的数值加 "1";若截获***中一个远端节点访问一个细粒度页面, 则启动所述粗粒度监 测模块中的将该远端节点访问该细粒度页面对应的计数器的数值加" 1"。
- 5、根据权利要求 1或 2所述的内存访问监测方法,其特征在于,还包括: 若收到一个粗粒度页面的老化信号, 则将所述粗粒度页面对应的各个计 数器清零, 将所述粗粒度页面对应的粗粒度监测表中的表项删除; 或若收到一个细粒度区域的老化信号, 则将所述细粒度区域对应的各个计 数器清零, 将所述细粒度区域对应的细粒度监测表中的表项删除。
- 6、 一种内存访问监测装置, 其特征在于, 包括:粗粒度监测模块, 用于对本地内存页面进行粗粒度监测, 若所述本地内 存页面中存在粗粒度监测的热点页面, 则指示监测控制模块请求操作***对 所述热点页面的内容进行优化迁移; 若所述本地内存页面中存在粗粒度监测 的半热点页面, 则通过监测控制模块启动对所述半热点页面的细粒度监测; 细粒度监测模块, 用于对所述半热点页面的细粒度监测, 若所述半热点 页面存在细粒度监测的热点区域, 则指示监测控制模块请求操作***对所述 热点区域的内容进行优化迁移;监测控制模块, 用于指示所述粗粒度监测模块启动对本地内存页面的粗 粒度监测, 请求操作***对所述粗粒度监测模块监测到的所述热点页面的内 容进行优化迁移; 若所述粗粒度监测模块监测到所述本地内存页面中存在粗 粒度监测的半热点页面, 则指示所述细粒度监测模块启动对所述半热点页面 的细粒度监测, 请求操作***对所述细粒度监测模块监测到的所述热点区域 的内容进行优化迁移。
- 7、 根据权利要求 6所述的内存访问监测装置, 其特征在于, 所述粗粒度 监测模块包括:粗粒度计数单元, 用于将***中各个节点访问一个粗粒度页面对应的各 个计数器的数值保存到粗粒度监测表的一个表项中, 所述粗粒度页面由所述 本地内存页面按照粗粒度划分得到;热点页面确定单元, 用于根据***中各个节点访问一个粗粒度页面的访 问量, 判断该粗粒度页面被一个远端节点访问的远端访问比率是否超过第一 预设阀值, 如果是, 则该粗粒度页面为热点页面, 请求操作***对所述热点 页面的内容进行优化迁移;半热点页面确定单元, 用于如果该粗粒度页面被一个远端节点访问的远 端访问比率未超过第一预设阀值, 判断该粗粒度页面被所有远端节点访问的 总的远端访问比率是否超过第二预设阀值, 如果是, 则该粗粒度页面为半热 点页面, 启动对所述半热点页面的细粒度监测。
- 8、 根据权利要求 6或 7所述的内存访问监测装置, 其特征在于, 所述细 粒度监测模块包括:细粒度计数单元, 用于将***中各个节点访问一个细粒度区域对应的各 个计数器的数值保存到细粒度监测表的一个表项中, 所述细粒度区域由所述 半热点页面按照细粒度划分得到;热点区域确定单元, 用于根据***中各个节点访问一个细粒度区域的访 问量, 判断该细粒度区域被一个远端节点访问的远端访问比率是否超过第三 预设阀值, 如果是, 则该细粒度区域为热点区域, 请求操作***对所述热点 区域的内容进行优化迁移。
- 9、 根据权利要求 6或 7所述的内存访问监测装置, 其特征在于, 所述监 测控制模块包括:本地粗粒度监测启动单元, 用于若截获***中一个本地节点访问一个粗 粒度页面, 则启动所述粗粒度监测模块中的该本地节点访问该粗粒度页面对 应的计数器的数值加 "1";远端粗粒度监测启动单元, 用于若截获***中一个远端节点访问一个粗 粒度页面, 则指示所述粗粒度监测模块中的该远端节点访问该粗粒度页面对 应的计数器的数值加 "1";本地细粒度监测启动单元, 用于若截获***中一个本地节点访问一个细 粒度页面, 则启动所述粗粒度监测模块中的该本地节点访问该细粒度页面对 应的计数器的数值加 "1";远端细粒度监测启动单元, 用于若截获***中一个远端节点访问一个细 粒度页面, 则启动所述粗粒度监测模块中的将该远端节点访问该细粒度页面 对应的计数器的数值加" 1"。
- 10、 根据权利要求 6或 7所述的内存访问监测装置, 其特征在于, 所述 监测控制模块还包括:老化模块, 用于若收到一个粗粒度页面的老化信号, 则将所述粗粒度页 面对应的各个计数器清零, 将所述粗粒度页面对应的粗粒度监测表中的表项 删除; 或若收到一个细粒度区域的老化信号, 则将所述细粒度区域对应的各 个计数器清零, 将所述细粒度区域对应的细粒度监测表中的表项删除。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/073018 WO2011107046A2 (zh) | 2011-04-19 | 2011-04-19 | 内存访问监测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102362464A true CN102362464A (zh) | 2012-02-22 |
CN102362464B CN102362464B (zh) | 2013-01-30 |
Family
ID=44542633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800009015A Active CN102362464B (zh) | 2011-04-19 | 2011-04-19 | 内存访问监测方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8713275B2 (zh) |
EP (1) | EP2437433B1 (zh) |
CN (1) | CN102362464B (zh) |
WO (1) | WO2011107046A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及*** |
CN105489242A (zh) * | 2014-10-07 | 2016-04-13 | 爱思开海力士有限公司 | 数据储存器件及其操作方法 |
CN113553274A (zh) * | 2020-04-24 | 2021-10-26 | 江苏华创微***有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9329987B1 (en) * | 2012-06-14 | 2016-05-03 | Marvell International Ltd. | Systems and methods for dynamic tracking of memory regions |
EP2867769A4 (en) * | 2012-06-29 | 2016-12-21 | Intel Corp | METHOD AND SYSTEMS FOR IDENTIFYING AND MIGRATING THREADS BETWEEN SYSTEM NODES BASED ON SYSTEM PERFORMANCE METHOD |
CN103914363B (zh) * | 2012-12-31 | 2016-10-26 | 华为技术有限公司 | 一种内存监控方法及相关装置 |
WO2014178839A1 (en) * | 2013-04-30 | 2014-11-06 | Hewlett-Packard Development Company, L.P. | Memory access rate |
CN104104613A (zh) * | 2014-08-08 | 2014-10-15 | 成都致云科技有限公司 | 云存储***的自动重均衡方法 |
US10235290B2 (en) * | 2015-06-26 | 2019-03-19 | Advanced Micro Devices, Inc. | Hot page selection in multi-level memory hierarchies |
US10901767B2 (en) * | 2015-10-30 | 2021-01-26 | Hewlett Packard Enterprise Development Lp | Data locality for hyperconverged virtual computing platform |
US11061572B2 (en) * | 2016-04-22 | 2021-07-13 | Advanced Micro Devices, Inc. | Memory object tagged memory monitoring method and system |
US11023135B2 (en) * | 2017-06-27 | 2021-06-01 | TidalScale, Inc. | Handling frequently accessed pages |
US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
US11526290B2 (en) * | 2019-06-29 | 2022-12-13 | Intel Corporation | System and method to track physical address accesses by a CPU or device |
CN113050874A (zh) * | 2019-12-26 | 2021-06-29 | 华为技术有限公司 | 一种内存设置方法以及装置 |
US20210303477A1 (en) * | 2020-12-26 | 2021-09-30 | Intel Corporation | Management of distributed shared memory |
US11893279B2 (en) * | 2021-08-25 | 2024-02-06 | Micron Technology, Inc. | Access tracking in memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808402A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 一种内存访问监控方法 |
CN101187948A (zh) * | 2007-12-20 | 2008-05-28 | 中国科学院计算技术研究所 | 一种持续数据保护***及其实现方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996035169A1 (en) * | 1995-05-05 | 1996-11-07 | Silicon Graphics, Inc. | Page migration in a non-uniform memory access (numa) system |
US6035378A (en) * | 1997-12-16 | 2000-03-07 | Ncr Corporation | Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system |
-
2011
- 2011-04-19 CN CN2011800009015A patent/CN102362464B/zh active Active
- 2011-04-19 EP EP11750199.9A patent/EP2437433B1/en active Active
- 2011-04-19 WO PCT/CN2011/073018 patent/WO2011107046A2/zh active Application Filing
- 2011-12-30 US US13/341,416 patent/US8713275B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808402A (zh) * | 2005-01-17 | 2006-07-26 | 华为技术有限公司 | 一种内存访问监控方法 |
CN101187948A (zh) * | 2007-12-20 | 2008-05-28 | 中国科学院计算技术研究所 | 一种持续数据保护***及其实现方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及*** |
CN102760101B (zh) * | 2012-05-22 | 2015-03-18 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及*** |
CN105489242A (zh) * | 2014-10-07 | 2016-04-13 | 爱思开海力士有限公司 | 数据储存器件及其操作方法 |
CN113553274A (zh) * | 2020-04-24 | 2021-10-26 | 江苏华创微***有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
CN113553274B (zh) * | 2020-04-24 | 2023-09-12 | 江苏华创微***有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2437433A2 (en) | 2012-04-04 |
US20120272029A1 (en) | 2012-10-25 |
CN102362464B (zh) | 2013-01-30 |
EP2437433A4 (en) | 2012-08-22 |
US8713275B2 (en) | 2014-04-29 |
EP2437433B1 (en) | 2017-09-06 |
WO2011107046A3 (zh) | 2011-10-27 |
WO2011107046A2 (zh) | 2011-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102362464A (zh) | 内存访问监测方法和装置 | |
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储***及加速计算方法 | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
CN103559093B (zh) | 一种服务器资源的配置方法及装置 | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
CN104460941B (zh) | 一种降低主存存储器满负荷运行功耗的方法 | |
CN105892955A (zh) | 一种管理存储***的方法及设备 | |
WO2020119307A1 (zh) | 一种基于dsp的任务调度方法及装置 | |
CN102446159A (zh) | 多核处理器的数据管理方法及装置 | |
CN106489132A (zh) | 读写数据的方法、装置、存储设备和计算机*** | |
CN110321331A (zh) | 利用多级散列函数来确定存储地址的对象存储*** | |
WO2022199027A1 (zh) | 一种随机写的方法、电子设备及存储介质 | |
CN102402422A (zh) | 处理器组件及该组件内存共享的方法 | |
CN101944075B (zh) | 总线***、对低速总线设备进行读写操作的方法及装置 | |
CN105718392A (zh) | 细胞阵列文件存储***及其文件存储设备与文件存储方法 | |
CN103488582B (zh) | 写高速缓冲存储器的方法及装置 | |
CN109062857B (zh) | 一种能高速实现多处理器间通信的新型消息控制器及其通信方法 | |
WO2021227789A1 (zh) | 存储空间的分配方法、装置、终端及计算机可读存储介质 | |
JP2012185764A (ja) | メモリアクセス処理システム、制御方法、及びプログラム | |
CN112817836A (zh) | 一种服务器负载的确定方法、装置、设备以及存储介质 | |
US10452574B2 (en) | Read performance on a SATA storage device behind a host bus adapter | |
CN105912404B (zh) | 一种基于磁盘的大规模图数据中寻找强连通分量的方法 | |
CN106155923A (zh) | 内存共享的方法和装置 | |
CN114238156A (zh) | 处理***以及操作处理***的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |