基于linux页表统计进程的物理内存占用的方法、装置及计算机可读存储介质与流程

文档序号:37544356发布日期:2024-04-08 13:46阅读:10来源:国知局
基于linux页表统计进程的物理内存占用的方法、装置及计算机可读存储介质与流程

本发明属于内存占用统计,具体地说,是涉及一种基于linux页表统计进程的物理内存占用的方法、装置及计算机可读存储介质。


背景技术:

1、在java11发布后,发布了一项令人振奋的特性,就是zgc(垃圾回收器),此技术可以将java的gc停顿降低到1ms内,但是由于此技术的染色指针实现方式,是将多个地址映射到相同的物理页,导致linux在top统计的时候,存在重复统计,甚至出现物理内存占用翻倍的情况,导致物理内存占用情况统计不精确。


技术实现思路

1、本发明的目的在于提供一种基于linux页表统计进程的物理内存占用的方法,以解决现有技术所存在的存在重复统计、物理内存占用情况统计不精确的技术问题。

2、为了实现上述目的,本发明采取的技术方案如下:

3、一种基于linux页表统计进程的物理内存占用的方法,包括以下步骤:

4、(1)统计程序进入内核,在内核态下运行;

5、(2)通过传入的参数获取到进程结构体;

6、(3)通过所述进程结构体获取到linux页表;

7、(4)轮训所有linux页表,获取已经分配物理内存的linux页表;

8、(5)访问已经分配物理内存的linux页表的物理地址,并将物理地址暂存roaringbitmap数据结构;

9、(6)统计roaring bitmap的位数,得到统计值;

10、(7)将统计值乘以页表大小,得到进程的物理内存占用大小。

11、在一种实施方案中,所述步骤(4)中轮训所有linux页表的具体方法如下:获取到linux页表后,通过判断linux页表的present的标识来判断是否已经分配物理内存,如果没有分配物理内存,此linux页表应该跳过,如果分配物理内存,则获取已经分配物理内存的linux页表。

12、在一种实施方案中,所述步骤(5)中,在将物理地址暂存roaring bitmap数据结构之前,首先,进行linux页表的物理地址4k对齐,然后,再将linux页表的物理地址右移12位。

13、在一种实施方案中,所述步骤(5)中,根据linux页表的大小,将物理地址放入不同的roaring bitmap数据结构。

14、在一种实施方案中,所述统计程序的用户接口设计为按进程统计。

15、为实现上述目的,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,以实现上述的基于linux页表统计进程的物理内存占用的方法。

16、为实现上述目的,本发明还提供了一种统计进程的物理内存占用的装置,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使得所述统计进程的物理内存占用的装置执行上述的基于linux页表统计进程的物理内存占用的方法。

17、与现有技术相比,本发明具备以下有益效果:

18、本发明将使用linux的页表,读取到真实的物理地址后,进行进程的物理内存精确统计,可以有效避免多重映射带来的内存占用重复统计问题。



技术特征:

1.一种基于linux页表统计进程的物理内存占用的方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于linuxlinux页表统计进程的物理内存占用的方法,其特征在于,所述步骤(4)中轮训所有linux页表的具体方法如下:获取到linux页表后,通过判断linux页表的present的标识来判断是否已经分配物理内存,如果没有分配物理内存,此linux页表应该跳过,如果分配物理内存,则获取已经分配物理内存的linux页表。

3.根据权利要求2所述的基于linuxlinux页表统计进程的物理内存占用的方法,其特征在于,所述步骤(5)中,在将物理地址暂存roaring bitmap数据结构之前,首先,进行linux页表的物理地址4k对齐,然后,再将linux页表的物理地址右移12位。

4.根据权利要求3所述的基于linuxlinux页表统计进程的物理内存占用的方法,其特征在于,所述步骤(5)中,根据linux页表的大小,将物理地址放入不同的roaring bitmap数据结构。

5.根据权利要求4所述的基于linux页表统计进程的物理内存占用的方法,其特征在于,所述统计程序的用户接口设计为按进程统计。

6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行,以实现如权利要求1~4中任一项所述的基于linux页表统计进程的物理内存占用的方法。

7.一种统计进程的物理内存占用的装置,其特征在于,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使得所述统计进程的物理内存占用的装置执行如权利要求1~4中任一项所述的基于linux页表统计进程的物理内存占用的方法。


技术总结
本发明属于内存占用统计技术领域,提供了一种基于linux页表统计进程的物理内存占用的方法、装置及计算机可读存储介质,其中,方法包括:(1)统计程序进入内核,在内核态下运行;(2)通过传入的参数获取到进程结构体;(3)通过所述进程结构体获取到页表;(4)轮训所有页表,获取已经分配物理内存的页表;(5)访问已经分配物理内存的页表的物理地址,并将物理地址暂存roaring bitmap数据结构;(6)统计roaring bitmap的位数,得到统计值;(7)将统计值乘以页表大小,得到进程的物理内存占用大小。本发明将使用linux的页表,读取到真实的物理地址后,进行进程的物理内存精确统计,可以有效避免多重映射带来的内存占用重复统计问题。

技术研发人员:李登,朱宪超,霍展羽
受保护的技术使用者:四川语言桥信息技术有限公司
技术研发日:
技术公布日:2024/4/7
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1