gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

[Linux command] iotop - Linux 디스크 I/O 모니터링

gbmin 2023. 7. 24. 20:45

iotop은 Linux 커널의 I/O 스케줄러에 내장된 기능을 활용하여, 시스템에서 실행 중인 프로세스의 I/O 사용량을 실시간으로 모니터링할 수 있는 유용한 도구이다. 시스템의 성능을 저하시키는 I/O 병목 현상을 체크하는데 매우 뛰어난 성능을 보인다.


[목차]

1. iotop 설치

2. iotop 기본 사용법

3. iotop 주요 옵션

4. iotop 사용 예시

5. iotop 활용사례


1. iotop 설치

데비안 계열

apt-get install iotop

레드헷 계열

yum install iotop

 

 

2. iotop 기본 사용법

iotop [옵션]

 

 

3. iotop 주요 옵션

 

 

옵션 설명
-o, --only 실제 I/O 작업을 수행하고 있는 프로세스나 스레드만을 출력
-b, --batch 대화형 모드가 아닌 배치 모드로 실행.
이 모드에서는 헤더가 한 번만 출력되고, 키보드 입력은 무시됨
-n NUM, --iter=NUM 종료하기 전에 반복할 횟수를 지정 기본값은 무한대임
-d SEC, --delay=SEC 반복 사이의 지연 시간을 초 단위로 지정합니다. 기본값은 1초
-p PID, --pid=PID 모니터링할 프로세스나 스레드의 ID를 지정 기본값은 모든 프로세스와 스레드임
-u USER, --user=USER 모니터링할 사용자를 지정 기본값은 모든 사용자
-P, --processes 모든 스레드가 아닌 프로세스만을 출력
-a, --accumulated 대역폭이 아닌 누적 I/O를 출력
-k, --kilobytes 킬로바이트 단위로 출력
-t, --time 각 줄에 타임스탬프를 추가, 이 옵션은 --batch 옵션을 함축함
-q, --quiet 일부 헤더 줄을 출력하지 않음, 이 옵션은 --batch 옵션을 함축함

 

 

4. iotop 사용 예시

stress test를 진행하고 iotop으로 모니터링 해였다.

아래와 같이 부하 프로세스를 체크할 수 있으며 누적 I/O 가 얼마나 발생되고 있는지 체크 가능하다.

iotop

 

 

5. iotop 활용사례

부하가 발생되면 대부분 프로세스의 cpu, ram 사용율이 높아지는 게 일반적인데 간혹 cpu 사용율은 낮고 I/O 를 과도하게 사용하여 디스크 성능 저하를 유발하는 부하는 주는 경우가 있다. 특히 컨테이너 환경에서 이런 경우가 종종 발생되는데 top 만으로는 어떤 프로세스가 부하를 주는지 확인이 잘 안 될 때가 있다 이때 iotop으로 문제의 pid를 찾아 분석 후 최적화 조치를 하는 방법으로 종종 활용하고 있다.