Linux command - iostat

sycho·2023년 12월 16일
0

Linux Commands

목록 보기
7/30

iostat

  • documentation 여기서 설명하는 것 이상으로 유용한 command 및 lsof에서 출력하는 정보에 대한 내용이 써져 있으니 궁금하면 찾아보자.

  • CPU 및 각종 장치의 input/output 관련 통계를 모니터링 할 때 사용된다. 평균 transfer rate를 기반으로, 각 장치들이 input/output 처리를 위해 얼마나 작동하고 있는지를 판별하는데, 이 통계를 기반으로 각 장치들 사이의 input/output의 균형이 있을 수 있도록 시스템 구성을 바꾸는 등의 조치를 할 수가 있다.

  • sysstat이라는 package를 필요로 하며, 이게 없을 경우 Ubuntu 기준 밑 command 수행 필요.

$ sudo apt-get install sysstat

command

basic

  • 기본 command를 수행하면 2번째 부분처럼 출력이 나온다.
$ iostat
Linux 5.10.102.1-microsoft-standard-WSL2 (DESKTOP-4RPUOID)      12/16/23        _x86_64_        (12 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.06    0.00    0.00   99.90

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sda               0.86         0.02       436.75         0.00        225    4195192          0
sdb               0.68        18.01        25.19        22.18     173037     241940     213068
  • 먼저 CPU 관련 항목을 살펴보면

    • %user : user level에서 CPU가 사용되고 있는 비율
    • %nice : nice priority를 가진 user level에서 CPU가 사용되고 있는 비율
    • %system : kernel level에서 CPU가 사용되고 있는 비율
    • %iowait : I/O request로 인해 CPU가 idle 상태였던 비율
    • %steal : 이 OS에서 VM을 가동중이고, 해당 VM에서 virtual processor 가동을 하느라 뺐긴 CPU 비율
    • %idle : I/O request는 없었는데 그냥 CPU가 idle 상태였던 비율
  • 그 다음 밑의 장치 관련 항목을 보면

    • Device : /dev상에 있는, 장치 이름
    • tps : 해당 장치에서의 초당 평균 transfer 횟수
    • Kb_read/s : 초당 읽은 KB
    • Kb_wrtn/s : 초당 쓴 KB
    • Kb_dscd/s : 초당 discard(지워진) KB
    • kB_read : 읽은 KB
    • kB_wrtn : 쓴 KB
    • kB_dscd : discard (지워진) KB
  • 통계를 낼 때의 범위는 booting 시간 기준 이후 모든 것들에 대해서다...

  • 통계를 낼 때 다음 파일들도 활용한다.

    • /proc/stat : 시스템 관련 통계
    • /proc/uptime : 시스템 가동 시간
    • /proc/diskstats : 디스크 관련 통계
    • /sys : block 장치 관련 통계. block device란 block 단위로 데이터를 전달하는 장치로 보통 하드디스크 등이 해당.
    • /proc/self/mountstats : 네트워크 파일 시스템 관련 통계
    • /dev/disk : persistent device의 이름을 보유함. persistent device란 전원이 꺼져도 본인이 저장한 data가 유지되는 장치들을 일컫는 말이다.

-x

  • 장치와 관련된 좀 더 자세한 정보를 출력할 때 쓰인다. 밑처럼 쓰이며, 그 결과물은 밑에 존재
iostat -x

  • 장치 관련 항목만 뭐가 많이 추가되었는데 설명하자면
    • r/s, w/s, d/s, f/s : 초당 read, write, discard, flush 요청 횟수 (merge 전)
    • rkB/s, wkB/s, dkB/s : 초당 read, write, discard한 KB
    • rrqm/s, wrqm/s, drqm/s : block layer로 인해 merge된 read, write, discard request들의 개수. block layer merge란, block 단위로 read/write가 이루어지기에, 여러 operation이 동일한 block에 대해서 수행되려고 할 경우, 그 operation들을 전부 합하는 과정을 말한다. 효율성을 위한 method
    • %rrqm, %wrqm, %drqm : read,write,discard request들의 merge된 비중
    • r_await, w_await, d_await, f_await : read, write, discard, flush request 완료에 걸리는 평균 시간
    • rareq-sz, wareq-sz, dareq-sz : read, write, discard request workload의 평균 크기
    • aqu-sz : 평균 request queue 길이. 이게 클수록 많이 밀리고 있다고 생각하면 된다.
    • %util : device가 utilize된 비중

-c

  • CPU statistic만 보이게 해준다.
iostat -c

-d

  • 장치 관련 statistic만 보이게 해준다.
iostat -d

  • 특정 이름의 장치 관련 통계만 보는것도 가능하다. 밑의 경우 sda 장치에 관한 통계만 보게 된다.
iostat -d sda

-xd

  • -x + -d 라고 생각하면 된다.
iostat -xd

-k

  • 통계가 KB 단위로 나오도록 해준다. 기본이 byte 단위어서 그렇다고... 그런데 정작 내가 해볼 때는 기본 단위가 KB단위였다(?). 그래도 다른 곳에서는 아닐 수도 있으니 참고.
iostat -k

-m

  • 통계가 MB 단위로 나오도록 해준다.
iostat -m

-p

  • block device들에 대한 통계를 알려준다. 안의 partition들 까지 포함해서 통계를 알려준다. 이름을 일일이 입력해가지고 block deivce들만 출력하는 것을 방지해주는 option. 뒤에 이름까지 붙여가지고 특정 block device에 대한 통계만을 출력하는것도 가능하다.
iostat -p

-N

  • LVM (logical volume manager)에 대한 통계를 알려준다.
iostat -N

iostat with delay

  • 밑의 command의 경우 -k는 앞의 KB option이랑 동일한 역할을 한다. 중요한건 뒤의 숫자인데, 첫번째인 2는 2초마다를 의미하고, 두번재인 3은 3번을 의미한다. 즉 2초마다 3번, iostat을 수행하라는 것이다.
iostat -k 2 3
  • 앞에서 통계를 낼 때 기준이 booting 이후 전부라고 했는데, 위와 같이 여러번을 연속으로 실행하도록 command를 입력하면, 2번째 이후부터는 마지막 iostat 이후의 기간동안의 통계를 기반으로 결과를 낸다. 그래서 밑과 같은 결과가 나오게 된다.

  • -k option 뿐만 아니라 다른 option도 사용 가능. 밑의 경우 CPU 관련 정보를 2초마다 2번 출력한다. 범위 기준은 이전과 동일.

iostat -c 2 2

  • 밑은 sda 장치에 대해서만, 2초마다 3번 iostat을 출력한다.
iostat -d sda 2 3

profile
CS 학부생, 핵심 관심 분야 : Embed/System/Architecture/SWE

0개의 댓글