【发布时间】:2019-07-25 19:51:57
【问题描述】:
有没有办法在linux的用户空间/内核空间中获取锁定页面(虚拟内存页面)信息。
我想了解以下详细信息: 谁锁定了页面? 有多少页被锁定? 锁定页面的进程名称?
还让我知道内核空间和用户空间的内存调试技术。
【问题讨论】:
标签: memory-management memory-leaks linux-kernel embedded-linux
有没有办法在linux的用户空间/内核空间中获取锁定页面(虚拟内存页面)信息。
我想了解以下详细信息: 谁锁定了页面? 有多少页被锁定? 锁定页面的进程名称?
还让我知道内核空间和用户空间的内存调试技术。
【问题讨论】:
标签: memory-management memory-leaks linux-kernel embedded-linux
对于内存中的每个页面,分配给它的 is 标志,使用 mlock、mlockall() 等 API 锁定虚拟内存页面,它为页面分配了 VM_LOCKED 标志。
了解锁定页面详细信息的两个选项:
使用猫/sys/kernel/debug/page_owner >> page_owner.txt
启用调试:kernel menuconfig PAGE_OWNER=y
将"page_owner=on" 添加到引导命令行。
cat /sys/kernel/debug/page_owner >> page_owner.txt
在linux源代码中输入:/tool/vm/page-types.c,然后
编译它并遍历/proc/ 中的所有 pid 条目,并为应用程序使用以下选项:
./test -p $PID -L >> test_output.txt。
它将为您提供带有标志的所有页面详细信息,然后您可以在内存中找到锁定的页面。
【讨论】: