平码五不中公式规律
  • / 22
  • 下载费用:30 金币  

一种内存监控方法及相关装置.pdf

关 键 ?#21097;?/dt>
一种 内存 监控 方法 相关 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201210591865.0

申请日:

2012.12.31

公开号:

CN103914363A

公开日:

2014.07.09

当前法律状态:

授权

有效性:

有权

法?#19978;?#24773;: 授权|||实质审查的生效IPC(主分类):G06F 11/30申请日:20121231|||公开
IPC分类号: G06F11/30; G06F12/02 主分类号: G06F11/30
申请人: 华为技术有限公司; 中国科学院计算技术研究所
发明人: 崔泽汉; 陈明宇; 陈荔城; 陈明扬
地址: 518129 广东省深圳市龙岗区坂田华为总部办公楼
优?#28909;ǎ?/td>
专利代理机构: 深圳市深佳知识产权代理事务所(普通合伙) 44285 代理人: 唐华明
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201210591865.0

授权公告号:

||||||

法律状态公告日:

2016.10.26|||2014.08.06|||2014.07.09

法律状态类型:

授权|||实质审查的生效|||公开

摘要

本发明实施例公开了一种内存监控方法及相关装置,其中,一种内存监控方法包括:获取计算机系统的内存单元访?#24066;?#24687;,其中,所述内存单元访?#24066;?#24687;包括:所述计算机系统的各个内存单元的被访问次数;获取所述计算机系统的进程信息,其中,所述进程信息包括:所述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息;根据所述内存单元访?#24066;?#24687;和所述进程信息生成监控信息,其中,所述监控信息包括:所述计算机系统当前运?#26800;?#36827;程对所述各个内存单元的访问频繁度;将所述监控信息反馈给所述计算机系统,以便所述计算机系统根据所述监控信息进行内存管理。本发明提供的技术方案能够有效提高计算机系统的执行效?#30465;?/p>

权利要求书

权利要求书
1.  一种内存监控方法,其特征在于,包括:
获取计算机系统的内存单元访?#24066;?#24687;,其中,所述内存单元访?#24066;?#24687;包括:所述计算机系统的各个内存单元的被访问次数;
获取所述计算机系统的进程信息,其中,所述进程信息包括:所述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息;
根据所述内存单元访?#24066;?#24687;和所述进程信息生成监控信息,其中,所述监控信息包括:所述计算机系统当前运?#26800;?#36827;程对所述各个内存单元的访问频繁度;
将所述监控信息反馈给所述计算机系统,以便所述计算机系统根据所述监控信息进行内存管理。

2.  根据权利要求1所述的方法,其特征在于,
所述获取计算机系统的内存单元访?#24066;?#24687;,具体为:
监听所述计算机系统的内存总线,得到所述计算机系统的内存单元访?#24066;?#24687;。

3.  根据权利要求2所述的方法,其特征在于,
所述监听所述计算机系统的内存总线,具体为:
旁路监听所述计算机系统的内存总线。

4.  根据权利要求1至3任一项所述的方法,其特征在于,
所述获取所述计算机系统当前运?#26800;?#36827;程信息,包括:
检测所述计算机系统的特殊访存地址;
对检测到的所述特殊访存地?#26041;?#34892;解码,得到所述计算机系统的进程信息,其中,所述特殊访存地址为所述计算机系统对所述进程信息进行编码生成。

5.  根据权利要求1至4任一项所述的方法,其特征在于,所述监控信息还包括:所述统计信息,所述根据所述内存单元访?#24066;?#24687;和所述进程信息生成监控信息,包括:
根据所述计算机系统的各个内存单元的被访问次数和所述进程信息生成所述计算机系统当前运?#26800;?#36827;程对所述各个内存单元的访问频繁度;
将所述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内 存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

6.  根据权利要求1至5任一项所述的方法,其特征在于,
所述将所述监控信息反馈给所述计算机系统包括:
将所述监控信息存入所述计算机系统预先开辟的缓冲区中;
更新所述计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

7.  根据权利要求1至5任一项所述的方法,其特征在于,
将所述监控信息反馈给所述计算机系?#25345;?#21069;包括:
接收来自所述计算机系统的获取监控信息的命令;
所述将所述监控信息反馈给所述计算机系统,具体为:
在接收到来自所述计算机系统的获取监控信息的命令后,将所述监控信息反馈给所述计算机系统。

8.  根据权利要求1至7任一项所述的方法,其特征在于,
所述内存单元访?#24066;?#24687;还包括:所述计算机系统的各个内存单元的重用距离;
所述获取计算机系统的内存单元访?#24066;?#24687;之后,还包括:
将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

9.  一种内存监控装置,其特征在于,包括:
第一获取单元,用于获取计算机系统的内存单元访?#24066;?#24687;,其中,所述内存单元访?#24066;?#24687;包括:所述计算机系统的各个内存单元的被访问次数;
第二获取单元,用于获取所述计算机系统的进程信息,其中,所述进程信息包括:所述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息;
生成单元,与所述第一获取单元和第二获取单元连接,用于根据所述第一获取单元获取的所述内存单元访?#24066;?#24687;,以及所述第二获取单元获取的所述进程信息生成监控信息,其中,所述监控信息包括:所述计算机系统当前运?#26800;?#36827;程对所述各个内存单元的访问频繁度;
反馈单元,与所述生成单元连接,用于将所述生成单元生成的监控信息 反馈给所述计算机系统,以便所述计算机系统根据所述监控信息进行内存管理。

10.  根据权利要求9所述的内存监控装置,其特征在于,
所述第一获取单元具体用于:监听所述计算机系统的内存总线,得到所述计算机系统的内存单元访?#24066;?#24687;。

11.  根据权利要求10所述的内存监控装置,其特征在于,
所述第一获取单元具体用于?#21495;?#36335;监听所述计算机系统的内存总线,得到所述计算机系统的内存单元访?#24066;?#24687;。

12.  根据权利要求9至11任一项所述的内存监控装置,其特征在于,
所述第二获取单元包括:
检测单元,用于检测所述计算机系统的特殊访存地址;
解码获取单元,用于对所述检测单元检测到的特殊访存地?#26041;?#34892;解码,得到所述计算机系统的进程信息,其中,所述特殊访存地址为所述计算机系统对所述进程信息进行编码生成。

13.  根据权利要求9至12任一项所述的内存监控装置,其特征在于,所述监控信息还包括:所述统计信息,
所述生成单元用于:
根据所述第一获取单元获取的计算机系统的各个内存单元的被访问次数以及所述第二获取单元获取的所述进程信息,生成所述计算机系统当前运?#26800;?#36827;程对所述各个内存单元的访问频繁度;
将所述第一获取单元获取的计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

14.  根据权利要求9至13任一项所述的内存监控装置,其特征在于,
所述反馈单元包括:
缓存单元,用于将所述生成单元生成的监控信息存入所述计算机系统预先开辟的缓冲区中;
更新单元,用于更新计算机系统的内存状态位,以便所述计算机系统获 知所述缓冲区中已存入所述监控信息。

15.  根据权利要求9至13任一项所述的内存监控装置,其特征在于,
所述内存监控装置还包括:
接收单元,用于接收来自所述计算机系统的获取监控信息的命令;
所述反馈单元具体用于在所述接收单元接收到来自所述计算机系统的获取监控信息的命令时,将所述监控信息反馈给所述计算机系统。

16.  根据权利要求9至15任一项所述的内存监控装置,其特征在于,
所述第一获取单元获取的内存单元访?#24066;?#24687;还包括:所述计算机系统的各个内存单元的重用距离;
所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

说明书

说明书一种内存监控方法及相关装置
技术领域
本发明涉及计算机领域,尤其涉及一种内存监控方法及相关装置。
背景技术
内存管理是影响系统性能的一个重要因素。现有计算机系统的内存管理模块主要负责内存单元的分配、回收和换入换出。“分配?#22791;?#36131;在进程向计算机系统申请内存单元时,从空闲内存单元列表中挑选出合适的内存单元分配给进程。“回收?#22791;?#36131;当进程释放内存单元时,将释放的内存单元重?#36335;?#20837;空闲内存单元列表,并做?#23454;?#30340;碎片整理。“换出?#22791;?#36131;当物理内存不足时,将不紧急的进程数据或代码先存放到外存(磁盘等)上,从而把它们?#21152;?#30340;内存单元腾出来给紧急的进程使用,或者交给计算机系统使用。“换入?#22791;?#36131;在必要的时候,将已经换出的进程数据或代码写回已经空?#26800;?#20869;存单元中。
目前,“换出”在一定程度上考虑了实时的因素,如在?#24067;?#25903;?#22336;?#38382;位(即reference bit)的情况下,通常的做法是,计算机系统定期将所有内存单元的reference bit清零,如果在一定周期内发生了对该内存单元的访问,则将其reference bit置一。这样在下次计算机系统对reference bit清零之前,如果reference bit为1,则表明该内存单元在过去一?#38382;?#38388;有被访?#30465;?#22312;选择内存单元换出时,优先考虑reference bit为0,即在过去一?#38382;?#38388;未被访问的内存单元。但是考虑到将所有内存单元的reference bit清零所导致的性能开销,reference bit清零的周期会相对较长,因此实时性并不强。而且访问1次和访问10000次的表现是一样的,并不能真正反映reference bit的访问频度,而当未被访问的reference bit都被换出之后,即所有的reference bit都为1时,便只能随机挑选某些内存单元换出,若此时所换出的内存单元的访问频度较高,则将会对计算机系统的执行效率造成一定的影响,?#26723;?#35745;算机系统的执行效?#30465;?
发明内容
本发明实施例提供了一种内存监控方法及相关装置,用于提高计算机系统的执行效?#30465;?
本发明实施例提供以下技术方案:
本发明第一方面提供了一种内存监控方法,包括:
获取计算机系统的内存单元访?#24066;?#24687;,其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数;
获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息;
根据上述内存单元访?#24066;?#24687;和上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度;
将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
基于本发明第一方面,在第一种可能的实现方式中,上述获取计算机系统的内存单元访?#24066;?#24687;,具体为:
监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访?#24066;?#24687;。
基于本发明第一方面的第一种可能的实现方式,在第二种可能的实现方式中,上述监听上述计算机系统的内存总线,具体为:
旁路监听上述计算机系统的内存总线。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,在第三种可能的实现方式中,上述获取上述计算机系统当前运?#26800;?#36827;程信息,包括:
检测上述计算机系统的特殊访存地址;
对检测到的上述特殊访存地?#26041;?#34892;解码,得到上述计算机系统的进程信息,其中,上述特殊访存地址为上述计算机系统对上述进程信息进行编码生成。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,在第四种可能的实现方式中,上述监控信息还包括:上述统计信息,上述根据上述内存单元访?#24066;?#24687;和上述进程信息生成监控信息, 包括:
根据上述计算机系统的各个内存单元的被访问次数和上述进程信息生成上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度;
将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,在第五种可能的实现方式中,上述将上述监控信息反馈给上述计算机系统包括:
将上述监控信息存入上述计算机系统预先开辟的缓冲区中;
更新上述计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,在第六种可能的实现方式中,将上述监控信息反馈给上述计算机系?#25345;?#21069;包括:
接收来自上述计算机系统的获取监控信息的命令;
上述将上述监控信息反馈给上述计算机系统,具体为:
在接收到来自上述计算机系统的获取监控信息的命令后,将上述监控信息反馈给上述计算机系统。
基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,或者本发明第一方面的第五种可能的实现方式,或者本发明第一方面的第六种可能的实现方式,在第七种可能的实现方式中,上述内存单元访?#24066;?#24687;还包括:上述计算机系统的各个内存单元的重用距离;
上述获取计算机系统的内存单元访?#24066;?#24687;之后,还包括:
将上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统。
本发明第二方面提供了一种内存监控装置,包括:
第一获取单元,用于获取计算机系统的内存单元访?#24066;?#24687;,其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数;
第二获取单元,用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息;
生成单元,与上述第一获取单元和第二获取单元连接,用于根据上述第一获取单元获取的上述内存单元访?#24066;?#24687;,以及上述第二获取单元获取的上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度;
反馈单元,与上述生成单元连接,用于将上述生成单元生成的监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
基于本发明第二方面,在第一种可能的实现方式中,上述第一获取单元具体用于:监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访?#24066;?#24687;。
基于本发明第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述第一获取单元具体用于?#21495;?#36335;监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访?#24066;?#24687;。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,在第三种可能的实现方式中,
上述第二获取单元包括:
检测单元,用于检测上述计算机系统的特殊访存地址;
解码获取单元,用于对上述检测单元检测到的特殊访存地?#26041;?#34892;解码,得到上述计算机系统的进程信息,其中,上述特殊访存地址为上述计算机系统对上述进程信息进行编码生成。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,在第四种可能的实现方式中,上述监控信息还包括:上 述统计信息,
上述生成单元用于:
根据上述第一获取单元获取的计算机系统的各个内存单元的被访问次数以及上述第二获取单元获取的上述进程信息,生成上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度;
将上述第一获取单元获取的计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,在第五种可能的实现方式中,上述反馈单元包括:
缓存单元,用于将上述生成单元生成的监控信息存入上述计算机系统预先开辟的缓冲区中;
更新单元,用于更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,在第六种可能的实现方式中,上述内存监控装置还包括:
接收单元,用于接收来自上述计算机系统的获取监控信息的命令;
上述反馈单元具体用于在上述接收单元接收到来自上述计算机系统的获取监控信息的命令时,将上述监控信息反馈给上述计算机系统。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,或者本发明第二方面的第五种可能的实现方式,或者本发明第二方面的第六种可能的实现方式,在第七种可能的实现方式中,上述第一获取单元获取的内存单 元访?#24066;?#24687;还包括:上述计算机系统的各个内存单元的重用距离;
上述反馈单元还用于将上述第一获取单元获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存监控方法一个实施例流程示意图;
图2为本发明实施例提供的一种内存监控装置一个实施例结构示意图;
图3为本发明实施例提供的一种内存监控装置另一个实施例结构示意图;
图4为本发明实施例提供的一种内存监控装置再一个实施例结构示意图;
图5为本发明实施例提供的一种计算机监控系统一个实施例结构示意图。
具体实施方式
本发明实施例提供了一种内存监控方法及相关装置。
为使得本发明的发明目的、特征、优点能够更加的明?#38498;?#26131;懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的各个其他实施例,都属于本发明保护的?#27573;А?
下面对本发明实施例提供的一种内存监控方法,请参阅图1,本发明实施例中的一种内存监控方法,包括:
101、获取计算机系统的内存单元访?#24066;?#24687;;
其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数。进一步,上述内存单元访?#24066;?#24687;还可以包括上述计算机系统的各个内存单元的重用距离。本发明实施例中,为每个内存单元维护两个计数器,一个用于计算内存单元的被访问次数(为便于区分,下面将该计数器称为第一计数器),另一个用于计算内存单元的重用距离(为便于区分,下面将该计数器称为第二计数器),对于内存单元的被访问次数:当访问地址属于该内存单元时,则为该内存单元维护的第一计数器加一,因此,内存单元的被访问次数即为该内存单元维护的第一计数器的值。重用距离是指在两次访问同一内存单元的间隔内对其它内存单元的访问次数,当访问地址不属于该内存单元时,则为该内存单元维护的第二计数器加一,当访问地址属于该内存页面时,对第二计数器清零,则在此次清零前的值即为该内存单元的重用距离。
在本发明实施例中,内存监控装置可以通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访?#24066;?#24687;,当然,上述计算机系统的内存单元访?#24066;?#24687;?#37096;?#20197;由其它外部设备获取后发?#36879;?#20869;存监控装置,此处不作限定。其中,内存监控装置通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访?#24066;?#24687;的方式可以有如下两种:在一种实现方式中,将内存监控装置与引出的内存总线的命令和地址总线连接,使内存监控装置能够对上述命令和地址总线进?#20449;?#36335;监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访?#24066;?#24687;。在另一种实现方式中,采用非旁路监听的方式获取上述计算机系统的内存单元访?#24066;?#24687;,即,将内存监控装置串接于内存总线上,则计算机系统的所有访存操作都经过内存监控装置,因此,内存监控装置可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访?#24066;?#24687;。
102、获取上述计算机系统的进程信息;
上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程(即运行与上述计算机系统上的进程)的虚拟地址与物理地址的映射关系信息。
在一种实现方式中,计算机系统可以对上述进程信息进行编码,生成特 殊访存地址,该特殊访存地址不能被应用程序访问,只能被内存监控装置识别和访?#30465;?#20363;如,计算机系统可以与内存监控装置约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;内存监控装置实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时,即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,内存监控装置对检测到的特殊访存地?#26041;?#34892;解码,从中得到上述进程信息。
在另一种实现方式中,若内存监控装置串接于计算机系统的内存总线上,则可以将计算机系统的地址空间中的一部?#22336;?#37197;给内存监控装置上的存储器中,当计算机系统的访存请求位于内存监控装置上的存储器(可以是内部的存储空间,?#37096;?#20197;是外接的存储器)时,将该请求转发给内存监控装置上的存储器,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,内存监控装置可以将内存监控装置上的存储器映射到计算机系统的地址空间,使计算机系统使用普通的?#21015;?#25351;令直接操作内存监控装置上的存储器,其中包括将上述进程信息写入内存监控装置上的存储器,则内存监控装置可?#28304;?#20869;存监控装置上的存储器直接获取上述进程信息。
由于在计算机系统运行过程中,可能会出?#32440;?#31243;信息的更新,如页面分配,页面释放等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
103、根据上述内存单元访?#24066;?#24687;和上述进程信息生成监控信息;
其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度。
内存监控装置对步骤101获取到的上述计算机系统的各个内存单元的被访问次数和步骤102获取到的进程信息进行整理,将内存单元访?#24066;?#24687;归类到计算机系统的各个进程,即可得到计算机系统当前运?#26800;?#36827;程对上述内存单元的访问频繁度,使计算机系统获知其各个进程访?#39318;?#39057;繁和最不频繁的 内存单元。
进一步,上述监控信息还包括?#21644;?#35745;信息,该统计信息由内存监控装置将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个得到,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
104、将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
本发明实施例可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置在生成监控信息后,可以将监控信息通过存入上述计算机系统预先开辟的缓冲区中,并更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由内存监控装置与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息?#30740;?#20837;上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便内存监控装置在下一次写入监控信息?#22791;?#26032;内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息?#30740;?#20837;上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
本发明实施例?#37096;?#20197;采用被动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置在生成监控信息后,可以先将监控信息存入内存监控装置上的存储器中,当接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
本发明实施例中,内存监控装置可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若内存监控装置串接于计算机系统的内存总线上时,由于内存监控装置可以将内存监控装置上的存储器映射到计算机系统的地址空间,因此,计算机系统?#37096;?#20197;直接操作从内存监控装置上读取上述监控信息。
进一步,若步骤101获取的内存单元访?#24066;?#24687;还包括上述计算机系统的 各个内存单元的重用距离,则内存监控装置还可以将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统,以便上述计算机系统利用该重用距离进行内存管理。其中,将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统可以参照上述将监控信息反馈给计算机系统的方式,此处不再赘述。
需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面?#20445;?#22312;内存管理方式为“?#38382;健?#26102;,内存上的一段连续的地址空间也被称作“段”。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
下面对本发明实施例中的一种内存监控装置进行描述,请参阅图2,本发明实施例中的内存监控装置200,包括:
第一获取单元201,用于获取计算机系统的内存单元访?#24066;?#24687;,其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数。
进一步,第一获取单元201获取的上述内存单元访?#24066;?#24687;还可以包括:上述计算机系统的各个内存单元的重用距离。
本发明实施例中,为每个内存单元维护两个计数器,一个用于计算内存单元的被访问次数(为便于区分,下面将该计数器称为第一计数器),另一个用于计算内存单元的重用距离(为便于区分,下面将该计数器称为第二计数器),对于内存单元的被访问次数:当访问地址属于该内存单元时,则为该内存单元维护的第一计数器加一,因此,内存单元的被访问次数即为该内存单元维护的第一计数器的值。重用距离是指在两次访问同一内存单元的间隔内对其它内存单元的访问次数,当访问地址不属于该内存单元时,则为该内存单元维护的第二计数器加一,当访问地址属于该内存页面时,对第二计数器 清零,则在此次清零前的值即为该内存单元的重用距离。
在本发明实施例中,第一获取单元201可以通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访?#24066;?#24687;,当然,第一获取单元201?#37096;梢源?#20854;它外部设备获取上述计算机系统的内存单元访?#24066;?#24687;,此处不作限定。其中,第一获取单元201通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访?#24066;?#24687;的方式可以有如下两种:在一种实现方式中,将内存监控装置200与引出的内存总线的命令和地址总线连接,使第一获取单元201能够对上述命令和地址总线进?#20449;?#36335;监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访?#24066;?#24687;。在另一种实现方式中,第一获取单元201采用非旁路监听的方式获取上述计算机系统的内存单元访?#24066;?#24687;,即,将内存监控装置200串接于内存总线上,则计算机系统的所有访存操作都经过内存监控装置200,因此,内存监控装置200通过第一获取单元201可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访?#24066;?#24687;。
第二获取单元202,用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息。
在一种实现方式中,计算机系统可以对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被内存监控装置200识别和访?#30465;?#31532;二获取单元202包括:检测单元和解码获取单元,检测单元用于检测上述计算机系统的访存地址;解码获取单元,用于对上述检测单元检测到的特殊访存地?#26041;?#34892;解码,从中得到上述计算机系统的进程信息。举例说明,计算机系统可以与内存监控装置200约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;上述检测单元实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时, 即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,上述解码获取单元对检测到的特殊访存地?#26041;?#34892;解码,从中得到上述进程信息。
在另一种实现方式中,若内存监控装置200串接于计算机系统的内存总线上,内存监控装置200可以将计算机系统的地址空间中的一部?#22336;?#37197;给内存监控装置200上的存储器(可以是内部的存储空间,?#37096;?#20197;是外接的存储器)中,当计算机系统的访存请求位于内存监控装置200上的存储器时,将该请求转发给内存监控装置200上的存储器,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,内存监控装置200可以将内存监控装置200上的存储器映射到计算机系统的地址空间,使计算机系统使用普通的?#21015;?#25351;令直接操作内存监控装置200上的存储器,其中包括将上述进程信息写入内存监控装置上的存储器,则第二获取单元202可?#28304;?#20869;存监控装置上的存储器直接获取上述进程信息。
由于在计算机系统运行过程中,可能会出?#32440;?#31243;的更新,如进程启动,进程终止等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
生成单元203,用于根据第一获取单元201获取的上述内存单元访?#24066;?#24687;,以及第二获取单元202获取的上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述内存单元的访问频繁度。
进一步,上述监控信息还包括:上述统计信息,则生成单元203具体用于:根据第一获取单元201获取的上述计算机系统的各个内存单元的被访问次数和第二获取单元202获取的进程信息生成上述计算机系统当前运?#26800;?#36827;程对上述各个内存单元的访问频繁度;将第一获取单元201获取的上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到上述统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
反馈单元204,用于将生成单元203生成的监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
在一种实现方式中,本发明实施例可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,反馈单元204包括:缓存单元?#36879;?#26032;单元,其 中,缓存单元用于将生成单元203生成的监控信息存入上述计算机系统预先开辟的缓冲区中,更新单元用于更新上述计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由内存监控装置与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息?#30740;?#20837;上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便下一次更新单元在缓存单元写入监控信息?#22791;?#26032;上述计算机系统的内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息?#30740;?#20837;上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
本发明实施例?#37096;?#20197;采用被动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置200在生成监控信息后,可以先将监控信息存入内存监控装置200上的存储器中,内存监控装置还包括:接收单元,用于接收来自上述计算机系统的获取监控信息的命令;反馈单元204在上述接收单元接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
本发明实施例中,反馈单元204可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若内存监控装置200串接于计算机系统的内存总线上时,由于内存监控装置200可以将内存监控装置上的存储器映射到计算机系统的地址空间,因此,计算机系统?#37096;?#20197;直接从内存监控装置200上读取上述监控信息。
进一步,若第一获取单元201获取的内存单元访?#24066;?#24687;还包括上述计算机系统的各个内存单元的重用距离,则反馈单元204进一步还可以用于:将第一获取单元201获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统,以便上述计算机系统利用该重用距离进行内存管理。其中,反馈单元204将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统可以参照上述将监控信息反馈给计算机系统的方式,此处不再赘述。
需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面?#20445;?#22312;内存管理方式为“?#38382;健?#26102;,内存上的一段连续的地址空间也被称作“段”。
需要说明的是,本发明实施例中的内存监控装置200可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
本发明实施例?#22266;?#20379;一种计算机存储介?#21097;?#20854;中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部?#21482;?#20840;部布置。
下面以监控器301作为内存监控装置对计算机系统的命令和地址总线进?#20449;?#36335;监听为例,对本发明中的一种内存监控装置进行描述,请参阅图3,包括:
监控器301,存储器302和处理器303(其中处理器303受运行于其上的软件的控制以执行相应的功能)。需要说明的是,后文提到的计算机系统包括前述的存储器302和处理器303。
其中,监控器301通过外围总线33(外围总线例如可以是以太网、PCIe总线等)与计算机系统互联,处理器303通过上述计算机系统的内存总线31与上述计算机系统的内存30相连。监控器301用于负责旁路监听上述计算机系统的内存总线31的命令和地址总线32,以得到上述计算机系统的内存单元访?#24066;?#24687;,其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数。
监控器301还用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息。具体地,由处理器303(受运行于其上的软件的控制)对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被监控器301识别和访?#30465;?#24403;监控器301检测到上述计算机系统的特殊访存地址时,对该特殊访存地?#26041;?#34892;解码,从中得到上述计算机系统的进程信息。
监控器301还用于:根据获取的上述内存单元访?#24066;?#24687;以及上述进程信息生成监控信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述内存单元的访问频繁度。
监控器301还用于:将生成的监控信息通过外围总线33反馈给上述计算机系统。具体地,监控器301可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,即,监控器301定期将生成的监控信息存入上述计算机系统预先开辟的缓冲区中,并更新上述计算机系统的内存状态位,处理器303(受运行于其上的软件的控制)定期检查上述计算机系统的内存状态位,当发现上述计算机系统的内存状态位有更?#29575;保?#21017;从上述缓冲区中获取上述监控信息。或者,监控器301?#37096;?#20197;采用被动反馈的方式将上述监控信息反馈给上述计算机系统,即,监控器301在生成监控信息后,先将监控信息存入存储器302,处理器303(受运行于其上的软件的控制)定期向监控器发送获取监控信息的命令,当监控器接收到来?#28304;?#29702;器303的获取监控信息的命令时,将存储在存储器302中的监控信息反馈给上述计算机系统。
需要说明的是,本发明实施例中的监控器301可以是现场可编程门阵列(FPGA,Field-Programmable Gate Array),或者,?#37096;?#20197;是复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device),或者,?#37096;?#20197;是专用集成电路(ASIC,Application Specific Integrated Circuit),当然,?#37096;?#20197;是其它类型的处理器,此处不作限定。
需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面?#20445;?#22312;内存管理方式为“?#38382;健?#26102;,内存上的一段 连续的地址空间也被称作“段”。
需要说明的是,本发明实施例中的内存监控装置可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
下面以监控器401作为内存监控装置对计算机系统的命令和地址总线进行非旁路监听为例,对本发明中的一种内存监控装置进行描述,请参阅图4,包括:
监控器401,存储器402和处理器403,其中后文提到的计算机系统包括前述的存储器402和处理器403,处理器403受运行其上的软件的控制以执行相应的功能。
其中,监控器401串接于上述计算机系统的内存总线41,由于内存总线41与上述计算机系统的内存40相连,因此,上述计算机系统的所有访存操作都经过监控器401,监控器401可以统计上述计算机系统的各个内存单元的被访问次数和重用距离等信息,进而得到上述计算机系统的内存单元访?#24066;?#24687;。
监控器401还用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息。具体地,监控器401将上述计算机系统的地址空间中的一部?#22336;?#37197;给存储器402,当上述计算机系统的访存请求位于存储器402时,将该请求转发给存储器402,当上述计算机系统的访存请求位于上述计算机系统的主存时,由上述计算机系统的主存处理访存请求,通过这种方式,监控器401可以将存储器402映射到上述计算机系统的地址空间,使上述计算机系统使用普通的?#21015;?#25351;令直接操作存储器402,其中包括由处理器403(其中处理器403受运?#26800;?#36719;件模块的控制)将上述进程信息写入存储器402,由监控器401可以 从存储器402直接获取上述进程信息。
监控器401还用于:根据获取的上述内存单元访?#24066;?#24687;以及上述进程信息生成监控信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述内存单元的访问频繁度。
监控器401还用于:将生成的监控信息反馈给上述计算机系统,由于监控器401将存储器402映射到上述计算机系统的地址空间,因此,上述计算机系统可以直接从存储器402中读取数据。具体地,监控器401可以定期将生成的监控信息存入存储器402,处理器403(其中处理器403受运行其上的软件的控制)定期从存储器402读取上述监控信息。
需要说明的是,本发明实施例中的监控器401可以是FPGA,或者,?#37096;?#20197;是CPLD,或者,?#37096;?#20197;是ASIC,当然,?#37096;?#20197;是其它类型的处理器,此处不作限定。
需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面?#20445;?#22312;内存管理方式为“?#38382;健?#26102;,内存上的一段连续的地址空间也被称作“段”。
需要说明的是,本发明实施例中的内存监控装置可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
下面对本发明实施中的一种计算机监控系统进行描述,如图5所示,本发明实施例中的计算机监控系统500包括:
至少一个存储器501以及至少一个处理器502,其中上述至少一个处理器502中包括用于负责业务功能的处理器(后文简称为业务处理器502)和用于负责监控功能的处理器(后文简称为监控处理器502),其中后文提到的计算机系统包括前述的存储器501和业务处理器502。在本发明实施例中,存储器501以及处理器502可以通过总线或其它方式连接,如图5所示以通过总线503连接为例。
上述本发明实施例揭?#38236;?#26041;法可以应用于监控处理器502中,或者说由监控处理器502以实现,监控处理器502可能是一种集成电路芯片,具有指令和数据的执行能力,以及信号的处理能力。在实现过程中,上述方法的各步骤可以通过监控处理器502中的?#24067;?#30340;集成逻辑电路或者软件?#38382;?#30340;指令完成。上述的监控处理器502可以是通用处理器(CPU)、数?#20013;?#21495;处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立?#24067;?#32452;件。可以实?#21482;?#32773;执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器?#37096;?#20197;是任何常规的处理器?#21462;?#32467;合本发明实施例所公开的方法的步骤可以直接体现为?#24067;?#22788;理器执行完成,或者用处理器中的?#24067;?#21450;软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可?#21015;?#21487;编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器读取存储器501中的信息,结合其?#24067;?#23436;成上述方法的步骤。
其中,存储器501可以是静态随机存储器(SRAM,Static Random Access Memory),?#37096;?#20197;是动态随机存储器(DRAM,Dynamic Random Access Memory),或者?#37096;?#20197;是其它存储器,如Flash闪存等,此处不作限定。
其中,监控处理器502执行如下步骤:
获取计算机系统的内存单元访?#24066;?#24687;,其中,上述内存单元访?#24066;?#24687;包括:上述计算机系统的各个内存单元的被访问次数。进一步,上述内存单元访?#24066;?#24687;还可以包括上述计算机系统的各个内存单元的重用距离。
获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运?#26800;?#36827;程的虚拟地址与物理地址的映射关系信息。
根据上述内存单元访?#24066;?#24687;和上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运?#26800;?#36827;程对上述内存单元的访问频繁度。
将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
在本发明实施例中,监控处理器502可以通过监听计算机系统的内存总线来获取上述计算机系统的内存单元访?#24066;?#24687;,当然,上述计算机系统的内存单元访?#24066;?#24687;?#37096;?#20197;由其它外部设备获取后发?#36879;?#30417;控处理器502,此处不作限定。其中,监控处理器502通过监听计算机系统的内存总线来获取上述计算机系统的内存单元访?#24066;?#24687;的方式可以有如下两种:在一种实现方式中,将监控处理器502与上述计算器系统的内存总线引出的命令和地址总线连接,使监控处理器502能够对上述命令和地址总线进?#20449;?#36335;监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访?#24066;?#24687;。在另一种实现方式中,采用非旁路监听的方式获取上述计算机系统的内存单元访?#24066;?#24687;,即,将监控处理器502串接于内存总线上,则上述计算机系统的所有访存操作都经过监控处理器502,因此,监控处理器502可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访?#24066;?#24687;。
在一种实现方式中,上述计算机系统可以对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被监控处理器502识别和访?#30465;?#20363;如,计算机系统可以与监控处理器502约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;监控处理器502实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时,即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,监控处理器502对检测到的特殊访存地?#26041;?#34892;解码,从中得到上述进程信息。
在另一种实现方式中,若监控处理器502串接于计算机系统的内存总线上,则可以将计算机系统的地址空间中的一部?#22336;?#37197;给存储器501中,当计算机系统的访存请求位于存储器301时,将该请求通过总线503转发给存储器501,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,监控处理器502可以将存储器501映射到计算机系统的地址空间,使计算机系统使用普通的?#21015;?#25351;令直接操作存储器501,其中包括将上述进程信息写入内存储器501,则监控处理器502可?#28304;?#23384;储器501直接获取上述进程信息。
由于在计算机系统运行过程中,可能会出?#32440;?#31243;的更新,如进程启动,进程终止等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
进一步,上述监控信息还包括:上述统计信息,则监控处理器502还用于:将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
本发明实施例中,监控处理器502可以采用直接反馈的方式将上述监控信息反馈给上述计算机系统,则监控处理器502在生成监控信息后,可以将监控信息通过存入上述计算机系统预先开辟的缓冲区中,并更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由监控处理器502与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息?#30740;?#20837;上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便监控处理器502在下一次写入监控信息?#22791;?#26032;内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息?#30740;?#20837;上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
本发明实施例中,监控处理器502?#37096;?#20197;采用间接反馈的方式将上述监控信息反馈给上述计算机系统,则监控处理器502在生成监控信息后,可以 先将监控信息存入监控处理器502上的存储器中,当接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
本发明实施例中,监控处理器502可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若监控处理器502串接于计算机系统的内存总线上时,由于监控处理器502可以将存储器501映射到计算机系统的地址空间,因此,计算机系统?#37096;?#20197;直接操作从监控处理器502上读取上述监控信息。
需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面?#20445;?#22312;内存管理方式为“?#38382;健?#26102;,内存上的一段连续的地址空间也被称作“段”。
需要说明的是,本发明实施例中的监控处理器502可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中通过获取计算机系统的内存单元访?#24066;?#24687;和进程信息,提炼出计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度,生成包含计算机系统当前运?#26800;?#36827;程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效?#30465;?
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系?#26800;?#21160;作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人?#24065;?#24212;该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以理解上述实施例中的各种方法中的全部或部分 步骤是可以通过程序来指令相关的?#24067;?#26469;完成,该程序可以存储于一计算机可读存储介质中,存储介质例如可以包括:只读存储器、随机存储器、磁盘或光盘?#21462;?
以上对本发明所提供的一种内存监控方法及相关装置进行了详?#38468;?#32461;,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用?#27573;?#19978;均会有改变之处,本说明书内容不应理解为对本发明的限制。

关于本文
本文标题:一种内存监控方法及相关装置.pdf
链接地址:http://www.pqiex.tw/p-6115853.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网?#31350;?#26381; - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 新疆十一选五开奖 云南十一选五开奖结果查询 云南选号网 重庆百变王牌开奖时间 浙江体育彩票排列三走势图 移动棋牌10000金币 601268股票行情中心 北京pk10对刷违规吗 双色球走势图2元坐标连线 甘肃十一选五前三遗漏