1

I can obtain a wonderful memory map of all processes with the Linux command

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

It looks like

...
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  
...

All processes' memory maps are merged here. But I am missing the information where the kernel has its memory pages. Is there a similar tool for the "complete memory map"?

HopelessN00b
  • 53,795
  • 33
  • 135
  • 209
Thorsten Staerk
  • 387
  • 2
  • 11

2 Answers2

1

Your command doesn't make much sense. The addresses reported by pmap for each process are only valid in theses processes own address space, i.e. in their virtual memory. They will kind of "overlap" while technically they correspond to different pages. Some of them won't be in RAM but on disk.

The pages owned by the kernel use are on the other hand stored on physical memory.

jlliagre
  • 8,861
  • 18
  • 36
0

Better approach would be to use sysrq.

Run following and check your /var/log/messages.

# echo m > /proc/sysrq-trigger

This would give you zone wise memory dump. Checkout following url

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

Minto Joseph
  • 146
  • 3