SWAPPING PRESSURE

스와핑 성능 신호

스와핑을 메모리와 디스크를 오가는 과정으로만 외우면 thrashing을 이해하기 어렵다. page fault가 늘고, 페이지 교체가 잦아지고, CPU는 계산보다 swap-in과 swap-out을 기다리며 전체 처리량이 급격히 떨어진다.

01

Working set 증가

실행 중인 프로세스들이 실제로 자주 쓰는 페이지 합이 물리 메모리를 넘기 시작한다.

할당량보다 접근 패턴이 중요하다
02

페이지 교체

커널은 덜 쓰는 페이지를 디스크의 swap 영역으로 내보내 공간을 만든다.

익명 메모리와 파일 캐시는 처리 방식이 다르다
03

Page fault 증가

다시 필요한 페이지가 메모리에 없으면 디스크에서 읽어오는 major fault가 발생한다.

디스크 I/O는 RAM 접근보다 훨씬 느리다
04

Thrashing 진입

실행보다 페이지 교체에 시간을 쓰면 CPU 사용률보다 I/O wait가 문제로 보인다.

프로세스는 살아 있지만 매우 느려진다
05

원인 축소

메모리 누수, 과한 동시성, 캐시 크기, 컨테이너 limit, batch 작업을 나눠 본다.

swap을 늘리는 것만으로 원인이 사라지지 않는다
Minor fault
디스크 없는 fault 페이지 테이블 매핑만 필요하거나 이미 메모리에 있는 경우다.
증가 자체가 항상 장애는 아니다
Major fault
디스크 읽기 필요 필요한 페이지를 디스크에서 가져와야 하므로 지연이 크다.
급증하면 체감 지연이 커진다
Swap out
페이지 내보내기 메모리 확보를 위해 익명 페이지를 swap으로 밀어낸다.
나중에 다시 읽는 비용이 생긴다
Thrashing
교체 과부하 프로세스 실행보다 page in/out이 대부분의 시간을 차지한다.
동시성 줄이기와 메모리 증설을 검토한다

swap-in 지연 신호

지표 연결 free memory, swap used, major fault, I/O wait를 같은 시간축으로 본다.
프로세스 찾기 RSS, working set, page fault가 큰 프로세스를 찾아 원인을 나눈다.
재현 비교 동시성이나 캐시 크기를 줄였을 때 major fault가 감소하는지 확인한다.