용어정리

Anonymous Memory & File-backed Memory

Dev.Congsik 2025. 4. 11. 14:45
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