问题:我如何知道我的进程的VMA使用了多少内存(无论是在用户空间中还是在内核中)?
我将对我正在做的事情做一个简短的解释,这样你就可以理解我为什么要问这个问题了。我在我的Linux机器上运行几个进程和一个驱动程序(内核模块)。进程内存是锁定的(不可交换),因此我希望确保模块和进程消耗的内存不会占用我总物理内存的90%。为了减少malloc开销,我使用mmap。我真正需要知道的是我的进程实际消耗了多少内存,而不是它们请求了多少内存,并且我所能告诉我的是,我只是错过了VMA在任何分配时的开销。
发布于 2011-05-02 18:41:31
经过挖掘,我找到了答案:
当我在驱动程序中时,我可以使用current->mm->map_count来了解当前进程的VMA的当前数量。将其乘以sizeof(结构vm_area_struct)将得到我想要的结果。从这里开始,计算就非常简单了。
https://stackoverflow.com/questions/5849645
复制相似问题