콘텐츠로 이동

iostat - CPU 및 디스크 I/O 통계 치트시트

iostat - CPU 및 디스크 I/O 통계 치트시트

iostatCPU 사용률디바이스별 디스크 I/O 통계 — 처리량, IOPS, 요청 레이턴시, 큐 깊이를 보고한다. 이는 스토리지 병목을 Linux에서 진단할 때 표준 첫 번째 중지점이다: 디스크가 포화되는가, 요청이 큐에서 기다리는가, 레이턴시가 급증하는가? 이것은 mpstat, pidstat, sar과 함께 sysstat 패키지의 일부로 제공된다.

설치

플랫폼명령어
Debian/Ubuntusudo apt install sysstat
Fedora/RHELsudo dnf install sysstat
Arch Linuxsudo pacman -S sysstat
macOSiostat이 내장되어 있음 (다른 출력)
확인iostat -V

기본 사용

명령어설명
iostat부트 이후 한 보고서 (CPU + 디바이스)
iostat 22초마다 새로고침
iostat 2 55개 보고서, 2초 간격
iostat -x확장 통계 (유용한 것들)
iostat -d디바이스 통계만 (CPU 없음)
iostat -cCPU 통계만

실제로 원하는 명령어

# 확장, 사람 읽을 수 있는, 디바이스별, 2초마다
iostat -xmt 2
플래그효과
-x확장 통계 (util%, await, aqu-sz, …)
-mMB/s로 보고 (KB/s는 -k 사용)
-t각 보고서와 함께 타임스탬프 출력
-p DEV디바이스의 파티션 표시 (예: -p sda)
-d 22초마다 디바이스 보고서
-h사람 읽을 수 있는, NVMe-친화적 형식

확장 출력 읽기 (-x)

의미
r/s, w/s읽기/쓰기 요청 초당 (IOPS)
rMB/s, wMB/s읽기/쓰기 처리량
rareq-sz / wareq-sz평균 요청 크기
r_await, w_await평균 읽기/쓰기 레이턴시 (ms) — 주요 메트릭
aqu-sz평균 큐 깊이 (진행 중인 요청)
%util디바이스가 바쁜 시간의 비율

신호 해석

관찰해석
%util 100% 근처디바이스가 포화됨 (SSD/NVMe에 주의 — 병렬화 가능)
높은 await (수십 ms+)요청이 느림 — 레이턴시 병목
높은 aqu-sz요청이 디스크가 배수하는 것보다 빠르게 쌓임
높은 IOPS, 낮은 처리량작은 임의 I/O (전형적인 DB/메타데이터 워크로드)
낮은 IOPS, 높은 처리량큰 순차 I/O (백업, 스트리밍)

최신 SSD/NVMe에서, %util은 디바이스가 여전히 헤드룸을 가지면서 100%를 읽을 수 있다 (병렬로 요청 서비스). awaitaqu-sz를 거기서 %util보다 더 신뢰하라.

CPU 섹션

필드의미
%user / %nice사용자 공간에서 시간
%system커널에서 시간
%iowaitCPU 유휴 I/O 대기 중 (스토리지 압력 힌트)
%steal하이퍼바이저에 의해 도용당한 시간 (시끄러운 이웃)
%idle유휴 시간

높은 %iowait과 높은 디스크 await는 스토리지가 병목이라는 것을 정확히 지적한다.

일반적인 워크플로우

# 의심되는 디스크 병목을 실시간으로 보기
iostat -xmt 2

# 한 디바이스 및 그 파티션에 포커스
iostat -xmt -p nvme0n1 2

# 로드 테스트 중 CPU iowait을 디바이스 레이턴시와 연관 시키기
iostat -xmt 1 60 > iostat.log

iostat vs 관련 도구

도구포커스
iostat디바이스별 I/O + CPU 통계
iotop프로세스가 I/O를 수행하는 것
dstat/dool한 보기로 CPU/디스크/네트 결합
sar역사적/기록된 시스템 활동

iostat를 사용하여 디바이스가 느린 것을 본 다음 iotop어떤 프로세스가 책임있는지 찾자.

자료