Bagaimana saya bisa memonitor per proses / per konsumsi memori thread (dibagi menjadi tumpukan, tumpukan, data, kode)?

11

Sebelum melompat dan menulis kode saya sendiri, saya ingin mencari tahu apakah ada perangkat lunak GNU / Linux yang dapat menghasilkan sesuatu yang mirip dengan QNXshowmem .

Untuk setiap utas dari setiap proses yang berjalan, saya ingin melihat konsumsi memori dibagi ke dalam kategori berikut:

 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)

Apakah ada sesuatu yang akan memungkinkan hal ini?

Alex Dima
sumber
Sepertinya sebagian besar info ini ada di/proc/$PID/smaps
Bratchley
Itu benar, tetapi saya berharap ada beberapa alat yang dapat saya jalankan dan secara otomatis menampilkan informasi memori.
Alex Dima
Saya yakin ada profil memori di luar sana untuk seseorang dengan kebutuhan spesifik. Kebanyakan orang hanya bisa secara berkala menyimpan konten file proc itu. FWIW sepertinya salah satu komponen valgrind memiliki profiler yang cukup bagus. Saya tidak pernah menggunakannya tapi mungkin itu adalah arah yang harus Anda kunjungi.
Bratchley

Jawaban:

6

Anda dapat melihat beberapa informasi menggunakan pmap -x PID- itu dibagi menjadi kbytes, rss dan memori kotor untuk setiap perpustakaan / modul / file yang terbuka / tumpukan proses:

undefine @ uml: ~ $ pmap -x 13206
13206: tidur 60
Alamat Kbytes Pemetaan Mode Kotor RSS
0000000000400000 24 20 0 rx-- tidur
0000000000606000 4 4 4 r ---- tidur
0000000000607000 4 4 4 rw --- tidur
000000000063b000 132 8 8 rw --- [anon]
00007f6a9847e000 4308 44 0 r ---- arsip-lokal
00007f6a988b3000 1772 376 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 rw --- [anon]
00007f6a98c79000 140 116 0 rx-- ld-2.19.so
00007f6a98e71000 12 12 12 rw --- [anon]
00007f6a98e99000 8 8 8 rw --- [anon]
00007f6a98e9b000 4 4 4 r ---- ld-2.19.so
00007f6a98e9c000 4 4 4 rw --- ld-2.19.so
00007f6a98e9d000 4 4 4 rw --- [anon]
00007fff09fd0000 132 12 12 rw --- [stack]
00007fff09ffe000 8 4 0 rx-- [anon]
ffffffffff600000 4 0 0 rx-- [anon]
---------------- ------- ------- ------- 
total kB 8652 656 96
undefine
sumber