İşlem başına / iş parçacığı bellek tüketimini (yığın, yığın, veri, koda bölünür) nasıl izleyebilirim?


11

İçeri girip kendi kodumu yazmadan önce, QNX'lereshowmem benzer bir çıktı alabilen GNU / Linux yazılımı olup olmadığını öğrenmek istiyorum .

Çalışan her işlemin iş parçacığı için, bellek tüketiminin aşağıdaki kategorilere ayrıldığını görmek istiyorum:

 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)

Bunu mümkün kılacak bir şey var mı?


Görünüşe göre bu bilgilerin çoğu/proc/$PID/smaps
— Bratchley

Bu doğru, ancak çalıştırabileceğim ve otomatik olarak bellek bilgilerini çıktılayabileceğim bir araç olmasını umuyordum.
— Alex Dima

Eminim orada özel ihtiyaçları olan biri için bellek profiliers vardır. Çoğu kişi bu proc dosyasının içeriğini düzenli aralıklarla kaydedebilir. FWIW , valgrind'in bileşenlerinden birinin oldukça iyi bir profilciye sahip gibi görünüyor . Hiç kullanmadım ama belki bu sizin girmeniz için bir yön.
— Bratchley

Yanıtlar:


6

Bazı bilgileri kullanarak görebilirsiniz pmap -x PID- her kütüphane / modül / açık dosya / işlem yığını için kbyte, rss ve kirli belleğe ayrılmıştır:

undefine @ uml: ~ $ pmap -x 13206
13206: uyku 60
Adres Kbytes RSS Kirli Mod Eşleme
0000000000400000 24 20 0 rx-- uyku
0000000000606000 4 4 4 r ---- uyku
0000000000607000 4 4 4 rw - uyku
000000000063b000 132 8 8 rw --- [anon]
00007f6a9847e000 4308 44 0 r ---- yerel ayar arşivi
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]
00007f6a98c79000140116 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 - [yığın]
00007fff09ffe000 8 4 0 rx-- [anon]
ffffffffff600000 4 0 0 rx-- [anon]
---------------- ------- ------- ------- 
toplam kB 8652 656 96
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.