内存调试:如何在用户space/kernel space in linux中获取锁定页面信息

Memory-Debuging: How to get locked pages information in user space/kernel space in linux

有什么方法可以获取用户 space/kernel space in linux 中的锁定页面(虚拟内存页面)信息。

我想了解以下详细信息: 谁锁定了页面? 有多少页被锁定? 锁定页面的进程名称?

也让我知道内核space和用户space中的内存调试技巧。

内存中的每个页面都分配了 is 标志,虚拟内存页面使用 mlockmlockall() 等 API 锁定,它分配了 VM_LOCKED 标志到页面。

了解锁定页面详细信息的两个选项:

  1. 使用猫/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。 它会给你所有带有标志的页面详细信息,然后你可以在内存中找到锁定的页面。