콘텐츠로 이동

iotop - 프로세스별 디스크 I/O 모니터 치트시트

iotop - 프로세스별 디스크 I/O 모니터 치트시트

iotop은 실시간으로 프로세스별 디스크 I/O 사용을 표시하는 top 같은 유틸리티다. iostat디바이스가 바쁜 것을 말해주는 반면, iotop은 어떤 프로세스가 읽고 쓰는지, 어느 속도로, 어떤 I/O 우선순위로 말해준다. “지금 디스크를 쾅쾅 거리는 것이 무엇인가?”에 답하는 가장 빠른 방법이다. 커널 회계 데이터를 읽으므로 root가 필요하다.

설치

플랫폼명령어
Debian/Ubuntusudo apt install iotop
Fedora/RHELsudo dnf install iotop
Arch Linuxsudo pacman -S iotop
요구사항CONFIG_TASK_IO_ACCOUNTING을 사용한 커널 (표준)
확인sudo iotop --version

실행

명령어설명
sudo iotop모든 프로세스의 대화형 라이브 보기
sudo iotop -o실제로 I/O를 수행하는 프로세스만 표시
sudo iotop -a누적 I/O 표시 (속도 아닌 총합)
sudo iotop -P스레드가 아닌 프로세스 표시
sudo iotop -u USER사용자로 필터링
sudo iotop -d 55초마다 새로고침

디스플레이

의미
TID/PID스레드 또는 프로세스 ID
PRIOI/O 스케줄링 우선순위 클래스
USER프로세스 소유자
DISK READ현재 읽기 속도
DISK WRITE현재 쓰기 속도
SWAPIN스왑 중에 소비된 시간 %
IOI/O 대기 중 소비된 시간 %
COMMAND프로세스 명령줄

두 개의 헤더 라인은 전체실제 전체 시스템의 디스크 읽기/쓰기를 표시한다.

대화형 키

작업
o--only 토글 (유휴 프로세스 숨김)
a누적 vs 속도 토글
p프로세스/스레드 토글
r정렬 순서 반대
/ 정렬 열 변경
q종료

배치 / 로깅 모드

스크립트 및 증거 캡처를 위해 비대화형으로 실행하자.

# 2초마다 상위 I/O 프로세스를 로그, 10 반복, 활성 것만
sudo iotop -boPqqq -d 2 -n 10 > iotop.log
플래그효과
-b배치 (비대화형) 모드
-o활성 프로세스만
-n N반복 수
-q조용함 (반복해서 헤더 억제)
-k킬로바이트

일반적인 워크플로우

# "지금 디스크에 뭘 쓰고 있나?" — 활성만, 스레드 아닌 프로세스
sudo iotop -oP

# 시간에 따라 주기적인 I/O 스파이크 포착
sudo iotop -boP -d 1 -n 60 > spikes.log

# 사용자 프로세스에 대한 디스크 로드 책임 지정
sudo iotop -oP -u appuser

I/O 우선순위 (ionice와 페어링)

iotop은 PRIO (ionice) 클래스를 표시; ionice로 변경한다.

ionice 클래스의미
ionice -c 1실시간 I/O 우선순위
ionice -c 2 -n 0..7최선 노력 (기본값), 수준 0 = 최고
ionice -c 3유휴 — 디스크가 다른 방법으로 자유로울 때만 I/O
# 무거운 배치 작업의 디스크 I/O 우선순위 저하
ionice -c 3 -p $(pgrep -n backup)

iotop vs 관련 도구

도구답변
iotop어떤 프로세스가 디스크 I/O를 수행
iostat디바이스가 포화되는지 여부
pidstat -d프로세스별 I/O (스크립트 가능, sysstat)
dstat/dool결합된 시스템 보기

워크플로우: iostat가 디스크가 바쁜 것을 표시 → iotop이 어떤 프로세스 → ionice 우선순위 저하 표시.

자료