Comment puis-je surveiller la consommation de mémoire par processus / par thread (divisée en tas, pile, données, code)?

11

Avant de me lancer et d'écrire mon propre code, je veux savoir s'il existe un logiciel GNU / Linux capable de produire quelque chose de similaire à celui de QNXshowmem .

Pour chaque thread de chaque processus en cours d'exécution, j'aimerais voir la consommation de mémoire divisée dans les catégories suivantes:

 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)

Y a-t-il quelque chose qui rendra cela possible?

Alex Dima
la source
Il semble que la plupart de ces informations soient disponibles/proc/$PID/smaps
Bratchley
C'est vrai, mais j'espérais qu'il existe un outil que je peux exécuter et qui génère automatiquement les informations sur la mémoire.
Alex Dima
Je suis sûr qu'il existe des profileurs de mémoire pour ceux qui ont des besoins spécifiques. La plupart des gens pouvaient simplement sauvegarder périodiquement le contenu de ce fichier proc. FWIW, il semble que l' un des composants de valgrind ait un assez bon profileur. Je ne l'ai jamais utilisé, mais c'est peut-être une direction à prendre.
Bratchley

Réponses:

6

Vous pouvez voir quelques informations en utilisant pmap -x PID- elles sont divisées en kilo-octets, rss et mémoire sale pour chaque bibliothèque / module / fichier ouvert / pile d'un processus:

undefine @ uml: ~ $ pmap -x 13206
13206: dormir 60
Adresse Kbytes RSS Dirty Mode Mapping
0000000000400000 24 20 0 rx-- veille
0000000000606000 4 4 4 r ---- sommeil
0000000000607000 4 4 4 rw --- sommeil
000000000063b000 132 8 8 rw --- [anon]
00007f6a9847e000 4308 44 0 r ---- locale-archive
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 rw --- [anon]
00007f6a98c79000 140116 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 --- [pile]
00007fff09ffe000 8 4 0 rx-- [anon]
ffffffffff600000 4 0 0 rx-- [anon]
---------------- ------- ------- ------- 
total kB 8652 656 96
indéfinir
la source