iostat - CPU 및 디스크 I/O 통계 치트시트
iostat는 CPU 사용률 및 디바이스별 디스크 I/O 통계 — 처리량, IOPS, 요청 레이턴시, 큐 깊이를 보고한다. 이는 스토리지 병목을 Linux에서 진단할 때 표준 첫 번째 중지점이다: 디스크가 포화되는가, 요청이 큐에서 기다리는가, 레이턴시가 급증하는가? 이것은 mpstat, pidstat, sar과 함께 sysstat 패키지의 일부로 제공된다.
설치
| 플랫폼 | 명령어 |
|---|
| Debian/Ubuntu | sudo apt install sysstat |
| Fedora/RHEL | sudo dnf install sysstat |
| Arch Linux | sudo pacman -S sysstat |
| macOS | iostat이 내장되어 있음 (다른 출력) |
| 확인 | iostat -V |
기본 사용
| 명령어 | 설명 |
|---|
iostat | 부트 이후 한 보고서 (CPU + 디바이스) |
iostat 2 | 2초마다 새로고침 |
iostat 2 5 | 5개 보고서, 2초 간격 |
iostat -x | 확장 통계 (유용한 것들) |
iostat -d | 디바이스 통계만 (CPU 없음) |
iostat -c | CPU 통계만 |
실제로 원하는 명령어
# 확장, 사람 읽을 수 있는, 디바이스별, 2초마다
iostat -xmt 2
| 플래그 | 효과 |
|---|
-x | 확장 통계 (util%, await, aqu-sz, …) |
-m | MB/s로 보고 (KB/s는 -k 사용) |
-t | 각 보고서와 함께 타임스탬프 출력 |
-p DEV | 디바이스의 파티션 표시 (예: -p sda) |
-d 2 | 2초마다 디바이스 보고서 |
-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%를 읽을 수 있다 (병렬로 요청 서비스). await와 aqu-sz를 거기서 %util보다 더 신뢰하라.
CPU 섹션
| 필드 | 의미 |
|---|
%user / %nice | 사용자 공간에서 시간 |
%system | 커널에서 시간 |
%iowait | CPU 유휴 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로 어떤 프로세스가 책임있는지 찾자.
자료