Come posso monitorare il consumo di memoria per processo / thread (diviso in heap, stack, dati, codice)?


11

Prima di entrare e scrivere il mio codice, voglio scoprire se esiste un software GNU / Linux in grado di produrre qualcosa di simile a QNXshowmem .

Per ogni thread di ogni processo in esecuzione, vorrei vedere il consumo di memoria suddiviso nelle seguenti categorie:

 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)

C'è qualcosa che lo renderà possibile?


Sembra che la maggior parte di queste informazioni siano presenti/proc/$PID/smaps
Bratchley

Esatto, ma speravo che ci fosse qualche strumento che potessi eseguire e che restituisse automaticamente le informazioni sulla memoria.
Alex Dima,

Sono sicuro che ci sono profili di memoria là fuori per qualcuno con esigenze specifiche. La maggior parte delle persone potrebbe semplicemente salvare periodicamente il contenuto di quel file proc. FWIW sembra che uno dei componenti di valgrind abbia un buon profiler. Non l'ho mai usato, ma forse è una direzione per te.
Bratchley,

Risposte:


6

Puoi vedere alcune informazioni usando pmap -x PID: è diviso in kbyte, rss e memoria sporca per ogni libreria / modulo / file aperto / stack di un processo:

undefine @ uml: ~ $ pmap -x 13206
13206: sonno 60
Indirizzo Kbytes Mappatura modalità sporca RSS
0000000000400000 24 20 0 rx-- sleep
0000000000606000 4 4 4 r ---- sonno
0000000000607000 4 4 4 rw --- sleep
000000000063b000 132 8 8 rw --- [anon]
00007f6a9847e000 4308 44 0 r ---- locale-archive
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]
---------------- ------- ------- ------- 
totale kB 8652 656 96
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.