가상메모리 상태와 스왑영역 사용량 확인하기(with 맥북)

김핌피·2025년 5월 30일
post-thumbnail

Swap In/Out ??

GitBook에 의하면, 메모리 스와핑물리적 메모리 사용을 극대화하기 위한 메모리 회수 기술이다.
운영체제는 제한된 RAM을 보다 효율적으로 활용하기 위해, 메모리를 적극적으로 회수(swap out)하고 필요에 따라 다시 불러오는(swap in) 전략을 사용한다.


메모리 스와핑?

쉽게말해,
메모리 스와핑이란, 운영체제에서 메모리가 부족할 때,
자주 사용되지 않는 프로세스의 일부 메모리 페이지(혹은 데이터)디스크의 스왑 영역으로 잠시 내보내고,
그 빈 공간에 다른 데이터를 대신 적재해서 실행하는 메모리 관리 기법이다.


스왑 영역?

이때 사용되는 스왑 영역(Swap Space)이란,
일시적으로 메모리 데이터를 저장해 두는 보조기억장치(HDD/SSD) 상의 공간이다.

운영체제는 이 스왑 공간을 활용하여,
용량부족등의 이유로, 실행 중인 프로세스가 RAM에 모두 올라가지 못하더라도,
프로그램이 계속 실행될 수 있도록 도와준다.


최종 정리

  • 메모리 스와핑은 RAM 부족 시, 자주 사용되지 않는 메모리 페이지를 디스크에 잠시 저장하는 기법이다.
  • 이때 사용되는 디스크 공간이 스왑 영역이다.
  • 현대 OS페이지 단위의 스와핑을 사용하며, 압축 메모리스왑 순서로 처리된다.
  • 스와핑은 RAM 사용 최적화에는 도움이 되지만, 디스크 접근은 느리므로 성능 저하 요인이 될 수 있다.

MacBook에서 가상메모리/스왑영역 정보 확인하기

가상 메모리 정보 확인


🔹 메모리 상태

  • Pages free: 현재 사용 가능한 메모리 페이지 수
  • Pages active: 최근에 접근되어 현재 사용 중인 페이지
  • Pages inactive: 사용되었지만 현재는 사용되지 않는 페이지 (다시 사용할 수 있음)
  • Pages speculative: 프리페치(prefetch)된 데이터로, 필요 없으면 제거됨
  • Pages throttled: 디스크 I/O 제한으로 인해 처리 대기 중인 페이지
  • Pages wired down: 커널 또는 드라이버에서 고정한 메모리로 해제 불가

🔹 관리 대상 페이지

  • Pages purgeable: 캐시 데이터 등 필요 시 삭제 가능한 페이지
  • "Translation faults": 가상 주소 → 실제 주소로 변환할 때 발생한 페이지 폴트 총 횟수
  • Pages copy-on-write: 복사-쓰기(COW)로 인해 실제 복사된 페이지 수
  • Pages zero filled: 0으로 채워진 새 메모리 페이지 수
  • Pages reactivated: inactive였다가 다시 active로 이동한 페이지 수
  • Pages purged: 삭제되거나 회수된 purgeable 페이지 수

🔹 페이지 유형

  • File-backed pages: 파일 매핑된 메모리 (예: mmap된 파일)
  • Anonymous pages: 파일과 무관한 일반 메모리 (heap, stack 등)

🔹 압축 메모리

  • Pages stored in compressor: 압축된 페이지 수
  • Pages occupied by compressor: 실제 압축 데이터가 차지한 페이지 수
  • Decompressions: 압축 해제된 횟수
  • Compressions: 메모리 압축된 횟수

🔹 디스크 연동

  • Pageins: 디스크에서 메모리로 불러온 페이지 수
  • Pageouts: 메모리에서 디스크로 내보낸 페이지 수
  • Swapins: 스왑 영역에서 RAM으로 다시 불러온 페이지 수
  • Swapouts: RAM에서 스왑 영역으로 내보낸 페이지 수

스왑 영역 정보 확인

🔹 스왑 메모리

  • total : macOS가 설정한 전체 스왑 가능 공간
  • used : RAM 부족 시 디스크에 스왑된 데이터 크기
  • free : 아직 사용되지 않은 여유 스왑 공간
  • (encrypted) : 스왑 데이터 암호화 여부 → macOS는 보안상 스왑 데이터를 암호화하여 저장하기 때문에 존재하는 항목

서버운영에서 스왑영역 확인은 왜 중요할까?

  • 서버 운영 시, 스왑 영역을 과도하게 사용하면 서버 컴퓨터 성능 저하 또는 서버 다운으로 이어질 수 있음.
  • 따라서, 스왑 사용률 을 관리하는 것이 필수.

실제 사례: 클라우드 환경에서의 스왑 : OOM Killer를 방지하는 스왑


클라우드 환경(AWS, GCP 등)에서는 과도한 서버 메모리 사용으로 인한 문제를 방지하기 위해
컨테이너나 VM 단위로 메모리 제한(limit)을 설정할 수 있음.

이 제한을 초과하면 커널이 OOM Killer(Out-Of-Memory Killer)를 작동시켜, 메모리를 과도하게 사용하는 프로세스를 강제 종료함.

RAM과 스왑 공간이 모두 소진되는 경우에도 마찬가지로 OOM Killer가 작동.
(= 스왑은 OOM Killer 발생을 지연시키는 안전장치로 활용될 수 있지만, OOM을 완전히 방지할 수는 없음.)

결과적으로, 스왑 사용량을 지속적으로 모니터링하고, OOM 발생을 고려한 서버 설계가 매우 중요.

profile
HAPPY PIMPPY

0개의 댓글