内存调试:如何在Linux的用户空间/内核空间中获取被锁定页面信息

3

在Linux中,有没有一种方法可以在用户空间/内核空间中获取锁定页面(虚拟内存页面)的信息。

我想知道以下细节: 谁锁定了这些页面? 有多少页面被锁定了? 锁定页面的进程名称是什么?

另外,请告诉我内核空间和用户空间的内存调试技术。

1个回答

2
对于内存中的每个页面都分配了一个标志,使用mlockmlockall()等API锁定虚拟内存页面时,会将VM_LOCKED标志分配给页面。
了解锁定页面的两种选项:
  1. 使用命令cat /sys/kernel/debug/page_owner >> page_owner.txt来查看锁定的页面详细信息。 若要启用调试,请执行以下操作:kernel menuconfig PAGE_OWNER=y,将"page_owner=on"添加到引导cmdline中, 然后执行cat /sys/kernel/debug/page_owner >> page_owner.txt
  2. 在Linux源代码中输入/tool/vm/page-types.c,然后编译它并迭代所有/proc/中的pid条目, 并为应用程序使用以下选项:./test -p $PID -L >> test_output.txt。它将提供所有页面详细信息和标志, 然后您可以找到内存中已锁定的页面。

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