ZFS ARC thrashing 현상 대응 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 시스템 관리자, 고성능 서버 운영자
- 중급~고급 레벨의 시스템 성능 최적화 지식 필요
핵심 요약
- ARC 스래싱 정의 : 캐시 히트 실패 →
arc_evict
스레드 CPU 점유율 90% 이상으로 인한 성능 저하 현상 - 진단 지표 :
iowait
20% 이상,system mode
CPU 사용률 증가, 캐시 히트율 저하 - 해결 방안 :
echo 3 > /proc/sys/vm/drop_caches
명령어로 캐시 강제 제거 후zfs_arc_max
조정 또는 메모리 확장
섹션별 세부 요약
1. ARC 스래싱 정의
- 캐시 교체(Eviction) 과다 → 시스템 성능 저하
- 고성능 I/O 환경(데이터베이스 서버)에서 서비스 장애 유발 가능성
- 비파괴적 특징: 디스크 미반영 데이터(
dirty item
)는 유지
2. 주요 증상 및 진단 지표
arc_prune
/arc_evict
스레드 CPU 사용률 90% 이상iowait
지속 20% 이상,system mode
CPU 사용률 증가- 캐시 히트율 저하 → 평상시 데이터 대비 비교 필요
3. 대응 방법
- 명령어 :
echo 3 > /proc/sys/vm/drop_caches
→ 페이지 캐시 및 slab 객체 제거 - 효과 : 실행 직후 일시적 성능 저하 발생 → 캐시 재채우기 전까지
- 주의사항 :
zfs_arc_max
기본값(메모리 1/2)은 다른 애플리케이션과 경쟁 유발 가능
4. 근본적 해결 방안
zfs_arc_max
값 줄이기 → 메모리 경쟁 방지- 물리적 메모리 확장(Scale-up) → 가장 확실한 해결책
- 워크로드에 맞는 ARC 크기 조정 필요
결론
- 즉시 대응 :
echo 3 > /proc/sys/vm/drop_caches
명령어 실행 후zfs_arc_max
재조정 - 장기적 전략 : 메모리 확장 + 워크로드 기반 ARC 크기 최적화
- 모니터링 필수 :
iowait
,system mode
CPU 사용률, 캐시 히트율 지속 추적