各プロセス/スレッドのメモリ消費(ヒープ、スタック、データ、コードで区切られた)を監視する方法は?

各プロセス/スレッドのメモリ消費(ヒープ、スタック、データ、コードで区切られた)を監視する方法は?

私自身のコードを書く前に、次のようなものを出力できるGNU / Linuxソフトウェアがあるかどうかを知りたいです。QNXshowmem

実行中の各プロセスの各スレッドについて、次のカテゴリに分かれたメモリ消費量を確認したいと思います。

 Process listing (Total, Code, Data, Heap, Stack, Other)
 319488  1024000      24587     167936      24576          0        4103 devc-con-hid (thread 2)
    0          0          0          0       4096          0        4103 devc-con-hid (thread 2)
    0          0          0          0      20480          0        4103 devc-con-hid (thread 1)
    0     102400       8192          0          0          0        4103 devc-con-hid (proc/boot/devc-con-hid)
    0          0      16384          0          0          0        4103 devc-con-hid (proc/boot/libc.so.3)
    0          0          0          0          0  (   36864)       4103 devc-con-hid (/dev/mem)

これを可能にできるものはありますか?

答え1

次のコマンドを使用して一部の情報を確認できますpmap -x PID。プロセス内の各ライブラリ/モジュール/開かれたファイル/スタックについて、キロバイト、RSS、ダーティメモリに分けられます。

@uml:~$ pmap -x 13206 定義解除
13206:睡眠60
アドレスキロバイトRSSダーティモードマッピング
0000000000400000 24 20 0 rx--睡眠
0000000000606000 4 4 4 r---- 睡眠
0000000000607000 4 4 4 rw---睡眠
000000000063b000 132 8 8 rw--- [匿名]
00007f6a9847e000 4308 44 0 r---- ロケールアーカイブ
00007f6a988b3000 1772376 0 rx--libc-2.19.so
00007f6a98a6e000 2048 0 0 ----- libc-2.19.so
00007f6a98c6e000 16 16 16 r---- libc-2.19.so
00007f6a98c72000 8 8 8 rw---libc-2.19.so
00007f6a98c74000 20 12 12 読み取りと書き込み --- [匿名]
00007f6a98c79000140116 0 rx--ld-2.19.so
00007f6a98e71000 12 12 12 読み書き---[匿名]
00007f6a98e99000 8 8 8 rw--- [匿名]
00007f6a98e9b000 4 4 4 r---- ld-2.19.so
00007f6a98e9c000 4 4 4 rw---ld-2.19.so
00007f6a98e9d000 4 4 4 rw--- [匿名]
00007fff09fd0000 132 12 12 rw---[スタック]
00007fff09ffe000 8 4 0 rx--[匿名]
ffffffffff600000 4 0 0 rx-- [匿名]
--- ------- ------- -------
合計KB 8652656 96

関連情報