반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

RAM에 존재하는 프로세스를 분석하기, pmap 본문

카테고리 없음

RAM에 존재하는 프로세스를 분석하기, pmap

로만로만 2023. 8. 20. 22:41
반응형

메모리 사용량을 볼 때는 크게 free, sar를 이용한다.

그런데, 이게 자세하게는 확인하지 못한다. 무슨 뜻인지는 이 글을 읽어보자.

 

어느 날 무의식적으로 들었던 생각이 있었다.

라우터에서 show running-config를 입력하면 그 라우터의 메모리에 있는 모든 것들을 볼 수 있는데, 그럼 리눅스에서는 어떻게 해야 볼 수 있을까? 
이에 대한 답은 생각보다 간단했다.

그러나, 생각보다 만족스럽지 않았다. 자세하지 않았던 이유였다.

 

그러나 pmap [pid] 을 알아봤는데 생각보다 너무 자세했다.

pmap을 이용하면 프로세스가 메모리 자원을 얼마나, 어떻게 사용했는지를 그 어떤 명령어보다 자세하게 알 수 있다.
이 명령어는 메모리의 어떤 주소에 있었는지 까지도 출력을 하기 때문에 매우 많은 내용들이 출력이 된다.
그렇기에, 예시는 head 명령어를 이용할 것이다.
실습을 위해서는 한번이라도 head나 tail 없이 출력하는 것을 권장한다.


1. /usr/lib/gnome-session-binary:
이 바이너리 파일은 GNOME 세션을 관리하는 프로그램입니다.
여러 메모리 주소 범위에 걸쳐 매핑되어 있으며, 주소 범위마다 다른 권한 (읽기, 쓰기, 실행)을 가집니다.
예를 들어, 주소 000055c841800000에서는 바이너리가 실행 권한 (r-xp-)으로 매핑되어 있습니다.

2. [ anon ]:
이 항목은 이름이 없는 메모리를 나타냅니다. 이는 동적으로 할당된 메모리 (예: 힙, 스택) 또는 메모리 매핑된 파일의 일부일 수 있습니다.
여러 주소 범위에 걸쳐 있으며, 대부분 rw-p- (읽기/쓰기 권한)으로 매핑되어 있습니다.
몇몇 주소 범위에서는 ---p- 권한이 있어, 해당 메모리 영역에는 현재 접근할 수 없으며, 필요에 따라 매핑될 수 있습니다.

3. Kbytes, RSS, PSS, Dirty, Swap:
Kbytes: 해당 주소 범위에 할당된 메모리의 크기입니다.
RSS (Resident Set Size): 실제로 RAM에 로드된 페이지의 크기입니다.
PSS (Proportional Set Size): 해당 프로세스만 사용하는 메모리와 다른 프로세스와 공유하는 메모리의 합계입니다.
Dirty: 수정된 페이지의 크기입니다.
Swap: 스왑 영역에 저장된 페이지의 크기입니다.

이 테이블의 데이터를 바탕으로, GNOME 세션 바이너리는 여러 메모리 주소 범위에 걸쳐 다양한 권한으로 매핑되어 있으며, 많은 메모리 영역이 동적으로 할당되어 사용되고 있음을 알 수 있습니다.