728x90
반응형
iostat


◆ iostat 는 디스크 입출력에 대한 통계를 보고하고 처리량, 사용률, 대기열 길이, 트랜잭션 비율 및 서비스 시간에 대한 측정 결과를 알수 있는 명령어
 

◆ 평소 디스크에 베드섹터라든지 이상이 없는데, 서버의 부하가 평소보다 높을 경우에  디스크 사용량 을 알수 있다.


◆ 설치 방법

# yum install sysstat*


◆ 옵션

-c : cpu 사용량 정보를 출력한다.

-d : 디바이스의 사용량 정보를 출력한다.

-k : 초당 블럭수 대신 초당 Kb를 사용한다. 단 이 옵션은 리눅스 커널 2.4 이상부터 가능하다.

-m : 초당 블럭수 대신 초당 Mb를 사용한다. 단 이 옵션은 리눅스 커널 2.4 이상부터 가능하다.

-t : 각 결과 앞에 시간을 포함해서 출력한다.

-V : 마지막에 버전 숫자를 출력한다.

-n : NFS(리눅스 공유 파일 시스템)의 사용량을 출력한다. 단 이 옵션은 리눅스 커널 2.6.17 이상부터 가능하다.

-h : -n 옵션과 동일한 결과를 보여주지만 -n 보다는 가독성이 더 좋게 출력된다.

-p [ device | ALL ] : 블록 디바이스와 시스템에서 사용되는 모든 파티션 정보를 출력한다. 디바이스 이름이 지정되면 해당 디바이스에서 사용하는 통계 정보를 제공한다. ALL을 붙여 사용하면 시스템에 정의된 모든 블록 디바이스와 파티션 정보를 한 번도 사용되지 않은 것도 포함하여 결과를 출력한다. 단 이 옵션은 리눅스 커널 2.5 이상부터 가능하다.
-x : 보다 확장 된 통계 정보를 출력한다. 단 이 옵션을 사용 할 땐 -n 과 -p 옵션을 같이 사용 할 수 없다.





사용법

# iostat

◆ 디스크의 기본정보를 출력



- %user : CPU자원이 사용자 모드에서 사용된 백분율을 의미 프로세스는 사용자 혹은 시스템 모드로 실행된다. 사용자 모드에서는 자신의 코드내에서만 운영되며 커널 자원을 필요하지 않는다.

- %system : 시스템 모드에서 사용된 CPU 자원의 백분율이다. 이는 커널 프로세스들(kprocs)과 커널 자원들을 사용하기 위한 다른 프로세스들이 사용한 CPU 자원을 포함한다.

- %user와 %system 합계가 80%(복수사용자 가정) 이상이면 CPU는 거의 작업을 하지 못한다고 할 수 있다.

- %idle : 자신의 디스크 입출력을 기다리지 않으면서,CPU가 놀고 있거나 혹은 기다리면서 소비한 CPU 시간의 백분율을 나타낸다.만일 실행 큐에 아무런 프로세스도 없다면,시스템은 "wait" 라 불리우는 특별한 커널 프로세스를 실행시킨다.

- %iowait : 지연된 자신의 디스크 입출력을 갖고 CPU가 놀고 있는 시간의 백분율 idle상태와는 디스크 입출력 대기라는 측면에서 다르다. 입출력이 완료되면 프로세스 실행 큐에 놓인다.
일반적으로 높은 iowait은 메모리 부족이나, 비효율적인 I/O부시스템이 구성되있다는 것을 나타낸다.

- iowait가 높을 경우 가능한 솔루션 특정한 디스크상에 놓인 활동적인 논리적 볼륨들과 파일의 수 제한 (파일 입출력 부하 균등 분산) 하나의 논리적 볼륨을 여러 디스크에 분산 (여러 개의 서로 다른 파일들이 사용되는 경우 매우 적절한 조치) 한 볼륨그룹에 대해 여러 개의 JFS(저널링 파일시스템) 로그들을 만들고, 이들을 특정한 파일 시스템들에게 할당

- tps : 초당 I/O

- Blk_read/s: 초당 읽은 블록

- Blk_wrtn/s : 초당 쓴 블록

- Blk_read : 읽은 블록

- Blk_wrtn : 사용한 블록



# iostat 5

5초마다 수집된 정보를 보여준다.



# iostat -x

보다 확장된 통계정보를 출력 (이 옵션을 사용할 땐 -n과 -p 옵션을 같이 사용할 수 없다)



rrqm/s : 디바이스 큐에 대기중인 초당 읽기 요청의 건수
wrqm/s : 디바이스 큐에 대기중인 초당 쓰기 요청의 건수
r/s : 디바이스에 요청한 초당 읽기 요청의 건수
w/s : 디바이스에 요청한 초당 쓰기 요청의 건수
rsec/s : 디바이스에서 초당 읽어들인 섹터의 갯수
wsec/s : 디바이스에서 초당 기록한 섹터의 갯수
avgrq-sz : 디바이스에 요청한 초당 평균 데이터의 크기
avgqu-sz : 디바이스에 요청한 초당 평균 큐 길이
await : 디바이스에서 처리되기 위해서 요청된 I/O 평균 시간(밀리초, 1/1000초). 큐에서 소요된 시간과 처리된 시간이 합쳐져 출력됨.
svctm : 디바이스에서 처리한 I/O 평균 시간 (밀리초, 1/1000초)
%util : 디바이스에서 요청한 I/O 작업을 수행하기 위해 사용한 CPU 시간 비율. 이 값이 100%에 가까워지면 디바이스가 한계에 도달했다고 보면 됨.



# iostat -td 1 -x /dev/sda

이렇게 각 디바이스별로 쪼개서 시간별로도 체크를 할수 있다.

여기서 read request, write request 를 합하여 초당 나눈것이 tps 입니다. 초당 io 요청을 얼마나 많이 했나를 알수 있다.

초당 얼마나 많은 i/o 요청을 하는가 : tps, r/s, w/s - 전체, read, write io request

초당 전송량 : r/w 전송양. -x 옵션이 없을때는 블락기준이며(Blk_read/s Blk_wrtn/s) 이를 byte 로 바꾸러면 512 byte 를 곱하면 된다. -x 옵션이 있으면 바이트로 나온다. (rkB/s, wkB/s )

r/w 비율 : i/o request, 전송량에서 read 와 write 비율을 보면 주로 읽기중심인지 쓰기중심인지 알 수 있을 것이다.



◆ 마무리

iostat 의 근본적인 목적은 디스크의 활용정도(%tm_act 필드)를 관측하여 입출력 병목을 찾아내는데 있다. 상시 시스템의 디스크 상태를 확인할수 없지만, 시스템의 딜레이현상이 발생하면, 보통 디스크쪽을 살펴보게 된다. 이때에 iostat를 이용하여, 디스크 사용량을 확인한다면 조금더 안정감있는 시스템 관리를 할수 있지 않을까 생각 된다.


반응형

'Linux' 카테고리의 다른 글

Linux ps  (0) 2018.08.08
Linux mpstat  (0) 2018.08.08
Linux 환경변수  (0) 2018.08.08
Linux vmstat  (0) 2018.08.08
Linux Install Software Menu  (0) 2018.08.08

+ Recent posts