728x90
🔍 1. Anonymous Memory란?
Anonymous memory는 파일 시스템에 매핑되지 않은 메모리 영역입니다. 즉, 디스크의 어떤 파일과도 연결되지 않은 메모리입니다. 이 메모리는 보통 다음과 같은 경우에 생성됩니다:
- 프로세스가 malloc() 또는 brk()를 호출해서 힙을 사용하는 경우
- mmap()을 통해 MAP_ANONYMOUS 플래그로 메모리를 매핑하는 경우
- 스택 영역 (예: 함수 호출에 의해 자동 생성되는 변수들)
📂 2. File-backed Memory와 비교
항목 | Anonymous Memory | File-backed Memory |
매핑 대상 | 없음 | 특정 파일 |
저장 방식 | 디스크에 저장되지 않음 (단, swap 제외) | 파일 시스템의 파일 |
예시 | malloc, stack, heap | shared library, memory-mapped file |
페이지 스왑 | swap 공간 사용 가능 | 필요 시 파일로 다시 읽어올 수 있음 |
공유 가능 여부 | 일반적으로 프로세스 간 공유되지 않음 | 공유 가능 (mmap 등 사용 시) |
📊 3. Anonymous Memory는 어디서 보이나?
시스템 관리자 입장에서, anonymous memory는 다양한 도구로 확인할 수 있습니다:
🧠 /proc/[pid]/smaps
smaps 파일에서 확인 가능한 주요 항목:
- Anon / AnonHugePages / Private_Dirty / Swap
7f82b4400000-7f82b4600000 rw-p 00000000 00:00 0
Size: 2048 kB
Rss: 2048 kB
Anon: 2048 kB
이 영역은 anonymous로, 어떤 파일과도 연결되지 않았음을 보여줍니다.
📈 top, htop, smem, ps 등
- RES (Resident Set Size): 실제 RAM에 있는 메모리. anonymous 포함
- SHR: 공유 메모리
- VIRT: 전체 가상 메모리
Anonymous 메모리는 보통 RES - SHR에 포함됩니다.
⚠️ 시스템 관리자 관점 - 주의점 & 활용
✅ 주의 깊게 봐야 하는 상황
- 메모리 누수: 프로세스의 anonymous memory가 계속 증가하면 malloc 기반 메모리 누수 가능성 있음
- Swap 사용 증가: anonymous memory는 swap-out 대상이 될 수 있기 때문에, 시스템이 과도하게 swap을 사용할 경우 성능 저하 가능
- OOM Killer 작동: anonymous memory가 커지면, 커널이 Out of Memory 상태로 판단하여 프로세스를 강제 종료할 수 있음
🛠 분석 도구 활용 팁
- smem -r -k: 프로세스별 anonymous memory 비중 파악
- top → Shift + E: memory 정렬 기준 변경
- ps aux --sort -rss: RSS 기준으로 메모리 많이 쓰는 프로세스 정렬
728x90
'용어정리' 카테고리의 다른 글
On-premise와 SaaS? (3) | 2025.02.11 |
---|---|
Deepseek? (1) | 2025.02.03 |
CI/CD? (1) | 2025.01.16 |
MSA 서비스의 설계 및 구현과 예시 (2) | 2025.01.15 |
프롬프트 엔지니어링? (2) | 2024.12.18 |