我有一个在启动时加载大量资源的 Linux 服务器进程。这个过程将根据要求 fork 。在启动时加载的资源是最大的东西,在运行时不会改变。 folked 子进程使用读/写控制结构来处理对常量资源的请求。
如何找出进程之间共享的内存量以及每个进程的唯一内存量?或者哪些页面由于来自任何进程的写访问而被复制?
最佳答案
您可以从 /proc/$pid/pagemap
和 /proc/kpagecount
和 /proc/kpageflags
虚拟文件中获取此信息在 proc 文件系统中。访问后者需要 root,因为它可能会泄漏有关您不拥有的进程内存映射的特权信息。阅读内核文档中的 Documentation/vm/pagemap.txt
以获取有关数据格式的详细信息。
关于c - 如何在 C 中的 fork 进程中查找共享/复制的内存页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861586/