问题: 如何判断我的进程的VMA使用了多少内存(无论是在用户空间还是在内核中)?
我会对我正在做的事情做一个简短的解释,所以你可以理解我为什么这么问。 我在我的Linux机器上运行了一些进程和一个驱动程序(内核模块)。进程内存被锁定(不可交换),因此我想确保模块和进程消耗的内存不会占用我总物理内存的90%。为了减少malloc开销我正在使用mmap。 我真正需要知道的是我的进程真正消耗了多少内存,而不是他们要求多少,而且我可以告诉我,我只是错过了任何分配的VMA开销。
答案 0 :(得分:1)
挖掘后我找到了答案:
当我在驱动程序中时,我可以使用 电流 - > MM-> map_count 了解当前流程的当前VMA数量。 将它乘以sizeof(struct vm_area_struct)将为我提供我想要的东西。 会计很简单。