
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 を確認します。
# エコー m > /proc/sysrq-trigger
これにより、ゾーンごとのメモリダンプが得られます。次の URL を確認してください。
https://www.kernel.org/doc/gorman/html/understand/understand005.html