一种内存监控方法及相关装置转让专利

申请号 : CN201210591865.0

文献号 : CN103914363B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔泽汉陈明宇陈荔城陈明扬

申请人 : 华为技术有限公司中国科学院计算技术研究所

摘要 :

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

权利要求 :

1.一种内存监控方法,其特征在于,包括:获取计算机系统的内存单元访问信息,其中,所述内存单元访问信息包括:所述计算机系统的各个内存单元的被访问次数;

获取所述计算机系统的进程信息,其中,所述进程信息包括:所述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息;

根据所述内存单元访问信息和所述进程信息生成监控信息,其中,所述监控信息包括:所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

将所述监控信息反馈给所述计算机系统,以便所述计算机系统根据所述监控信息进行内存管理。

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

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

4.根据权利要求1至3任一项所述的方法,其特征在于,所述获取所述计算机系统当前运行的进程信息,包括:检测所述计算机系统的特殊访存地址;

对检测到的所述特殊访存地址进行解码,得到所述计算机系统的进程信息,其中,所述特殊访存地址为所述计算机系统对所述进程信息进行编码生成。

5.根据权利要求1至3任一项所述的方法,其特征在于,所述监控信息还包括:统计信息,所述根据所述内存单元访问信息和所述进程信息生成监控信息,包括:根据所述计算机系统的各个内存单元的被访问次数和所述进程信息生成所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

将所述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

6.根据权利要求4所述的方法,其特征在于,所述监控信息还包括:统计信息,所述根据所述内存单元访问信息和所述进程信息生成监控信息,包括:根据所述计算机系统的各个内存单元的被访问次数和所述进程信息生成所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

将所述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

7.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述监控信息反馈给所述计算机系统包括:将所述监控信息存入所述计算机系统预先开辟的缓冲区中;

更新所述计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

8.根据权利要求4所述的方法,其特征在于,所述将所述监控信息反馈给所述计算机系统包括:将所述监控信息存入所述计算机系统预先开辟的缓冲区中;

更新所述计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

9.根据权利要求5所述的方法,其特征在于,所述将所述监控信息反馈给所述计算机系统包括:将所述监控信息存入所述计算机系统预先开辟的缓冲区中;

更新所述计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

10.根据权利要求6所述的方法,其特征在于,所述将所述监控信息反馈给所述计算机系统包括:将所述监控信息存入所述计算机系统预先开辟的缓冲区中;

更新所述计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

11.根据权利要求1至3任一项所述的方法,其特征在于,将所述监控信息反馈给所述计算机系统之前包括:接收来自所述计算机系统的获取监控信息的命令;

所述将所述监控信息反馈给所述计算机系统,具体为:在接收到来自所述计算机系统的获取监控信息的命令后,将所述监控信息反馈给所述计算机系统。

12.根据权利要求4所述的方法,其特征在于,将所述监控信息反馈给所述计算机系统之前包括:接收来自所述计算机系统的获取监控信息的命令;

所述将所述监控信息反馈给所述计算机系统,具体为:在接收到来自所述计算机系统的获取监控信息的命令后,将所述监控信息反馈给所述计算机系统。

13.根据权利要求5所述的方法,其特征在于,将所述监控信息反馈给所述计算机系统之前包括:接收来自所述计算机系统的获取监控信息的命令;

所述将所述监控信息反馈给所述计算机系统,具体为:在接收到来自所述计算机系统的获取监控信息的命令后,将所述监控信息反馈给所述计算机系统。

14.根据权利要求6所述的方法,其特征在于,将所述监控信息反馈给所述计算机系统之前包括:接收来自所述计算机系统的获取监控信息的命令;

所述将所述监控信息反馈给所述计算机系统,具体为:在接收到来自所述计算机系统的获取监控信息的命令后,将所述监控信息反馈给所述计算机系统。

15.根据权利要求1至3任一项所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

16.根据权利要求4所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

17.根据权利要求5所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

18.根据权利要求7所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

19.根据权利要求11所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

20.根据权利要求6、8-10、12-14中任一项所述的方法,其特征在于,所述内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述获取计算机系统的内存单元访问信息之后,还包括:将所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

21.一种内存监控装置,其特征在于,包括:第一获取单元,用于获取计算机系统的内存单元访问信息,其中,所述内存单元访问信息包括:所述计算机系统的各个内存单元的被访问次数;

第二获取单元,用于获取所述计算机系统的进程信息,其中,所述进程信息包括:所述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息;

生成单元,与所述第一获取单元和第二获取单元连接,用于根据所述第一获取单元获取的所述内存单元访问信息,以及所述第二获取单元获取的所述进程信息生成监控信息,其中,所述监控信息包括:所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

反馈单元,与所述生成单元连接,用于将所述生成单元生成的监控信息反馈给所述计算机系统,以便所述计算机系统根据所述监控信息进行内存管理。

22.根据权利要求21所述的内存监控装置,其特征在于,所述第一获取单元具体用于:监听所述计算机系统的内存总线,得到所述计算机系统的内存单元访问信息。

23.根据权利要求22所述的内存监控装置,其特征在于,所述第一获取单元具体用于:旁路监听所述计算机系统的内存总线,得到所述计算机系统的内存单元访问信息。

24.根据权利要求21至23任一项所述的内存监控装置,其特征在于,所述第二获取单元包括:

检测单元,用于检测所述计算机系统的特殊访存地址;

解码获取单元,用于对所述检测单元检测到的特殊访存地址进行解码,得到所述计算机系统的进程信息,其中,所述特殊访存地址为所述计算机系统对所述进程信息进行编码生成。

25.根据权利要求21至23任一项所述的内存监控装置,其特征在于,所述监控信息还包括:统计信息,所述生成单元用于:

根据所述第一获取单元获取的计算机系统的各个内存单元的被访问次数以及所述第二获取单元获取的所述进程信息,生成所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

将所述第一获取单元获取的计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

26.根据权利要求24所述的内存监控装置,其特征在于,所述监控信息还包括:统计信息,所述生成单元用于:

根据所述第一获取单元获取的计算机系统的各个内存单元的被访问次数以及所述第二获取单元获取的所述进程信息,生成所述计算机系统当前运行的进程对所述各个内存单元的访问频繁度;

将所述第一获取单元获取的计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,所述统计信息包括:所述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。

27.根据权利要求21至23任一项所述的内存监控装置,其特征在于,所述反馈单元包括:

缓存单元,用于将所述生成单元生成的监控信息存入所述计算机系统预先开辟的缓冲区中;

更新单元,用于更新计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

28.根据权利要求24所述的内存监控装置,其特征在于,所述反馈单元包括:

缓存单元,用于将所述生成单元生成的监控信息存入所述计算机系统预先开辟的缓冲区中;

更新单元,用于更新计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

29.根据权利要求25所述的内存监控装置,其特征在于,所述反馈单元包括:

缓存单元,用于将所述生成单元生成的监控信息存入所述计算机系统预先开辟的缓冲区中;

更新单元,用于更新计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

30.根据权利要求26所述的内存监控装置,其特征在于,所述反馈单元包括:

缓存单元,用于将所述生成单元生成的监控信息存入所述计算机系统预先开辟的缓冲区中;

更新单元,用于更新计算机系统的内存状态位,以便所述计算机系统获知所述缓冲区中已存入所述监控信息。

31.根据权利要求21至23任一项所述的内存监控装置,其特征在于,所述内存监控装置还包括:

接收单元,用于接收来自所述计算机系统的获取监控信息的命令;

所述反馈单元具体用于在所述接收单元接收到来自所述计算机系统的获取监控信息的命令时,将所述监控信息反馈给所述计算机系统。

32.根据权利要求24所述的内存监控装置,其特征在于,所述内存监控装置还包括:

接收单元,用于接收来自所述计算机系统的获取监控信息的命令;

所述反馈单元具体用于在所述接收单元接收到来自所述计算机系统的获取监控信息的命令时,将所述监控信息反馈给所述计算机系统。

33.根据权利要求25所述的内存监控装置,其特征在于,所述内存监控装置还包括:

接收单元,用于接收来自所述计算机系统的获取监控信息的命令;

所述反馈单元具体用于在所述接收单元接收到来自所述计算机系统的获取监控信息的命令时,将所述监控信息反馈给所述计算机系统。

34.根据权利要求26所述的内存监控装置,其特征在于,所述内存监控装置还包括:

接收单元,用于接收来自所述计算机系统的获取监控信息的命令;

所述反馈单元具体用于在所述接收单元接收到来自所述计算机系统的获取监控信息的命令时,将所述监控信息反馈给所述计算机系统。

35.根据权利要求21至23任一项所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

36.根据权利要求24所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

37.根据权利要求25所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

38.根据权利要求27所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

39.根据权利要求31所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

40.根据权利要求26、28-30、32-34中任一项所述的内存监控装置,其特征在于,所述第一获取单元获取的内存单元访问信息还包括:所述计算机系统的各个内存单元的重用距离;

所述反馈单元还用于将所述第一获取单元获取到的所述计算机系统的各个内存单元的重用距离反馈给所述计算机系统。

说明书 :

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

技术领域

[0001] 本发明涉及计算机领域,尤其涉及一种内存监控方法及相关装置。

背景技术

[0002] 内存管理是影响系统性能的一个重要因素。现有计算机系统的内存管理模块主要负责内存单元的分配、回收和换入换出。“分配”负责在进程向计算机系统申请内存单元时,从空闲内存单元列表中挑选出合适的内存单元分配给进程。“回收”负责当进程释放内存单元时,将释放的内存单元重新放入空闲内存单元列表,并做适当的碎片整理。“换出”负责当物理内存不足时,将不紧急的进程数据或代码先存放到外存(磁盘等)上,从而把它们占用的内存单元腾出来给紧急的进程使用,或者交给计算机系统使用。“换入”负责在必要的时候,将已经换出的进程数据或代码写回已经空闲的内存单元中。
[0003] 目前,“换出”在一定程度上考虑了实时的因素,如在硬件支持访问位(即reference bit)的情况下,通常的做法是,计算机系统定期将所有内存单元的reference bit清零,如果在一定周期内发生了对该内存单元的访问,则将其reference bit置一。这样在下次计算机系统对reference bit清零之前,如果reference bit为1,则表明该内存单元在过去一段时间有被访问。在选择内存单元换出时,优先考虑reference bit为0,即在过去一段时间未被访问的内存单元。但是考虑到将所有内存单元的reference bit清零所导致的性能开销,reference bit清零的周期会相对较长,因此实时性并不强。而且访问1次和访问10000次的表现是一样的,并不能真正反映reference bit的访问频度,而当未被访问的reference bit都被换出之后,即所有的reference bit都为1时,便只能随机挑选某些内存单元换出,若此时所换出的内存单元的访问频度较高,则将会对计算机系统的执行效率造成一定的影响,降低计算机系统的执行效率。

发明内容

[0004] 本发明实施例提供了一种内存监控方法及相关装置,用于提高计算机系统的执行效率。
[0005] 本发明实施例提供以下技术方案:
[0006] 本发明第一方面提供了一种内存监控方法,包括:
[0007] 获取计算机系统的内存单元访问信息,其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数;
[0008] 获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息;
[0009] 根据上述内存单元访问信息和上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度;
[0010] 将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
[0011] 基于本发明第一方面,在第一种可能的实现方式中,上述获取计算机系统的内存单元访问信息,具体为:
[0012] 监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访问信息。
[0013] 基于本发明第一方面的第一种可能的实现方式,在第二种可能的实现方式中,上述监听上述计算机系统的内存总线,具体为:
[0014] 旁路监听上述计算机系统的内存总线。
[0015] 基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,在第三种可能的实现方式中,上述获取上述计算机系统当前运行的进程信息,包括:
[0016] 检测上述计算机系统的特殊访存地址;
[0017] 对检测到的上述特殊访存地址进行解码,得到上述计算机系统的进程信息,其中,上述特殊访存地址为上述计算机系统对上述进程信息进行编码生成。
[0018] 基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,在第四种可能的实现方式中,上述监控信息还包括:上述统计信息,上述根据上述内存单元访问信息和上述进程信息生成监控信息,包括:
[0019] 根据上述计算机系统的各个内存单元的被访问次数和上述进程信息生成上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度;
[0020] 将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
[0021] 基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,在第五种可能的实现方式中,上述将上述监控信息反馈给上述计算机系统包括:
[0022] 将上述监控信息存入上述计算机系统预先开辟的缓冲区中;
[0023] 更新上述计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。
[0024] 基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,在第六种可能的实现方式中,将上述监控信息反馈给上述计算机系统之前包括:
[0025] 接收来自上述计算机系统的获取监控信息的命令;
[0026] 上述将上述监控信息反馈给上述计算机系统,具体为:
[0027] 在接收到来自上述计算机系统的获取监控信息的命令后,将上述监控信息反馈给上述计算机系统。
[0028] 基于本发明第一方面,或者本发明第一方面的第一种可能的实现方式,或者本发明第一方面的第二种可能的实现方式,或者本发明第一方面的第三种可能的实现方式,或者本发明第一方面的第四种可能的实现方式,或者本发明第一方面的第五种可能的实现方式,或者本发明第一方面的第六种可能的实现方式,在第七种可能的实现方式中,上述内存单元访问信息还包括:上述计算机系统的各个内存单元的重用距离;
[0029] 上述获取计算机系统的内存单元访问信息之后,还包括:
[0030] 将上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统。
[0031] 本发明第二方面提供了一种内存监控装置,包括:
[0032] 第一获取单元,用于获取计算机系统的内存单元访问信息,其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数;
[0033] 第二获取单元,用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息;
[0034] 生成单元,与上述第一获取单元和第二获取单元连接,用于根据上述第一获取单元获取的上述内存单元访问信息,以及上述第二获取单元获取的上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度;
[0035] 反馈单元,与上述生成单元连接,用于将上述生成单元生成的监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
[0036] 基于本发明第二方面,在第一种可能的实现方式中,上述第一获取单元具体用于:监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访问信息。
[0037] 基于本发明第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述第一获取单元具体用于:旁路监听上述计算机系统的内存总线,得到上述计算机系统的内存单元访问信息。
[0038] 基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,在第三种可能的实现方式中,
[0039] 上述第二获取单元包括:
[0040] 检测单元,用于检测上述计算机系统的特殊访存地址;
[0041] 解码获取单元,用于对上述检测单元检测到的特殊访存地址进行解码,得到上述计算机系统的进程信息,其中,上述特殊访存地址为上述计算机系统对上述进程信息进行编码生成。
[0042] 基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,在第四种可能的实现方式中,上述监控信息还包括:上述统计信息,
[0043] 上述生成单元用于:
[0044] 根据上述第一获取单元获取的计算机系统的各个内存单元的被访问次数以及上述第二获取单元获取的上述进程信息,生成上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度;
[0045] 将上述第一获取单元获取的计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
[0046] 基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,在第五种可能的实现方式中,上述反馈单元包括:
[0047] 缓存单元,用于将上述生成单元生成的监控信息存入上述计算机系统预先开辟的缓冲区中;
[0048] 更新单元,用于更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。
[0049] 基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,在第六种可能的实现方式中,上述内存监控装置还包括:
[0050] 接收单元,用于接收来自上述计算机系统的获取监控信息的命令;
[0051] 上述反馈单元具体用于在上述接收单元接收到来自上述计算机系统的获取监控信息的命令时,将上述监控信息反馈给上述计算机系统。
[0052] 基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,或者本发明第二方面的第二种可能的实现方式,或者本发明第二方面的第三种可能的实现方式,或者本发明第二方面的第四种可能的实现方式,或者本发明第二方面的第五种可能的实现方式,或者本发明第二方面的第六种可能的实现方式,在第七种可能的实现方式中,上述第一获取单元获取的内存单元访问信息还包括:上述计算机系统的各个内存单元的重用距离;
[0053] 上述反馈单元还用于将上述第一获取单元获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统。
[0054] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。

附图说明

[0055] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0056] 图1为本发明实施例提供的一种内存监控方法一个实施例流程示意图;
[0057] 图2为本发明实施例提供的一种内存监控装置一个实施例结构示意图;
[0058] 图3为本发明实施例提供的一种内存监控装置另一个实施例结构示意图;
[0059] 图4为本发明实施例提供的一种内存监控装置再一个实施例结构示意图;
[0060] 图5为本发明实施例提供的一种计算机监控系统一个实施例结构示意图。

具体实施方式

[0061] 本发明实施例提供了一种内存监控方法及相关装置。
[0062] 为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的各个其他实施例,都属于本发明保护的范围。
[0063] 下面对本发明实施例提供的一种内存监控方法,请参阅图1,本发明实施例中的一种内存监控方法,包括:
[0064] 101、获取计算机系统的内存单元访问信息;
[0065] 其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数。进一步,上述内存单元访问信息还可以包括上述计算机系统的各个内存单元的重用距离。本发明实施例中,为每个内存单元维护两个计数器,一个用于计算内存单元的被访问次数(为便于区分,下面将该计数器称为第一计数器),另一个用于计算内存单元的重用距离(为便于区分,下面将该计数器称为第二计数器),对于内存单元的被访问次数:当访问地址属于该内存单元时,则为该内存单元维护的第一计数器加一,因此,内存单元的被访问次数即为该内存单元维护的第一计数器的值。重用距离是指在两次访问同一内存单元的间隔内对其它内存单元的访问次数,当访问地址不属于该内存单元时,则为该内存单元维护的第二计数器加一,当访问地址属于该内存页面时,对第二计数器清零,则在此次清零前的值即为该内存单元的重用距离。
[0066] 在本发明实施例中,内存监控装置可以通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访问信息,当然,上述计算机系统的内存单元访问信息也可以由其它外部设备获取后发送给内存监控装置,此处不作限定。其中,内存监控装置通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访问信息的方式可以有如下两种:在一种实现方式中,将内存监控装置与引出的内存总线的命令和地址总线连接,使内存监控装置能够对上述命令和地址总线进行旁路监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访问信息。在另一种实现方式中,采用非旁路监听的方式获取上述计算机系统的内存单元访问信息,即,将内存监控装置串接于内存总线上,则计算机系统的所有访存操作都经过内存监控装置,因此,内存监控装置可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访问信息。
[0067] 102、获取上述计算机系统的进程信息;
[0068] 上述进程信息包括:上述计算机系统当前运行的进程(即运行与上述计算机系统上的进程)的虚拟地址与物理地址的映射关系信息。
[0069] 在一种实现方式中,计算机系统可以对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被内存监控装置识别和访问。例如,计算机系统可以与内存监控装置约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;内存监控装置实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时,即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,内存监控装置对检测到的特殊访存地址进行解码,从中得到上述进程信息。
[0070] 在另一种实现方式中,若内存监控装置串接于计算机系统的内存总线上,则可以将计算机系统的地址空间中的一部分分配给内存监控装置上的存储器中,当计算机系统的访存请求位于内存监控装置上的存储器(可以是内部的存储空间,也可以是外接的存储器)时,将该请求转发给内存监控装置上的存储器,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,内存监控装置可以将内存监控装置上的存储器映射到计算机系统的地址空间,使计算机系统使用普通的读写指令直接操作内存监控装置上的存储器,其中包括将上述进程信息写入内存监控装置上的存储器,则内存监控装置可以从内存监控装置上的存储器直接获取上述进程信息。
[0071] 由于在计算机系统运行过程中,可能会出现进程信息的更新,如页面分配,页面释放等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
[0072] 103、根据上述内存单元访问信息和上述进程信息生成监控信息;
[0073] 其中,上述监控信息包括:上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度。
[0074] 内存监控装置对步骤101获取到的上述计算机系统的各个内存单元的被访问次数和步骤102获取到的进程信息进行整理,将内存单元访问信息归类到计算机系统的各个进程,即可得到计算机系统当前运行的进程对上述内存单元的访问频繁度,使计算机系统获知其各个进程访问最频繁和最不频繁的内存单元。
[0075] 进一步,上述监控信息还包括:统计信息,该统计信息由内存监控装置将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个得到,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
[0076] 104、将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
[0077] 本发明实施例可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置在生成监控信息后,可以将监控信息通过存入上述计算机系统预先开辟的缓冲区中,并更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由内存监控装置与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息已写入上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便内存监控装置在下一次写入监控信息时更新内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息已写入上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
[0078] 本发明实施例也可以采用被动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置在生成监控信息后,可以先将监控信息存入内存监控装置上的存储器中,当接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
[0079] 本发明实施例中,内存监控装置可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若内存监控装置串接于计算机系统的内存总线上时,由于内存监控装置可以将内存监控装置上的存储器映射到计算机系统的地址空间,因此,计算机系统也可以直接操作从内存监控装置上读取上述监控信息。
[0080] 进一步,若步骤101获取的内存单元访问信息还包括上述计算机系统的各个内存单元的重用距离,则内存监控装置还可以将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统,以便上述计算机系统利用该重用距离进行内存管理。其中,将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统可以参照上述将监控信息反馈给计算机系统的方式,此处不再赘述。
[0081] 需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面”,在内存管理方式为“段式”时,内存上的一段连续的地址空间也被称作“段”。
[0082] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。
[0083] 下面对本发明实施例中的一种内存监控装置进行描述,请参阅图2,本发明实施例中的内存监控装置200,包括:
[0084] 第一获取单元201,用于获取计算机系统的内存单元访问信息,其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数。
[0085] 进一步,第一获取单元201获取的上述内存单元访问信息还可以包括:上述计算机系统的各个内存单元的重用距离。
[0086] 本发明实施例中,为每个内存单元维护两个计数器,一个用于计算内存单元的被访问次数(为便于区分,下面将该计数器称为第一计数器),另一个用于计算内存单元的重用距离(为便于区分,下面将该计数器称为第二计数器),对于内存单元的被访问次数:当访问地址属于该内存单元时,则为该内存单元维护的第一计数器加一,因此,内存单元的被访问次数即为该内存单元维护的第一计数器的值。重用距离是指在两次访问同一内存单元的间隔内对其它内存单元的访问次数,当访问地址不属于该内存单元时,则为该内存单元维护的第二计数器加一,当访问地址属于该内存页面时,对第二计数器清零,则在此次清零前的值即为该内存单元的重用距离。
[0087] 在本发明实施例中,第一获取单元201可以通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访问信息,当然,第一获取单元201也可以从其它外部设备获取上述计算机系统的内存单元访问信息,此处不作限定。其中,第一获取单元201通过监听计算机系统的内存总线来得到上述计算机系统的内存单元访问信息的方式可以有如下两种:在一种实现方式中,将内存监控装置200与引出的内存总线的命令和地址总线连接,使第一获取单元201能够对上述命令和地址总线进行旁路监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访问信息。在另一种实现方式中,第一获取单元201采用非旁路监听的方式获取上述计算机系统的内存单元访问信息,即,将内存监控装置200串接于内存总线上,则计算机系统的所有访存操作都经过内存监控装置200,因此,内存监控装置200通过第一获取单元201可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访问信息。
[0088] 第二获取单元202,用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息。
[0089] 在一种实现方式中,计算机系统可以对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被内存监控装置200识别和访问。第二获取单元202包括:检测单元和解码获取单元,检测单元用于检测上述计算机系统的访存地址;解码获取单元,用于对上述检测单元检测到的特殊访存地址进行解码,从中得到上述计算机系统的进程信息。举例说明,计算机系统可以与内存监控装置200约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;上述检测单元实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时,即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,上述解码获取单元对检测到的特殊访存地址进行解码,从中得到上述进程信息。
[0090] 在另一种实现方式中,若内存监控装置200串接于计算机系统的内存总线上,内存监控装置200可以将计算机系统的地址空间中的一部分分配给内存监控装置200上的存储器(可以是内部的存储空间,也可以是外接的存储器)中,当计算机系统的访存请求位于内存监控装置200上的存储器时,将该请求转发给内存监控装置200上的存储器,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,内存监控装置200可以将内存监控装置200上的存储器映射到计算机系统的地址空间,使计算机系统使用普通的读写指令直接操作内存监控装置200上的存储器,其中包括将上述进程信息写入内存监控装置上的存储器,则第二获取单元202可以从内存监控装置上的存储器直接获取上述进程信息。
[0091] 由于在计算机系统运行过程中,可能会出现进程的更新,如进程启动,进程终止等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
[0092] 生成单元203,用于根据第一获取单元201获取的上述内存单元访问信息,以及第二获取单元202获取的上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述内存单元的访问频繁度。
[0093] 进一步,上述监控信息还包括:上述统计信息,则生成单元203具体用于:根据第一获取单元201获取的上述计算机系统的各个内存单元的被访问次数和第二获取单元202获取的进程信息生成上述计算机系统当前运行的进程对上述各个内存单元的访问频繁度;将第一获取单元201获取的上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到上述统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
[0094] 反馈单元204,用于将生成单元203生成的监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
[0095] 在一种实现方式中,本发明实施例可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,反馈单元204包括:缓存单元和更新单元,其中,缓存单元用于将生成单元203生成的监控信息存入上述计算机系统预先开辟的缓冲区中,更新单元用于更新上述计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由内存监控装置与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息已写入上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便下一次更新单元在缓存单元写入监控信息时更新上述计算机系统的内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息已写入上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
[0096] 本发明实施例也可以采用被动反馈的方式将上述监控信息反馈给上述计算机系统,则内存监控装置200在生成监控信息后,可以先将监控信息存入内存监控装置200上的存储器中,内存监控装置还包括:接收单元,用于接收来自上述计算机系统的获取监控信息的命令;反馈单元204在上述接收单元接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
[0097] 本发明实施例中,反馈单元204可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若内存监控装置200串接于计算机系统的内存总线上时,由于内存监控装置200可以将内存监控装置上的存储器映射到计算机系统的地址空间,因此,计算机系统也可以直接从内存监控装置200上读取上述监控信息。
[0098] 进一步,若第一获取单元201获取的内存单元访问信息还包括上述计算机系统的各个内存单元的重用距离,则反馈单元204进一步还可以用于:将第一获取单元201获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统,以便上述计算机系统利用该重用距离进行内存管理。其中,反馈单元204将获取到的上述计算机系统的各个内存单元的重用距离反馈给上述计算机系统可以参照上述将监控信息反馈给计算机系统的方式,此处不再赘述。
[0099] 需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面”,在内存管理方式为“段式”时,内存上的一段连续的地址空间也被称作“段”。
[0100] 需要说明的是,本发明实施例中的内存监控装置200可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0101] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。
[0102] 本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部布置。
[0103] 下面以监控器301作为内存监控装置对计算机系统的命令和地址总线进行旁路监听为例,对本发明中的一种内存监控装置进行描述,请参阅图3,包括:
[0104] 监控器301,存储器302和处理器303(其中处理器303受运行于其上的软件的控制以执行相应的功能)。需要说明的是,后文提到的计算机系统包括前述的存储器302和处理器303。
[0105] 其中,监控器301通过外围总线33(外围总线例如可以是以太网、PCIe总线等)与计算机系统互联,处理器303通过上述计算机系统的内存总线31与上述计算机系统的内存30相连。监控器301用于负责旁路监听上述计算机系统的内存总线31的命令和地址总线32,以得到上述计算机系统的内存单元访问信息,其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数。
[0106] 监控器301还用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息。具体地,由处理器303(受运行于其上的软件的控制)对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被监控器301识别和访问。当监控器301检测到上述计算机系统的特殊访存地址时,对该特殊访存地址进行解码,从中得到上述计算机系统的进程信息。
[0107] 监控器301还用于:根据获取的上述内存单元访问信息以及上述进程信息生成监控信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述内存单元的访问频繁度。
[0108] 监控器301还用于:将生成的监控信息通过外围总线33反馈给上述计算机系统。具体地,监控器301可以采用主动反馈的方式将上述监控信息反馈给上述计算机系统,即,监控器301定期将生成的监控信息存入上述计算机系统预先开辟的缓冲区中,并更新上述计算机系统的内存状态位,处理器303(受运行于其上的软件的控制)定期检查上述计算机系统的内存状态位,当发现上述计算机系统的内存状态位有更新时,则从上述缓冲区中获取上述监控信息。或者,监控器301也可以采用被动反馈的方式将上述监控信息反馈给上述计算机系统,即,监控器301在生成监控信息后,先将监控信息存入存储器302,处理器303(受运行于其上的软件的控制)定期向监控器发送获取监控信息的命令,当监控器接收到来自处理器303的获取监控信息的命令时,将存储在存储器302中的监控信息反馈给上述计算机系统。
[0109] 需要说明的是,本发明实施例中的监控器301可以是现场可编程门阵列(FPGA,Field-Programmable Gate Array),或者,也可以是复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device),或者,也可以是专用集成电路(ASIC,Application Specific Integrated Circuit),当然,也可以是其它类型的处理器,此处不作限定。
[0110] 需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面”,在内存管理方式为“段式”时,内存上的一段连续的地址空间也被称作“段”。
[0111] 需要说明的是,本发明实施例中的内存监控装置可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0112] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。
[0113] 下面以监控器401作为内存监控装置对计算机系统的命令和地址总线进行非旁路监听为例,对本发明中的一种内存监控装置进行描述,请参阅图4,包括:
[0114] 监控器401,存储器402和处理器403,其中后文提到的计算机系统包括前述的存储器402和处理器403,处理器403受运行其上的软件的控制以执行相应的功能。
[0115] 其中,监控器401串接于上述计算机系统的内存总线41,由于内存总线41与上述计算机系统的内存40相连,因此,上述计算机系统的所有访存操作都经过监控器401,监控器401可以统计上述计算机系统的各个内存单元的被访问次数和重用距离等信息,进而得到上述计算机系统的内存单元访问信息。
[0116] 监控器401还用于获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息。具体地,监控器401将上述计算机系统的地址空间中的一部分分配给存储器402,当上述计算机系统的访存请求位于存储器402时,将该请求转发给存储器402,当上述计算机系统的访存请求位于上述计算机系统的主存时,由上述计算机系统的主存处理访存请求,通过这种方式,监控器401可以将存储器402映射到上述计算机系统的地址空间,使上述计算机系统使用普通的读写指令直接操作存储器402,其中包括由处理器403(其中处理器403受运行的软件模块的控制)将上述进程信息写入存储器402,由监控器401可以从存储器402直接获取上述进程信息。
[0117] 监控器401还用于:根据获取的上述内存单元访问信息以及上述进程信息生成监控信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述内存单元的访问频繁度。
[0118] 监控器401还用于:将生成的监控信息反馈给上述计算机系统,由于监控器401将存储器402映射到上述计算机系统的地址空间,因此,上述计算机系统可以直接从存储器402中读取数据。具体地,监控器401可以定期将生成的监控信息存入存储器402,处理器403(其中处理器403受运行其上的软件的控制)定期从存储器402读取上述监控信息。
[0119] 需要说明的是,本发明实施例中的监控器401可以是FPGA,或者,也可以是CPLD,或者,也可以是ASIC,当然,也可以是其它类型的处理器,此处不作限定。
[0120] 需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面”,在内存管理方式为“段式”时,内存上的一段连续的地址空间也被称作“段”。
[0121] 需要说明的是,本发明实施例中的内存监控装置可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0122] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。
[0123] 下面对本发明实施中的一种计算机监控系统进行描述,如图5所示,本发明实施例中的计算机监控系统500包括:
[0124] 至少一个存储器501以及至少一个处理器502,其中上述至少一个处理器502中包括用于负责业务功能的处理器(后文简称为业务处理器502)和用于负责监控功能的处理器(后文简称为监控处理器502),其中后文提到的计算机系统包括前述的存储器501和业务处理器502。在本发明实施例中,存储器501以及处理器502可以通过总线或其它方式连接,如图5所示以通过总线503连接为例。
[0125] 上述本发明实施例揭示的方法可以应用于监控处理器502中,或者说由监控处理器502以实现,监控处理器502可能是一种集成电路芯片,具有指令和数据的执行能力,以及信号的处理能力。在实现过程中,上述方法的各步骤可以通过监控处理器502中的硬件的集成逻辑电路或者软件形式的指令完成。上述的监控处理器502可以是通用处理器(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器读取存储器501中的信息,结合其硬件完成上述方法的步骤。
[0126] 其中,存储器501可以是静态随机存储器(SRAM,Static Random Access Memory),也可以是动态随机存储器(DRAM,Dynamic Random Access Memory),或者也可以是其它存储器,如Flash闪存等,此处不作限定。
[0127] 其中,监控处理器502执行如下步骤:
[0128] 获取计算机系统的内存单元访问信息,其中,上述内存单元访问信息包括:上述计算机系统的各个内存单元的被访问次数。进一步,上述内存单元访问信息还可以包括上述计算机系统的各个内存单元的重用距离。
[0129] 获取上述计算机系统的进程信息,其中,上述进程信息包括:上述计算机系统当前运行的进程的虚拟地址与物理地址的映射关系信息。
[0130] 根据上述内存单元访问信息和上述进程信息生成监控信息,其中,上述监控信息包括:上述计算机系统当前运行的进程对上述内存单元的访问频繁度。
[0131] 将上述监控信息反馈给上述计算机系统,以便上述计算机系统根据上述监控信息进行内存管理。
[0132] 在本发明实施例中,监控处理器502可以通过监听计算机系统的内存总线来获取上述计算机系统的内存单元访问信息,当然,上述计算机系统的内存单元访问信息也可以由其它外部设备获取后发送给监控处理器502,此处不作限定。其中,监控处理器502通过监听计算机系统的内存总线来获取上述计算机系统的内存单元访问信息的方式可以有如下两种:在一种实现方式中,将监控处理器502与上述计算器系统的内存总线引出的命令和地址总线连接,使监控处理器502能够对上述命令和地址总线进行旁路监听,以获得上述计算机系统的各个内存单元的被访问情况(如上述各个内存单元的被访问次数和重用距离等),进而得到上述计算机系统的内存单元访问信息。在另一种实现方式中,采用非旁路监听的方式获取上述计算机系统的内存单元访问信息,即,将监控处理器502串接于内存总线上,则上述计算机系统的所有访存操作都经过监控处理器502,因此,监控处理器502可以统计各个内存单元的被访问次数和重用距离等信息,进而获得上述计算机系统的内存单元访问信息。
[0133] 在一种实现方式中,上述计算机系统可以对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址不能被应用程序访问,只能被监控处理器502识别和访问。例如,计算机系统可以与监控处理器502约定好将访存地址的某几个比特位(假设为第1位和第2位)作为特殊访存地址的标志位,并约定特定的标识符。计算机系统对上述进程信息进行编码,生成特殊访存地址,该特殊访存地址的第1位和第2位为上述特定的标识符,剩下的比特位由计算机系统对上述进程信息进行编码后的编码数据;监控处理器502实时检测计算机系统的访存地址,当检测到访存地址的第1位和第2位为上述特定的标识符时,即认定该访存地址为包含上述进程信息的编码数据的特殊访存地址,监控处理器502对检测到的特殊访存地址进行解码,从中得到上述进程信息。
[0134] 在另一种实现方式中,若监控处理器502串接于计算机系统的内存总线上,则可以将计算机系统的地址空间中的一部分分配给存储器501中,当计算机系统的访存请求位于存储器301时,将该请求通过总线503转发给存储器501,当计算机系统的访存请求位于计算机系统的主存时,由计算机系统的主存处理访存请求,通过这种方式,监控处理器502可以将存储器501映射到计算机系统的地址空间,使计算机系统使用普通的读写指令直接操作存储器501,其中包括将上述进程信息写入内存储器501,则监控处理器502可以从存储器501直接获取上述进程信息。
[0135] 由于在计算机系统运行过程中,可能会出现进程的更新,如进程启动,进程终止等,因此,上述进程信息进一步还包括:计算机系统对进程的更新操作。
[0136] 进一步,上述监控信息还包括:上述统计信息,则监控处理器502还用于:将上述计算机系统的各个内存单元的被访问次数归类到Bank、Rank、内存条和内存通道中的一个或者多个,得到统计信息,其中,上述统计信息包括:上述Bank、Rank、内存条和内存通道中的一个或者多个的被访问次数。
[0137] 本发明实施例中,监控处理器502可以采用直接反馈的方式将上述监控信息反馈给上述计算机系统,则监控处理器502在生成监控信息后,可以将监控信息通过存入上述计算机系统预先开辟的缓冲区中,并更新计算机系统的内存状态位,以便上述计算机系统获知上述缓冲区中已存入上述监控信息。其中,上述内存状态位可由监控处理器502与上述计算机系统事先约定,例如,可约定在上述内存状态位取值为1时,表明上述监控信息已写入上述缓冲区中,当上述计算机系统从上述缓冲取中读取上述监控信息后,将上述内存状态位清零,以便监控处理器502在下一次写入监控信息时更新内存状态位;又例如,可约定在上述内存状态位每次出现更新(如内存状态位的取值由0变为1、由1变成0)时,都表明上述监控信息已写入上述缓冲区中,在这种情况下,当上述计算机系统从上述缓冲取中读取上述监控信息后,不需要对上述内存状态位进行清零操作。
[0138] 本发明实施例中,监控处理器502也可以采用间接反馈的方式将上述监控信息反馈给上述计算机系统,则监控处理器502在生成监控信息后,可以先将监控信息存入监控处理器502上的存储器中,当接收来自上述计算机系统的获取监控信息的命令时,才将存储的监控信息反馈给上述计算机系统。
[0139] 本发明实施例中,监控处理器502可以通过与计算机系统互联的外围总线(如以太网、PCIe总线等)将监控信息反馈给计算机系统。当然,若监控处理器502串接于计算机系统的内存总线上时,由于监控处理器502可以将存储器501映射到计算机系统的地址空间,因此,计算机系统也可以直接操作从监控处理器502上读取上述监控信息。
[0140] 需要说明的是,本发明实施例中的一个内存单元是指内存上的一段连续的地址空间,在不同的内存管理方式中,内存上的一段连续的地址空间可能由其它术语指代,例如,在内存管理方式为“页式”时,内存上的一段连续的地址空间也被称作“页面”,在内存管理方式为“段式”时,内存上的一段连续的地址空间也被称作“段”。
[0141] 需要说明的是,本发明实施例中的监控处理器502可以如上述方法实施例中的内存监控装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0142] 由上可见,本发明实施例中通过获取计算机系统的内存单元访问信息和进程信息,提炼出计算机系统当前运行的进程对各个内存单元的访问频繁度,生成包含计算机系统当前运行的进程对各个内存单元的访问频繁度的监控信息后反馈给计算机系统,使得计算机系统可以根据监控信息包含的进程对内存单元的访问频繁度进行内存管理,能够极大提高计算机系统的执行效率。
[0143] 需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
[0144] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0145] 本领域普通技术人员可以理解上述实施例中的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质例如可以包括:只读存储器、随机存储器、磁盘或光盘等。
[0146] 以上对本发明所提供的一种内存监控方法及相关装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。