找出内核拥有哪些内存页

找出内核拥有哪些内存页

我可以使用 Linux 命令获取所有进程的精彩内存映射

pmap $(ps -A | awk '{print $1}'|grep -v PID) | sort | grep \^0

看起来像

...
00007fd6dbf45000      4K rw---  /lib/libnss_compat-2.11.1.so 
00007fd6dbf46000   1524K r-x--  /lib/libc-2.11.1.so
00007fd6dc0c3000   2044K -----  /lib/libc-2.11.1.so  
...

所有进程的内存映射都合并在这里。但我缺少内核内存页面的位置信息。有没有类似的“完整内存映射”工具?

答案1

您的命令没有多大意义。pmap每个进程报告的地址仅在这些进程自己的地址空间中有效,即在其虚拟内存中。它们会有点“重叠”,但从技术上讲它们对应于不同的页面。其中一些不在 RAM 中,而是在磁盘上。

另一方面,内核使用的页面存储在物理内存中。

答案2

更好的方法是使用 sysrq。

运行以下命令并检查您的 /var/log/messages。

# echo m > /proc/sysrq-trigger

这将为您提供区域内存转储。请查看以下网址

https://www.kernel.org/doc/gorman/html/understand/understand005.html

相关内容