CN102362464B - 内存访问监测方法和装置 - Google Patents
内存访问监测方法和装置 Download PDFInfo
- Publication number
- CN102362464B CN102362464B CN2011800009015A CN201180000901A CN102362464B CN 102362464 B CN102362464 B CN 102362464B CN 2011800009015 A CN2011800009015 A CN 2011800009015A CN 201180000901 A CN201180000901 A CN 201180000901A CN 102362464 B CN102362464 B CN 102362464B
- Authority
- CN
- China
- Prior art keywords
- coarseness
- monitoring
- fine granularity
- page
- pages
- 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
- 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”;
若截获系统中一个远端节点访问一个细粒度页面,则启动所述粗粒度监测模块中的将该远端节点访问该细粒度页面对应的计数器的数值加“1”。
进一步地,该内存访问监测方法还包括老化的步骤,具体可以分为以下任一情况:
情况一、若收到一个粗粒度页面的老化信号,则将所述粗粒度页面对应的各个计数器清零,将所述粗粒度页面对应的粗粒度监测表中的表项删除;该情况一可以经过步骤1011在粗粒度监测表中建立某一粗粒度页面的表项之后执行。
情况二、若收到一个细粒度区域的老化信号,则将所述细粒度区域对应的各个计数器清零,将所述细粒度区域对应的细粒度监测表中的表项删除。该情况二可以经过步骤1021在细粒度监测表中建立某一细粒度区域的表项之后执行。
本发明实施例中的粗粒度页面可以为例如:2M、4M、16M、64M、512M、1G、4G、16G等大小的内存空间,细粒度区域可以为例如:4K、8K、16K、32K、64K等大小的内存空间,粗粒度页面大于细粒度区域所占的内存空间,本发明实施例中不具体限制其大小。
本实施例的内存访问监测方法,采用粗粒度监测和细粒度监测结合方式,先采用粗粒度监测,再对粗粒度监测得到的热点页面在采用细粒度监测,减少了内存访问监测所需的计数器数量,不仅采用较少的硬件开销覆盖大范围内存访问监测,还能对关键数据页面进行细粒度监测,可以有效识别跨节点的需要优化的热点区域;应用于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 VisitMessage For One Page;简称:RMVMFOP)单元和单页面本地内存访问信息(Remote Memory Visit Message For One Page;简称:LMVMFOP)单元。其中,MPVT的表项格式如下表1,每个被监控的页面对应一个表项(如表1中Page 1的一行),每一个表项包括该页面被N个节点读访问或写访问的访问量,N为该系统包括的节点数,对表项的搜索可以采用哈希(Hash)计算的方式,提升检索效率。
表1MPVT的表项格式
图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 (6)
1.一种内存访问监测方法,其特征在于,包括:
对本地内存页面进行粗粒度监测,若所述本地内存页面中存在粗粒度监测的热点页面,则请求操作系统对所述热点页面的内容进行优化迁移;若所述本地内存页面中存在粗粒度监测的半热点页面,则启动对所述半热点页面的细粒度监测,包括:
将系统中各个节点访问一个粗粒度页面对应的各个计数器的数值保存到粗粒度监测表的一个表项中,所述粗粒度页面由所述本地内存页面按照粗粒度划分得到;
根据系统中各个节点访问一个粗粒度页面的访问量,判断该粗粒度页面被一个远端节点访问的远端访问比率是否超过第一预设阀值,如果是,则该粗粒度页面为热点页面,请求操作系统对所述热点页面的内容进行优化迁移;
否则,判断该粗粒度页面被所有远端节点访问的总的远端访问比率是否超过第二预设阀值,如果是,则该粗粒度页面为半热点页面,启动对所述半热点页面的细粒度监测;
对所述半热点页面进行细粒度监测,若所述半热点页面存在细粒度监测的热点区域,则请求操作系统对所述热点区域的内容进行优化迁移,包括:
将系统中各个节点访问一个细粒度区域对应的各个计数器的数值保存到细粒度监测表的一个表项中,所述细粒度区域由所述半热点页面按照细粒度划分得到;
根据系统中各个节点访问一个细粒度区域的访问量,判断该细粒度区域被一个远端节点访问的远端访问比率是否超过第三预设阀值,如果是,则该细粒度区域为热点区域,请求操作系统对所述热点区域的内容进行优化迁移。
2.根据权利要求1所述的内存访问监测方法,其特征在于,还包括:
若截获系统中一个本地节点访问一个粗粒度页面,则启动所述粗粒度监测模块中的该本地节点访问该粗粒度页面对应的计数器的数值加“1”;
若截获系统中一个远端节点访问一个粗粒度页面,则指示所述粗粒度监测模块中的该远端节点访问该粗粒度页面对应的计数器的数值加“1”;
若截获系统中一个本地节点访问一个细粒度页面,则启动所述粗粒度监测模块中的该本地节点访问该细粒度页面对应的计数器的数值加“1”;
若截获系统中一个远端节点访问一个细粒度页面,则启动所述粗粒度监测模块中的将该远端节点访问该细粒度页面对应的计数器的数值加“1”。
3.根据权利要求1所述的内存访问监测方法,其特征在于,还包括:
若收到一个粗粒度页面的老化信号,则将所述粗粒度页面对应的各个计数器清零,将所述粗粒度页面对应的粗粒度监测表中的表项删除;或
若收到一个细粒度区域的老化信号,则将所述细粒度区域对应的各个计数器清零,将所述细粒度区域对应的细粒度监测表中的表项删除。
4.一种内存访问监测装置,其特征在于,包括:
粗粒度监测模块,用于对本地内存页面进行粗粒度监测,若所述本地内存页面中存在粗粒度监测的热点页面,则指示监测控制模块请求操作系统对所述热点页面的内容进行优化迁移;若所述本地内存页面中存在粗粒度监测的半热点页面,则通过监测控制模块启动对所述半热点页面的细粒度监测;
所述粗粒度监测模块包括:
粗粒度计数单元,用于将系统中各个节点访问一个粗粒度页面对应的各个计数器的数值保存到粗粒度监测表的一个表项中,所述粗粒度页面由所述本地内存页面按照粗粒度划分得到;
热点页面确定单元,用于根据系统中各个节点访问一个粗粒度页面的访问量,判断该粗粒度页面被一个远端节点访问的远端访问比率是否超过第一预设阀值,如果是,则该粗粒度页面为热点页面,请求操作系统对所述热点页面的内容进行优化迁移;
半热点页面确定单元,用于如果该粗粒度页面被一个远端节点访问的远端访问比率未超过第一预设阀值,判断该粗粒度页面被所有远端节点访问的总的远端访问比率是否超过第二预设阀值,如果是,则该粗粒度页面为半热点页面,启动对所述半热点页面的细粒度监测;
细粒度监测模块,用于对所述半热点页面的细粒度监测,若所述半热点页面存在细粒度监测的热点区域,则指示监测控制模块请求操作系统对所述热点区域的内容进行优化迁移;
所述细粒度监测模块包括:
细粒度计数单元,用于将系统中各个节点访问一个细粒度区域对应的各个计数器的数值保存到细粒度监测表的一个表项中,所述细粒度区域由所述半热点页面按照细粒度划分得到;
热点区域确定单元,用于根据系统中各个节点访问一个细粒度区域的访问量,判断该细粒度区域被一个远端节点访问的远端访问比率是否超过第三预设阀值,如果是,则该细粒度区域为热点区域,请求操作系统对所述热点区域的内容进行优化迁移;监测控制模块,用于指示所述粗粒度监测模块启动对本地内存页面的粗粒度监测,请求操作系统对所述粗粒度监测模块监测到的所述热点页面的内容进行优化迁移;若所述粗粒度监测模块监测到所述本地内存页面中存在粗粒度监测的半热点页面,则指示所述细粒度监测模块启动对所述半热点页面的细粒度监测,请求操作系统对所述细粒度监测模块监测到的所述热点区域的内容进行优化迁移。
5.根据权利要求4所述的内存访问监测装置,其特征在于,所述监测控制模块包括:
本地粗粒度监测启动单元,用于若截获系统中一个本地节点访问一个粗粒度页面,则启动所述粗粒度监测模块中的该本地节点访问该粗粒度页面对应的计数器的数值加“1”;
远端粗粒度监测启动单元,用于若截获系统中一个远端节点访问一个粗粒度页面,则指示所述粗粒度监测模块中的该远端节点访问该粗粒度页面对应的计数器的数值加“1”;
本地细粒度监测启动单元,用于若截获系统中一个本地节点访问一个细粒度页面,则启动所述粗粒度监测模块中的该本地节点访问该细粒度页面对应的计数器的数值加“1”;
远端细粒度监测启动单元,用于若截获系统中一个远端节点访问一个细粒度页面,则启动所述粗粒度监测模块中的将该远端节点访问该细粒度页面对应的计数器的数值加“1”。
6.根据权利要求4所述的内存访问监测装置,其特征在于,所述监测控制模块还包括:
老化模块,用于若收到一个粗粒度页面的老化信号,则将所述粗粒度页面对应的各个计数器清零,将所述粗粒度页面对应的粗粒度监测表中的表项删除;或若收到一个细粒度区域的老化信号,则将所述细粒度区域对应的各个计数器清零,将所述细粒度区域对应的细粒度监测表中的表项删除
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 CN102362464A (zh) | 2012-02-22 |
CN102362464B true 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) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760101B (zh) * | 2012-05-22 | 2015-03-18 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及系统 |
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 | 华为技术有限公司 | 一种内存监控方法及相关装置 |
CN105229742A (zh) | 2013-04-30 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 存储器访问速率 |
CN104104613A (zh) * | 2014-08-08 | 2014-10-15 | 成都致云科技有限公司 | 云存储系统的自动重均衡方法 |
KR20160042224A (ko) * | 2014-10-07 | 2016-04-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
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 |
US20210157647A1 (en) * | 2019-11-25 | 2021-05-27 | Alibaba Group Holding Limited | Numa system and method of migrating pages in the system |
CN113050874A (zh) * | 2019-12-26 | 2021-06-29 | 华为技术有限公司 | 一种内存设置方法以及装置 |
CN113553274B (zh) * | 2020-04-24 | 2023-09-12 | 江苏华创微系统有限公司 | 用自适应粒度目录表实现片间一致性的方法 |
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 |
---|---|---|---|---|
JP3889044B2 (ja) * | 1995-05-05 | 2007-03-07 | シリコン、グラフィクス、インコーポレイテッド | 不均一メモリ・アクセス(numa)システムにおけるページ移動 |
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 WO PCT/CN2011/073018 patent/WO2011107046A2/zh active Application Filing
- 2011-04-19 EP EP11750199.9A patent/EP2437433B1/en active Active
- 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 | 华为技术有限公司 | 内存监控方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20120272029A1 (en) | 2012-10-25 |
CN102362464A (zh) | 2012-02-22 |
EP2437433A2 (en) | 2012-04-04 |
WO2011107046A3 (zh) | 2011-10-27 |
EP2437433A4 (en) | 2012-08-22 |
US8713275B2 (en) | 2014-04-29 |
EP2437433B1 (en) | 2017-09-06 |
WO2011107046A2 (zh) | 2011-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102362464B (zh) | 内存访问监测方法和装置 | |
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
US20150261698A1 (en) | Memory system, memory module, memory module access method, and computer system | |
KR20060129873A (ko) | 휴대단말기의 메모리 정리 방법 | |
CN104462225A (zh) | 一种数据读取的方法、装置及系统 | |
CN108710583A (zh) | Ssd写缓存区的管理方法、装置、计算机设备及介质 | |
CN104460941B (zh) | 一种降低主存存储器满负荷运行功耗的方法 | |
US9727465B2 (en) | Self-disabling working set cache | |
CN103365717A (zh) | 内存访问方法、装置及系统 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN106489132A (zh) | 读写数据的方法、装置、存储设备和计算机系统 | |
CN115904212A (zh) | 数据处理的方法、装置、处理器和混合内存系统 | |
JP2015088071A (ja) | 情報処理装置、記憶装置制御回路及び記憶装置の制御方法 | |
WO2021227789A1 (zh) | 存储空间的分配方法、装置、终端及计算机可读存储介质 | |
CN106055280B (zh) | 一种元数据回写方法和电子设备 | |
US20140040900A1 (en) | Storage managing device and method and electronic apparatus | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
US10452574B2 (en) | Read performance on a SATA storage device behind a host bus adapter | |
US8307189B2 (en) | Information processing apparatus and semiconductor storage device | |
CN106155923A (zh) | 内存共享的方法和装置 | |
CN116560560A (zh) | 存储数据的方法和相关装置 | |
CN112352216B (zh) | 数据存储方法及数据存储装置 | |
CN108196790B (zh) | 数据管理方法、存储设备及计算机可读存储介质 | |
CN115469796A (zh) | 数据存储方法、装置、设备及存储介质 | |
JP6059360B2 (ja) | バッファ処理方法及び装置 |
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 |