找出哪些内存页面是内核拥有的

我可以用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 rx-- /lib/libc-2.11.1.so 00007fd6dc0c3000 2044K ----- /lib/libc-2.11.1.so ... 

所有进程的内存映射在这里合并。 但是我错过了内核有内存页面的信息。 是否有一个类似的工具“完整的内存映射”?

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

另一方面,内核所拥有的页面存储在物理内存中。

更好的方法是使用sysrq。

运行以下并检查你的/ var / log / messages。

#echo m> / proc / sysrq-trigger

这会给你区域明智的内存转储。 签出以下url

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