본문 바로가기
Develop/Server

[Linux] IO 부하를 예측하는 명령어 두가지 iotop 와 iostat

by 코딩의성지 2021. 5. 27.

지난번에 cpu, memory의 상태를 측정하는 기본적인 명령어인 top를 정리했었다.

https://devkingdom.tistory.com/232

[Linux] linux 인프라 지표 모니터링을 하기위한 명령어 top

요즘 모니터링에 대한 관심도가 굉장히 높아졌다. 내가 자주 쓰는 linux 인프라 지표 모니터링 3가지 방법을 공유하려 한다. top 먼저 이건 가장 기본적인 명령어이다. 이 명령어를 통해서 CPU나 메

devkingdom.tistory.com


그런데 인프라적인 관점에서 가장 기본적으로 체크해야할 사항이 cpu, memory

오늘은 IO 부하를 예측하는 두가지 명령어를 알아볼 것이다.

iotop


iotop는 시스템에서 돌아가는 전체 프로세스의 io 통계를 볼수 있는 명령어다.

iotop의 경우 보안적인 문제때문에 root 또는 NET_ADMIN capability가 있어야 한다

내가 테스트하고자 하는 시스템에는 아직 설치가 되어 있지 않아서 우선 설치부터 먼저 해보자.

잠시 기다렸다가 설치가 다됐으면 이제 명령어를 한번 쳐보자.

위의 화면처럼 이렇게 우리가 top 명령어를 쳤을 때 처럼 프로세스의 io 상태를 점검할 수 있다.
먼저 사용할 수 있는 옵션을 알아보자.

옵션 내용
-h 도움말
-o i/o가 발생중인 프로세스만 보여줌
-b 배치모드
-n num 반복횟수 지정
-p pid 특정 프로세스에 대한 정보 출력
-d sec 업데이트 주기 설정( 기본은 1초로 되어있음)
-u user 특정 유저 모니터링
-a 실행한 시점부터 누적되는 read와 write 량 측정
-P 스레드는 제외하고 프로세스만 보여줌


그리고 내부에서 방향키 좌우를 누르면 선택된 값으로 정렬이 된다. 이것도 유용하니 참고해두자.

iostat


iotop 이 전체 프로세스에 대한 io 정보였다면 iostat는 장치단위로 정보를 보여준다.
iostat 를 사용하기위해서는 sysstat를 설치해줘야한다.


설치가 다되었으면 실행을 한번 해보자

잘나온다.. 하지만 .. 이렇게 쓰면 의미가 없다... 실시간으로 출력도 되어야하고
또 정보도 자세히 나와야한다..

일단 여기서 쓸수있는 옵션을 먼저 설명드리겠다.

옵션 내용
-c cpu 사용량 정보
-d disk 사용량 장보
-k 블락 단위에서 킬로바이트로
-m 블락 단위에서 메가바이트로
-p 파티션 당 통계 포함
-t 타임스탬프 출력
-x 확장 정보
-z 활동 0인 애들 제외


무조건 이렇게 쓸필요는 없지만 나처럼 명령어를 한번 조합해서 써보자.

iostat -dxm 1 -p ALL | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'


특정한 디스크 영역만 보고싶으면 아래의 명령어를 치자

iostat -dxm 1 /dev/sda | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'


여기서 표현되는 내용을 좀 설명드리자면

rrqm/s : 디바이스 큐에 대기 중인 초당 읽기 요청 건수
wrqm/s : 디바이스 큐에 대기 중인 초당 쓰기 요청 건수
r/s : 디바이스에 요청한 초당 읽기 요청 건수
w/s : 디바이스에 요청한 초당 쓰기 요청 건수
rsec/s : 디바이스에서 초당 읽어들인 섹터 수
wsec/s : 디바이스에서 초당 기록한 섹터 수
avgrq-sz : 디바이스에 요청한 초당 평균 데이터 크기
avgqu-sz : 디바이스에 요청한 초당 평균 큐의 길이
await : 디바이스에서 처리되기 위해 요청된 I/O 평균 시간 (밀리초로 표현) (큐에서 소요된 시간과 처리된 시간이 합쳐진 값)
svctm : 디바이스에서 처리한 I/O 평균 시간 (밀리초로 표현)
%util : 디바이스에서 요청한 I/O 작업을 수행하기 위해 사용한 CPU 시간 비율, (디스크가 버틸수 있는 한계치를 의미, 100%에 가까워지면 질수록 한계가 온거라 보면됨)

와 같다.


반응형

댓글