Як я можу відстежувати процес / споживання потоку на потоки (поділяється на купу, стек, дані, код)?


11

Перш ніж зайти і написати власний код, я хочу з’ясувати, чи є програмне забезпечення 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)

Чи є щось, що зробить це можливим?


Схоже, більшість цієї інформації є/proc/$PID/smaps
Братчлі

Це правильно, але я сподівався, що є якийсь інструмент, який я можу запустити і автоматично виводить інформацію про пам'ять.
Олексій Діма

Я впевнений, що там є профілі пам'яті для когось із конкретними потребами. Більшість людей могли просто періодично зберігати вміст цього файлу Proc. FWIW, це здається, що один із компонентів valgrind має досить хороший профіль. Я ніколи його не використовував, але, можливо, це напрям, куди ти повинен піти.
Братчлі

Відповіді:


6

Ви можете побачити деяку інформацію за допомогою pmap -x PID- вона поділяється на кбайт, rss та брудну пам'ять для кожної бібліотеки / модуля / відкритого файлу / стека процесу:

undefine @ 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 --- [anon]
00007f6a9847e000 4308 44 0 r ---- локал-архів
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 --- [стек]
00007fff09ffe000 8 4 0 rx-- [anon]
ffffffffff600000 4 0 0 rx-- [anon]
---------------- ------- ------- ------- 
всього кБ 8652 656 96
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.