首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算linux中特定进程使用的内存量。

计算linux中特定进程使用的内存量。
EN

Stack Overflow用户
提问于 2012-02-27 14:17:57
回答 1查看 577关注 0票数 0

我正在编写一个程序来跟踪子进程调用的每个系统调用,并确定它的确切内存使用情况(不包括共享内存)。

这是我的计划。

让孩子的进程被父亲的进程所追踪,

如果子进程进行系统调用,父进程将收到SIGTRAP,

然后用ptrace获取syscall id (PTRACE_PEEKUSER、child_pid、4*ORIG_EAX、NULL)。

当id等于SYS_brk、SYS_sbrk、SYS_mmap2、SYS_mmap、SYS_mremap、SYS_munmap时,

我能够获得调用的参数并计算内存量。

但困扰我的是

  1. 我不知道怎么算。
  2. SYS_mmap2有6个以上的参数,我该如何获得它?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-27 17:01:18

为了确定pid 1234进程的内存使用情况,我建议按顺序读取和解析/proc/1234/maps/proc/1234/smaps伪文件。/proc/1234/下的其他文件也可能相关(例如/proc/1234/statm/proc/1234/status)

从进程内部,您可以读取/proc/self/maps/proc/self/smaps (以及/proc/self/statm/proc/self/status)。

有关详细信息,请阅读proc(5)手册页。

还有pmap命令

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9466499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档