一种动态缓存污染防治系统及方法技术方案

技术编号:10305296 阅读:167 留言:0更新日期:2014-08-08 02:28
本发明专利技术公开了一种动态缓存污染防治系统及方法,属于计算机缓存性能优化技术领域。本发明专利技术的动态缓存污染防治系统包括内存监测模块、分析模块和决策分配模块。内存监测模块对为上层用户层程序动态分配的堆内存进行采样监测,并收集用户层程序的访存行为并提交给分析模块;分析模块对采样监测模块收集到的数据进行分析,判断程序前期的访存特性对缓存的污染情况;决策分配模块对原有的伙伴系统进行扩展,加入以page-color为基础的页面管理机制,将内存页面管理与页面映射分离,再根据分析模块的分析结果控制系统逻辑页面到物理页框的映射方式,实现对缓存污染的有效限制。

【技术实现步骤摘要】
一种动态缓存污染防治系统及方法
本专利技术属于计算机缓存性能优化
,更具体地,涉及一种动态缓存污染防治系统及方法。
技术介绍
高速缓冲存储器(Cache)是存取速度比一般随机存取记忆体(RAM)更快的一种RAM,在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的,程序员感觉不到高速缓冲存储器的存在,因而其对程序员是透明的。在计算机技术发展过程中,主存储器存取速度一直比中央处理器操作速度慢得多,使得中央处理器的高速处理能力不能充分发挥,影响了整个计算机系统的工作效率。目前有很多方法可用来缓和中央处理器与主存储器之间速度不匹配的矛盾,例如采用多个通用寄存器、多存储体交叉存取等,但在存储层次上采用高速缓冲存储器是最常用的方法。高速缓冲存储器的容量一般只有主存储器的几百分之一,但其存取速度能与中央处理器相匹配。根据程序局部性原理,正在使用的主存储器某一单元其邻近的单元将被用到的可能性很大。因而,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的一组单元内容调入高速缓冲存储器,中央处理器即将存取的主存储器单元很可能就在刚刚调入到高速缓冲存储器的那一组单元内。于是,中央处理器就可以直接对高速缓冲存储器进行存取。在整个处理过程中,如果中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,计算机系统处理速度就能显著提高。但是,当前处理器高速缓存大多采用最近最少使用(LeastRecentlyUsed,LRU)替换算法,该算法不能有效识别被访问数据的局部性特征并根据数据局部性的变化及时调节管理策略,导致高复用度的数据被低复用度的数据所替换,从而引发高速缓存的污染问题。另一方面,随着多核/众核系统的日益普及和发展,每个内核上的缓存污染都可能导致多核心之间共享缓存的污染,进一步加剧缓存的污染问题,对高性能计算的影响越来越大。现有的一些缓存污染过滤策略虽然可在一定程序上缓解该问题,但存在缓存调整开销过大、对用户层不透明、离线分析无法实时动态调整或者需要特殊的硬件支持等问题,目前还缺乏一种通用计算机上的在线低开销的缓存污染监控机制。
技术实现思路
针对现有技术的缺陷,本专利技术的目的在于提供一种动态缓存污染防治系统及方法,旨在解决现有方法中存在的开销过大、不透明及无法动态调整的技术问题。为实现上述目的,按照本专利技术的一方面,提供一种动态缓存污染防治系统,包括内存监测模块、分析模块和决策分配模块,其特征在于:所述内存监测模块对为上层用户层程序动态分配的堆内存进行采样监测并收集数据,并将所述数据发送至所述分析模块,其中,所述数据包括动态分配内存的大小、所述用户层程序运行时函数调用栈的内容及深度、所述被采样监测页面相邻两次猝发访问的时间间隔ΔT和所述时间间隔ΔT内各级缓存访问缺失次数ΔCi,i=1、2、3;所述分析模块对所述采样监测模块收集到的所述数据进行分析,判断所述用户层程序的所述堆内存是否对缓存造成污染,确定对所述缓存的污染类型为Li级缓存污染,并将分析结果发送至所述决策分配模块;所述决策分配模块对原有的伙伴系统加入以page-color为基础的页面管理机制,将内存页面管理与页面映射分离,根据所述分析模块的所述分析结果控制系统逻辑页面到物理页框的映射方式,以实现对缓存污染的有效限制。为实现上述目的,按照本专利技术的另一方面,提供一种动态缓存污染防治方法,包括以下步骤:步骤1追踪用户层程序的内存分配和释放操作;步骤2对动态分配的堆内存进行采样监测并收集数据,所述数据包括动态分配内存的大小、所述用户层程序运行时函数调用栈的内容及深度、被采样监测页面相邻两次猝发访问的时间间隔ΔT和所述时间间隔ΔT内各级缓存访问缺失次数ΔCi,i=1、2、3,并判断当前内存分配点是否为第一次分配内存,若是,则新建采样哈希表,并执行步骤1;否则更新所述采样哈希表,并执行步骤3;步骤3根据所述步骤2所收集的所述数据,分析当前所述堆内存对缓存的污染情况,将所述各级缓存访问缺失次数ΔCi与所述各级缓存的容量大小进行对比,分析得出当前所述堆内存是否对缓存造成污染,并确定当前所述堆内存对所述缓存的污染类型为Li级缓存污染;步骤4对原有的伙伴系统进行扩展,加入以page-color为基础的页面管理机制,将内存页面管理与页面映射分离,并根据所述步骤3中得到的所述缓存污染类型控制逻辑页面到物理页框的映射和分配,以实现对缓存污染的防治,并更新所述采样哈希表,然后执行步骤1。通过本专利技术所构思的以上技术方案,与现有技术相比,本专利技术的动态缓存污染防治方法具有以下的有益效果:1、基于堆为单位进行监测,可以自由控制系统的采样和监测粒度,能大幅提缓存污染监测的效率;2、通过哈希表管理内存数据集,能够高效地确定内存分配的上下文,大大降低监测缓存污染引入的开销,同时能够实时在线监测堆内存对缓存的污染情况,摒弃了现有方法中离线、静态分析的缺点;3、将内存页面管理与页面映射分离,能够实时动态调整逻辑页面向物理页框的映射方式,有效降低现有方法中内存迁移的巨大开销,切实提高缓存污染过滤效果;4、不涉及用户层程序的具体代码或额外操作,因此对上层用户层程序是完全透明的,具有很强的通用性和可移植性。附图说明图1为本专利技术动态缓存污染防治系统的结构框图;图2为本专利技术动态缓存污染防治方法的流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。图1所示为本专利技术动态缓存污染防治系统的结构框图。如图1所示,动态缓存污染防治系统包括内存监测模块、分析模块和决策分配模块。内存监测模块对为上层用户层程序动态分配的堆内存进行采样监测,并收集用户层程序的访存行为提交给分析模块。分析模块对采样监测模块收集到的数据进行分析,判断用户层程序前期的访存特性对缓存的污染情况,预测用户层程序后期对缓存的污染情况,并将分析结果发送至决策分配模块。决策分配模块对原有的伙伴系统进行扩展,加入以page-color为基础的页面管理机制,将内存页面管理与页面映射分离,再根据分析模块的分析结果,决定采用何种页面映射方式控制系统逻辑页面到物理页框的映射,实现对缓存污染的有效限制。内存监测模块对用户层程序运行时动态分配的堆内存进行采样监测,同时对各级高速缓存的数据排出量和用户层程序的函数调用栈进行监测统计。内存监测模块监测的信息包括动态分配内存的大小、用户层程序运行时函数调用栈的内容及深度、被采样监测页面相邻两次猝发访问的时间间隔ΔT和该时间间隔ΔT内各级缓存访问缺失次数(后期可换算为数据排出量)。内存监测模块监测功能的实现主要通过追踪截获系统中与内存相关的关键函数以及函数调用栈来实现,关键函数包括内存分配函数、内存释放函数及高速缓存缺失次数统计函数。分析模块通过比较函数调用栈的内容及深度确定内存分配点,通过比较时间间隔ΔT内各级缓存的缺失次数ΔC与各级缓存的容量大小来判断程序对缓存的污染情况,并本文档来自技高网
...
一种动态缓存污染防治系统及方法

【技术保护点】
一种动态缓存污染防治系统,包括内存监测模块、分析模块和决策分配模块,其特征在于:所述内存监测模块对为上层用户层程序动态分配的堆内存进行采样监测并收集数据,并将所述数据发送至所述分析模块,其中,所述数据包括动态分配内存的大小、所述用户层程序运行时函数调用栈的内容及深度、所述被采样监测页面相邻两次猝发访问的时间间隔ΔT和所述时间间隔ΔT内各级缓存访问缺失次数ΔCi,i=1、2、3;所述分析模块对所述采样监测模块收集到的所述数据进行分析,判断所述用户层程序的所述堆内存是否对缓存造成污染,确定对所述缓存的污染类型为Li级缓存污染,并将分析结果发送至所述决策分配模块;所述决策分配模块对原有的伙伴系统加入以page‑color为基础的页面管理机制,将内存页面管理与页面映射分离,根据所述分析模块的所述分析结果控制系统逻辑页面到物理页框的映射方式,以实现对缓存污染的有效限制。

【技术特征摘要】
1.一种动态缓存污染防治系统,包括内存监测模块、分析模块和决策分配模块,其特征在于:所述内存监测模块对为上层用户层程序动态分配的堆内存进行采样监测并收集数据,并将所述数据发送至所述分析模块,其中,所述数据包括动态分配内存的大小、所述用户层程序运行时函数调用栈的内容及深度、所述被采样监测页面相邻两次猝发访问的时间间隔ΔT和所述时间间隔ΔT内各级缓存访问缺失次数ΔCi,i=1、2、3;所述分析模块对所述内存监测模块收集到的所述数据进行分析,判断所述用户层程序的所述堆内存是否对缓存造成污染,确定对所述缓存的污染类型为Li级缓存污染,并将分析结果发送至所述决策分配模块;所述决策分配模块对原有的伙伴系统加入以page-color为基础的页面管理机制,将内存页面管理与页面映射分离,根据所述分析模块的所述分析结果控制系统逻辑页面到物理页框的映射方式,以实现对缓存污染的有效限制。2.如权利要求1所述的动态缓存污染防治系统,其特征在于,所述内存监测模块追踪截获与内存相关的关键函数以及所述函数调用栈,其中所述关键函数包括内存分配函数、内存释放函数和高速缓存缺失次数统计函数。3.如权利要求1所述的动态缓存污染防治系统,其特征在于,所述分析模块通过比较所述函数调用栈的内容及深度确定内存分配点,通过比较所述时间间隔ΔT内各级缓存的所述缓存缺失次数ΔCi与所述各级缓存的容量大小来判断所述用户层程序对所述缓存的污染情况,若满足条件D(i+1)>ΔT×ΔCi>Di,则确定为Li级缓存污染,其中4.如权利要求1所述的动态缓存污染防治系统,其特征在于,所述决策分配模块通过公式计算出页着色的颜色数:其中i=2、3,得到L2、L3级缓存的颜色数;若内存分配点为第一次分配,或者所述内存分配点在所述用户层程序运行前期分配的内存未对所述缓存造成污染,则所述决策分配模块控制所述伙伴系统将所述内存页面均匀地映射到所有颜色的物理页框上;若为L2级缓存污染,则所述决策分配模块控制所述伙伴系统将所述内存页面均匀地映射到前种颜色的物理页框上,若当前种颜色的物理页框已被全部分配,则映射到前种颜色上,以此类推;若为L3级缓存污染,则所述决策分配模块控制所述伙伴系统将所述内存页面均匀地映射到前种颜色的物理页框上,其中若则取前p2种颜色,若前种颜色的物理页框已被全部分配,则映射到前种颜色上,以此类推。5.一种动态缓存污染防治方法,包括:步骤1追踪用户层程序的内存分配和释放操作;步骤2对动态分配的堆内存进行采样监测并收集数据,所述数据包括动态分配内存的大小、所述用户层程序运行时函数调用栈的内容及深度、被采样监测页面相邻两次猝发访问的时间间隔ΔT和所述时间间隔ΔT内各级缓存访问缺失次数ΔCi,i=1、2、3,并判断当前内存分配点是否为第一次分配内存,若是,则新建采样哈希表,并执行步骤1;否则更新所述采样哈希表,并执行步骤3;步骤3根据所述步骤2所收集的所述数据,分析当前所述堆内存对缓存的污染情况,将所述各级缓存访问缺失次数ΔCi与所述各级缓存的容量大小进...

【专利技术属性】
技术研发人员:廖小飞金海张德新郭人通
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1