我一直在寻找一种衡量Linux内存使用情况的方法。我找到了三种主要的方法,我不知道应该使用什么,所以我在这里征求意见。
这似乎是最普遍,也许更容易的方式
监视内存是读取/ proc / pid / status并读取
适当的字段,VmSize
,VmData
或其他。这就是方式
程序ps,to,vmstat设法收集这些信息(我的意思是,
监控/ proc / pid / ...)。这些信息将提供
即时信息。
我可以调用一个fork然后执行一个exec来运行我想要的程序 监视和wait4以填补一个rusage结构。从那里 我可以阅读所需的字段。看起来虽然在Linux中,但是 wait4不会填充rsusage结构中的内存字段,只能填充 与cpu使用相关的字段。这是time命令的获取方式 它的流量。
我可以更改strace代码,跟踪所有上升的brk, mmap,munmap系统调用,总结得到堆大小。该 这里很难解码读取所有可能的mmap参数 只有,读,写,执行等,并测试返回值,以了解是否 系统成功。
对于3),您认为我可以通过这种方式测量内存使用情况吗?这太难了吗?我对strace代码有很好的理解,但是我对内存的了解不够,知道这是否可行。
答案 0 :(得分:0)
如果你的程序只对使用malloc()完成的内存分配感兴趣,你可以查看mallinfo()。
答案 1 :(得分:0)
在Linux上,可以通过pmap
以及/proc/self/maps
或/proc/1234/maps
文件(其中1234是进程ID)获得有关内存映射的更精确信息。请尝试cat /proc/self/maps
了解更多信息。