【问题标题】:Find out how many pages of memory a process uses on linux找出一个进程在 linux 上使用了多少内存页
【发布时间】:2009-11-22 10:32:58
【问题描述】:

我需要找出一个进程分配了多少内存页? 每页是 4096,进程内存使用情况我在定位正确值时遇到了一些问题。当我查看 gome-system-monitor 时,在内存映射下有几个值可供选择。

谢谢。

这里的重点是将内存使用量除以页数并验证页大小。

【问题讨论】:

    标签: linux memory paging


    【解决方案1】:

    很难计算出正确分配的确切内存量:与其他进程共享的页面(库的 r/o 部分),从未使用过由brk 和匿名mmap 分配的内存,未获取的 mmaped 文件由于高效的处理算法只触及文件的一小部分等,换出页面,脏页要写入磁盘等,因此完全从磁盘中删除。

    如果您想处理所有这些复杂性并计算出真正的页数,可以在/proc/<pid>/smaps 获得详细信息,并且有一些工具,如mem_usage.pysmem.pl(很容易用谷歌搜索)来打开它成或多或少有用的摘要。

    【讨论】:

      【解决方案2】:

      这将是“驻留集大小”,假设您的进程不使用交换。

      请注意,一个进程可能会分配更多的内存(“虚拟内存大小”),但只要它不写入内存,它就不会由物理内存表示,无论是在 RAM 中还是在磁盘上。

      一些系统工具,如 top,为每个进程显示一个巨大的“交换”值——这当然是完全错误的,该值是 VMS 和 RSS 之间的差异,很可能是那些未使用但已分配的内存页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 2015-08-27
        • 2012-10-22
        • 2010-09-08
        相关资源
        最近更新 更多