Làm cách nào tôi có thể theo dõi mỗi quá trình / mỗi mức tiêu thụ bộ nhớ của luồng (được chia thành heap, stack, data, code)?


11

Trước khi nhảy vào và viết mã của riêng tôi, tôi muốn tìm hiểu xem có phần mềm GNU / Linux nào có thể xuất ra thứ gì đó tương tự như của QNX khôngshowmem .

Đối với mỗi luồng của mỗi tiến trình đang chạy, tôi muốn thấy mức tiêu thụ bộ nhớ được chia thành các loại sau:

 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ó bất cứ điều gì sẽ làm điều này có thể?


Có vẻ như hầu hết các thông tin này đều có trong/proc/$PID/smaps
Bratchley

Điều đó đúng, nhưng tôi đã hy vọng có một số công cụ mà tôi có thể chạy và tự động xuất thông tin bộ nhớ.
Alex Dima

Tôi chắc chắn có những hồ sơ bộ nhớ ngoài kia cho những người có nhu cầu cụ thể. Hầu hết mọi người chỉ có thể định kỳ lưu nội dung của tập tin đó. FWIW có vẻ như một trong những thành phần của valgrind có một hồ sơ khá tốt. Tôi chưa bao giờ sử dụng nó nhưng có lẽ đó là một hướng để bạn đi vào.
Bratchley

Câu trả lời:


6

Bạn có thể xem một số thông tin bằng cách sử dụng pmap -x PID- nó được chia thành kbyte, rss và bộ nhớ bẩn cho mỗi thư viện / mô-đun / tệp mở / ngăn xếp của một quy trình:

undefine @ uml: ~ $ pmap -x 13206
13206: ngủ 60
Địa chỉ Bản đồ chế độ bẩn RSS Kbytes
0000000000400000 24 20 0 rx-- ngủ
0000000000606000 4 4 4 r ---- ngủ
0000000000607000 4 4 4 rw --- ngủ
000000000063b000 132 8 8 rw --- [anon]
00007f6a9847e000 4308 44 0 r ---- lưu trữ cục bộ
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 --- [ngăn xếp]
00007fff09ffe000 8 4 0 rx-- [anon]
ffffffffff600000 4 0 0 rx-- [anon]
---------------- ------- ------- ------- 
tổng kB 8652 656 96
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.