如何在C语言中查找被复制的内存页和共享内存页的进程?

5
我有一个在启动时加载大量资源的Linux服务器进程。这个进程会在请求时进行分叉。在启动时加载的资源是最大的东西,并且在运行时不会改变。分叉的子进程使用读/写控制结构来处理对常量资源的请求。
如何找出进程之间共享了多少内存,以及每个进程独立使用了多少内存?或者由于任何进程的写访问而重复的页面是哪些?

这些信息可能在/proc/$pid/maps中吗? - Louen
1个回答

5
您可以从proc文件系统的虚拟文件/proc/$pid/pagemap和/proc/kpagecount和/proc/kpageflags中获取此信息。访问后者需要root权限,因为它可能会泄漏您不拥有的进程内存映射的特权信息。有关数据格式的详细信息,请阅读内核文档中的Documentation/vm/pagemap.txt。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接