본문으로 건너뛰기

4.2 iostat과 latency 해석

iostat -xz는 장치별 요청률, throughput, 평균 요청 크기, queue와 latency를 묶어 봅니다.

iostat -xz 1
pidstat -d 1
cat /proc/pressure/io

주요 지표는 환경의 sysstat version에 따라 이름이 조금 다릅니다.

  • r/s, w/s: 초당 read와 write 요청
  • rkB/s, wkB/s: throughput
  • r_await, w_await: queue를 포함한 평균 latency
  • aqu-sz: 평균 queue 크기
  • %util: 장치가 요청을 처리한 시간 비율

평균 await가 낮아도 tail latency가 나쁠 수 있습니다. Database의 p95와 p99 commit latency와 storage platform metric을 함께 봅니다. 요청 merge, multipath, virtualized storage는 device 출력의 의미를 바꿉니다.

안전한 부하 실험​

fio는 filesystem과 storage를 실제로 사용합니다. 운영 data directory나 같은 volume에서 실행하지 않습니다. 별도 test volume에서 block size, read/write ratio, queue depth, sync 조건을 workload와 맞춥니다.

실험 전 확인: target path, filesystem, 남은 용량, snapshot, I/O limit
실험 중 확인: database latency, device await, queue, error
중단 기준: latency budget 초과 또는 error 발생

I/O error는 dmesg 또는 kernel journal에서도 확인합니다.

journalctl -k --since '-1 hour' | grep -Ei 'i/o error|timeout|reset|nvme|scsi'