무작위 접근(Random access) 워크로드에 적합한 ZFS 튜닝 방법
2 hours ago
1
- ZFS 기본 파라미터는 순차 접근과 무작위 접근 사이의 절충안으로 설정됨
- 워크로드 특성을 명확히 안다면 더 공격적인 튜닝 가능
- 순차 접근 vs 무작위 접근 차이 설명
- HDD는 헤드 이동 때문에 무작위 접근 성능이 순차 접근 대비 수십~수백배 느려질 수 있음
- SSD도 무작위 접근이 훨씬 빨라졌지만 순차 접근이 여전히 더 효율적임
- 큰 파일을 순서대로 읽는 워크로드는 순차 접근 성향이 강함
- 작은 파일 여러 개를 자주 읽는 워크로드는 무작위 접근 성향이 강해지기 쉬움
- 워크로드 분석 방법 소개
- 코드/구조 기반 논리적 추론
- 처리량(bps)+초당 IO 수(iops) 기반 평균 IO 크기 계산
- zpool iostat -r 기반 IO 크기 분포 분석
- zpool iostat -r 해석
- ind: 개별 논리 요청 크기
- agg: 실제 병합되어 수행된 IO 크기
- agg가 ind보다 크면 인접 IO 병합이 잘 일어나고 있다는 뜻
- 예제 워크로드 분석 결과
- 동기 읽기 비중 약 76%
- 32KiB 이하 읽기가 99% 이상
- 비동기 쓰기 역시 작은 IO 비중 높음
- 전체적으로 무작위 접근 성향이 매우 강한 워크로드
- zfs_prefetch_disable
- ZFS는 순차 접근 패턴 감지 시 인접 블록을 미리 ARC에 적재함
- 무작위 접근 워크로드에서는 사전 읽기 적중률이 낮아 불필요한 IO만 늘어날 수 있음
- arc_summary 기반으로 사전 읽기 효율 측정 가능
- 적중률이 낮다면 zfs_prefetch_disable 검토 가능
- recordsize
- 기본값은 128K
- 예제 워크로드에서는 대부분의 IO가 32KiB 이하이므로 더 작은 recordsize 검토 가능
- 최적값 선정
- 벤치마크 기반으로 결정하는 것이 중요
- MySQL/Postgres 같은 DB는 이미 검증된 튜닝 사례가 많음
- 일반적으로 DB 페이지 크기와 유사한 recordsize를 사용하는 경우가 많음
-
Homepage
-
개발자
- 무작위 접근(Random access) 워크로드에 적합한 ZFS 튜닝 방법