c - 如何在 C 中的 fork 进程中查找共享/复制的内存页

标签 c linux memory fork

我有一个在启动时加载大量资源的 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/

相关文章:

c++ - 结构不在内存中

c - 在 C 程序中重新声明为不同类型的符号

c - 如何通过使用GDB加载多个符号定义来调试多个应用程序?

c - 跨进程共享库

c - 在命令行程序中将选项与非选项参数分开

linux - 对于以 pid 1 运行的 docker 应用程序,我必须采取哪些特殊预防措施?

python - 无法找到 python 字节码解释器的 gdb 框架

linux - 如何永久授予用户 sudo 访问权限?

memory - Azure 保证内存

Python多处理内存增加