각 프로세스/스레드의 메모리 소비(힙, 스택, 데이터, 코드로 구분)를 모니터링하는 방법은 무엇입니까?

각 프로세스/스레드의 메모리 소비(힙, 스택, 데이터, 코드로 구분)를 모니터링하는 방법은 무엇입니까?

내 자신의 코드 작성을 시작하기 전에 다음과 같은 내용을 출력할 수 있는 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)

이것을 가능하게 할 수 있는 것이 있나요?

답변1

다음 명령을 사용하여 일부 정보를 확인할 수 있습니다 pmap -x PID. 프로세스의 각 라이브러리/모듈/열린 파일/스택에 대해 킬로바이트, RSS 및 더티 메모리로 구분됩니다.

@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--- [익명]
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 읽기 및 쓰기 --- [익명]
00007f6a98c79000 140 116 0 rx--ld-2.19.so
00007f6a98e71000 12 12 12 읽기 및 쓰기 --- [익명]
00007f6a98e99000 8 8 8 rw--- [익명]
00007f6a98e9b000 4 4 4 r---- ld-2.19.so
00007f6a98e9c000 4 4 4 rw---ld-2.19.so
00007f6a98e9d000 4 4 4 rw--- [익명]
00007fff09fd0000 132 12 12 rw---[스택]
00007fff09ffe000 8 4 0 rx--[익명]
ffffffffff600000 4 0 0 rx-- [익명]
--- ------- ------- -------
총 KB 8652 656 96

관련 정보