Linux command - vmstat

sycho·2023년 12월 16일
0

Linux Commands

목록 보기
9/30

vmstat

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

  • virtual memory statsitc reporter의 약자다. memory, paging, process, I/O, CPU, disk와 관련된 통계를 알려주는 command다.

  • iostat이랑 비슷하게, 맨 처음 report부분은 마지막 reboot 이후 현재까지의 통계에 대한 평균을 먼저 보여준다. 이후에는 마지막 측정과 현재 시간 사이의 통계에 대해 보여준다.

  • sysstat을 필요로 한다. Ubuntu에서는 밑과 같이 해서 설치

$ sudo apt-get install sysstat

basics

  • syntax는 다음과 같다.
vmstat [options][delay [count]]
  • delay는 측정 사이사이의 간격을 말한다. delay가 없는 경우, 1번만, 아까 말한 재부팅 이후 현재까지의 통계의 평균 딱 보여주고 종료된다.

  • count는 몇번을 이 간격으로 측정할지에 대해서다. delay가 있는데 count가 없으면 count는 '무한'으로 취급한다. 즉 계속 측정을 해당 주기로 한다.

  • 완전 기본형으로 실행되면 다음과 같다.

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 15144696  14896 643608    0    0     3     2    3   26  0  0 100  0  0
  • 각 column에 대해 설명하자면
    • procs : process에 관한 정보가 들어 있다.
      • r : runnable process 개수
      • b : I/O 완료될때까지 기다리느라 block된 process 개수
    • memory : memory에 관한 정보가 들어 있다.
      • swpd : 사용중인 swap memory 용량
      • free : 여유 메모리 용량
      • buff : buffer로 쓰이는 메모리 용량
      • cache : cache로 쓰이는 메모리 용량
    • swap : swap memory에 관한 정보
      • si : 초당 disk에서 memory로 이동한 page 용량
      • so : 초당 memory에서 disk로 이동한 page 용량
    • IO : IO 관련 정보
      • bi : 초당 block device에서 받은 KB 양
      • bo : 초당 block devicㄷ에다가 작성한 KB 양
    • system : 시스템 관련 정보
      • in : 초당 interrupt 횟수. clock으로 인한 interrupt 포함이다.
      • cs : 초당 context switch 횟수
    • CPU : CPU 관련 정보. 전부 % 단위다.
      • us : user mode로 사용된 CPU 비중
      • sy : kerenel mode로 사용된 CPU 비중
      • id : 아무것도 안한 CPU 비중
      • wa : IO 기다리는데 소모된 CPU 비중
      • st : hypervisor로서 본인이 운용중인 guest OS에게 제공된 CPU 비중
      • gu : KVM guest code 수행하는데 소모된 cpu 비중. VM의 kernel로서 소모된 CPU 비중이라고 생각하면 된다. 한마디로 guest OS가 사용한 cpu다. nice priority가 부여된 guest OS도 포함된다.

options

-a

  • buff/cache 대신 active/inactive memory column이 추가된다. 2.5.41 kernel 이후에서만 작동한다.
$ vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 15148116 656360 171992    0    0     3     2    3   26  0  0 100  0  0
  • active는 process에서 최근에 접근해가지고 활용되고 있다고 표기되는 memory를 의미하고, inactive는 process에서 접근을 오랬동안 하지 않아 활용되고 있지 않다고 표기된 memory들을 의미한다.

-f

  • boot 이후 fork를 몇번 했는지 확인할 때 쓰인다.
$ vmstat -f
         3455 forks

-m

  • slab 관련 정보를 보여준다. 권한이 필요할 수 있다. 다만 kernel version에 따라 작동이 안되기도 한다.
$ sudo vmstat -m
vmstat: your kernel does not support slabinfo or your permissions are insufficient

-s

  • 여러 event 관련 counter들과 memory 관련 통계를 보여준다. 한번만 나온다.
$ vmstat -s
     16342160 K total memory
       534960 K used memory
       172124 K active memory
       657060 K inactive memory
     15148292 K free memory
        15216 K buffer memory
       643692 K swap cache
      4194304 K total swap
            0 K used swap
      4194304 K free swap
         2989 non-nice user cpu ticks
            0 nice user cpu ticks
         2268 system cpu ticks
     12288349 idle cpu ticks
          482 IO-wait cpu ticks
            0 IRQ cpu ticks
          236 softirq cpu ticks
            0 stolen cpu ticks
       304618 pages paged in
       221384 pages paged out
            0 pages swapped in
            0 pages swapped out
       319445 interrupts
      3168684 CPU context switches
   1702722641 boot time
         3467 forks
  • 여기서 boot time은 마지막으로 boot가 '이루어진' 시간을 의미한다. 기준은 Unix epoch (1970년 1월 1일 00:00:00 UTC). IRQ는 interrupt request로 IRQ cpu tick은 거기에 소모된 cpu tick 개수를 말한다. 나머지는 다 알 것이라고 생각하나, 모르겠으면 이전의 모니터링 관련 linux command 글들을 읽어 오는것을 추천한다.

-d

  • 디스크 관련 정보 출력에 활용된다. kernel version이 2.5.70 이상이어야만 작동한다.
$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sda     1116    403  148226     259      0      0       0       0      0      0
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sdb      102      0    4456      10      2      0       8       2      0      0
sdc     5638   1678  456426    1594   6164   6276  443600   16245      0     12
  • 각 column에 대해 설명하자면
    • reads/writes
      • total : 성공적으로 완료된 총 read/write
      • merged : grouped된 read/write 개수 (하나의 I/O에 해당)
      • sectors : 성공적으로 read/write 완료된 sector 개수
      • ms : read/write에 소모된 시간
    • IO
      • cur : 현재 진행중인 I/O
      • sec : I/O에 소모된 시간들 (단위 : 초)
  • ram은 RAM disk를 말하며, loop는 loopback device를 말한다. sd들은 우리가 흔히 알고 있는 그 disk가 맞다.

-t

  • 특정 주기로, 특정 횟수만큼 report를 보여주라는 뜻. 밑은 2초 주기로 다섯번으로 보여준다.
$ vmstat -t 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 KST
 0  0      0 15148896  15304 643708    0    0     2     2    3   26  0  0 100  0  0 2023-12-16 22:30:04
 0  0      0 15148896  15304 643708    0    0     0    94   14  273  0  0 100  0  0 2023-12-16 22:30:06
 0  0      0 15148896  15312 643708    0    0     0    18   15  274  0  0 100  0  0 2023-12-16 22:30:08
 0  0      0 15148896  15312 643708    0    0     0     0   11  263  0  0 100  0  0 2023-12-16 22:30:10
 0  0      0 15148896  15312 643708    0    0     0     0   12  266  0  0 100  0  0 2023-12-16 22:30:12
  • 여러번 출력하는것이 가능한 option이랑 활용 가능
 $ vmstat -at 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st                 KST
 0  0      0 15147628 656304 172268    0    0     2     2    3   26  0  0 100  0  0 2023-12-16 22:31:16
 0  0      0 15147628 656564 172268    0    0     0     0   12  270  0  0 100  0  0 2023-12-16 22:31:18
 0  0      0 15147628 656564 172268    0    0     0     0   10  259  0  0 100  0  0 2023-12-16 22:31:20
 0  0      0 15147376 656628 172276    0    0     0    12   15  274  0  0 100  0  0 2023-12-16 22:31:22
 0  0      0 15147376 656628 172276    0    0     0     0   11  262  0  0 100  0  0 2023-12-16 22:31:24

-S

  • unit을 바꿀 때 사용이 된다.

  • 밑의 M은, 기본 출력을 하되, MB 단위로 이를 출력하겠다는 것을 의미.

$ vmstat -S M 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  14791     15    628    0    0     2     2    3   26  0  0 100  0  0
 0  0      0  14791     15    628    0    0     0     0   11  260  0  0 100  0  0
 0  0      0  14791     15    628    0    0     0    14   14  272  0  0 100  0  0
 0  0      0  14791     15    628    0    0     0     0   11  262  0  0 100  0  0
 0  0      0  14791     15    628    0    0     0     0   11  266  0  0 100  0  0
  • k (1000bytes), K (1024bytes), m (1000000bytes), M (1048576) bytes 단위가 가능하다. si/so랑 bi/bo의 경우 이거랑 관련이 없다는 점 유의.

-n

  • header이 한번만 나온다. 앞의 -d option의 경우 header이 여러번 나온걸 볼 수 있을 것이다. 특정 줄 이상이면 여러번 나오는 것인데, 이러지 않도록 설정하는 것이다.
~$ vmstat -dn
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sda     1116    403  148226     259      0      0       0       0      0      0
sdb      102      0    4456      10      2      0       8       2      0      0
sdc     5638   1678  456426    1594   6513   6359  447528   16573      0     12
profile
CS 학부생, 핵심 관심 분야 : Embed/System/Architecture/SWE

0개의 댓글