iostat - man page & practices

CPU나 각종 입출력 장치, 파티션들에 대한 통계치를 제공해주는 명령어

Synopsis

iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]

[ --dec={ 0 | 1 | 2 } ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -o JSON ] [ [ -H ] -g group_name ]

[ -p [ device [,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count ] ]

Description

iostat은 시스템의 입출력 장치들이 활성화된 시간을 기반으로 해당 장치들을 모니터링하기 위해 사용한다.

일반적으로 물리 디스크 간에 부하를 더 밸런싱시키기 위해 시스템 설정값을 변경할 때 참조한다.

명령어를 실행시켰을 때 처음에 보여주는 리포트의 경우에는 시스템이 부트된 이후로부터의 시간에 대한 통계치들을 제공해준다.

해당 리포트는 CPU 부하에 대한 통계치와(top 과 유사) 헤더 등을 담고 있으며, 멀티프로세서일 경우 모든 프로세서들에 대한 평균값으로 출력된다.

추가적으로 interval 값을 지정해줄 수도 있는데, 이 경우 해당 interval(sec)마다 리포트를 갱신하여 보여준다.

앞서 언급한 시스템 부팅 이후로의 통계치와 관한 첫 리포트를 출력한 뒤, interval 마다 출력되는 리포트의 경우에는 이전 리포트부터 지금까지 수집된 메트릭들에 대한 통계 정보들을 담고 있다.

count 값이 같이 제공될 경우에는 인터벌 리포트가 출력되는 횟수를 제한하며, 만약 인터벌 값만 주어질 경우 사용자가 종료하기 전까지 계속 실행된다.

iostat은 /proc 에서 제공되는 값들을 가지고 리포트를 제공하기 때문에, /proc 파일시스템이 반드시 마운트 되어있어야 하며, 커널 2.5 버전 이후에서 동작한다.

시스템의 uptime은 /proc/uptime에, 통계치는 /proc/stat, 디스크에 관련된 통계치는 /proc/diskstats 등의 파일에 존재한다.

Options

  • -c
    CPU 통계치 제공

  • -d
    디바이스 통계치 제공

  • -h, --human
    리포트를 human readable하게 변환

  • -k
    리포트를 KB 단위로 출력, 기본값

  • -m
    리포트를 MB 단위로 출력

  • -y
    interval 제공시 초기 리포트 출력하지 않음

  • -p [ { device [...] | ALL } ]
    디바이스명이 제공될 경우, 해당 장치와 모든 파티션들에 대한 통계치 제공. -p 옵션이 없이 디바이스명을 넣을 경우 그 장치의 파티션들에 대한 리포트는 제공되지 않는다는 점에서 차이. ALL의 경우 시스템의 모든 파티션을 출력.

  • -o JSON
    리포트를 json 형식으로 제공

  • -t
    레포트에 현재 시각을 같이 출력, 타임스탬프 포맷은 ISO 8601(YYYY-MM-DD)

  • -y
    interval 제공시 초기 리포트 출력하지 않음

  • -z
    interval 제공시 해당 구간 동안 활동이 없던 디바이스의 경우 리포트에서 제외

  • -x
    더 많은 통계치 정보 제공

Examples

# nvme0n1 디바이스에 대해 첫 리포트 출력 후 1초 주기로 리포트 무한 제공, 타임스탬프도 같이 출력
bconfiden2@h01:~$ iostat -d -t 1 nvme0n1
Linux 5.13.0-41-generic (h01) 	05/24/2022 	_x86_64_	(12 CPU)

05/24/2022 04:24:59 PM
Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1          27.00       472.26       482.94         0.00    2335708    2388537          0


Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1           0.00         0.00         0.00         0.00          0          0          0


Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
nvme0n1           0.00         0.00         0.00         0.00          0          0          0
# sda 디바이스와 그 파티션들에 대해 MB 단위로 리포트 출력, cpu 통계도 같이 출력
bconfiden2@h01:~$ iostat -cdm -p sda
Linux 5.13.0-41-generic (h01) 	05/24/2022 	_x86_64_	(12 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.70    0.02    2.04    0.02    0.00   90.21

Device             tps    MB_read/s    MB_wrtn/s    MB_dscd/s    MB_read    MB_wrtn    MB_dscd
sda               0.05         0.00         0.00         0.00          7          0          0
sda1              0.02         0.00         0.00         0.00          4          0          0
# nvme0n1 디바이스와 파티션들에 대해, 1초 주기로 총 2번의 확장된 리포트 출력, 초기 리포트는 출력하지 않음
bconfiden2@h01:~$ iostat -xy -p nvme0n1 -d 1 2
Linux 5.13.0-41-generic (h01) 	05/24/2022 	_x86_64_	(12 CPU)


Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00   58.00  16752.00    37.00  38.95    0.53   288.83    0.00      0.00     0.00   0.00    0.00     0.00    0.03   0.80
nvme0n1p1        0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
nvme0n1p2        0.00      0.00     0.00   0.00    0.00     0.00   58.00  16752.00    37.00  38.95    0.53   288.83    0.00      0.00     0.00   0.00    0.00     0.00    0.03   0.80


Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
nvme0n1          0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
nvme0n1p1        0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
nvme0n1p2        0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
# JSON 형식으로 결과 출력
bconfiden2@h01:~$ iostat -o JSON
{"sysstat": {
	"hosts": [
		{
			"nodename": "h01",
			"sysname": "Linux",
			"release": "5.13.0-41-generic",
			"machine": "x86_64",
			"number-of-cpus": 12,
			"date": "05/24/2022",
			"statistics": [
				{
					"avg-cpu":  {"user": 7.67, "nice": 0.02, "system": 2.03, "iowait": 0.02, "steal": 0.00, "idle": 90.25},
					"disk": [
						{"disk_device": "loop0", "tps": 0.00, "kB_read/s": 0.00, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 17, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop1", "tps": 0.01, "kB_read/s": 0.20, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1071, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop10", "tps": 0.01, "kB_read/s": 0.21, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1124, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop11", "tps": 0.01, "kB_read/s": 0.07, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 361, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop12", "tps": 0.01, "kB_read/s": 0.20, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1084, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop13", "tps": 0.01, "kB_read/s": 0.06, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 348, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop14", "tps": 0.08, "kB_read/s": 0.99, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 5317, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop15", "tps": 0.01, "kB_read/s": 0.07, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 351, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop16", "tps": 0.14, "kB_read/s": 1.50, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 8045, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop17", "tps": 0.01, "kB_read/s": 0.20, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1073, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop18", "tps": 0.11, "kB_read/s": 3.71, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 19947, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop19", "tps": 0.00, "kB_read/s": 0.00, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 14, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop2", "tps": 0.27, "kB_read/s": 2.36, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 12679, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop3", "tps": 0.20, "kB_read/s": 7.29, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 39148, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop4", "tps": 0.01, "kB_read/s": 0.21, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1141, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop5", "tps": 0.01, "kB_read/s": 0.20, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1082, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop6", "tps": 0.01, "kB_read/s": 0.20, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 1085, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop7", "tps": 0.01, "kB_read/s": 0.07, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 350, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop8", "tps": 0.70, "kB_read/s": 1.84, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 9910, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "loop9", "tps": 0.01, "kB_read/s": 0.07, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 358, "kB_wrtn": 0, "kB_dscd": 0},
						{"disk_device": "nvme0n1", "tps": 26.02, "kB_read/s": 472.58, "kB_wrtn/s": 520.16, "kB_dscd/s": 0.00, "kB_read": 2539260, "kB_wrtn": 2794933, "kB_dscd": 0},
						{"disk_device": "sda", "tps": 0.05, "kB_read/s": 1.36, "kB_wrtn/s": 0.00, "kB_dscd/s": 0.00, "kB_read": 7327, "kB_wrtn": 0, "kB_dscd": 0}
					]
				}
			]
		}
	]
}}