Linux useful tool - vmstat

vmstat(virtual memory statistics)는 리눅스 프로세서의 메모리, disk, cpu performance 모니터링 도구입니다.
※ 중요 : vmstat의 처음 결과는 부팅 이후 평균수치 입니다. 이후의 결과는 일정 샘플링 기간 동안의 결과 값 입니다.

사용 방법

 $ vmstat [options] [delay [count]]

세부 옵션은 아래와 같습니다.
Options:
 -a, --active           active/inactive memory
 -f, --forks            number of forks since boot
 -m, --slabs            slabinfo
 -n, --one-header       do not redisplay header
 -s, --stats            event counter statistics
 -d, --disk             disk statistics
 -D, --disk-sum         summarize disk statistics
 -p, --partition <dev>  partition specific statistics
 -S, --unit <char>      define display unit
 -w, --wide             wide output
 -t, --timestamp        show timestamp

 -h, --help     display this help and exit
 -V, --version  output version information and exit

delay : delay를 입력하지 않으면 부팅 이후 평균 값이 출력됩니다. delay를 입력하게 되면 vmstat의 결과가 반복적으로 출력되는데, 첫 번째 결과는 부팅 이후 평균 값이며 두번째 결과 부터는 delay를 입력한 사이의 결과 값 입니다.

e.g. delay를 입력하지 않았을 때
-bash-4.2$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 9  0 2568028 4517948 521380 17599556    0    0    38   115    0    0 11  0 88  1
이 때의 결과는 부팅 이후의 총 평균 입니다.


e.g.2 delay가 3인 경우
-bash-4.2$ vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 9  0 2568028 4299568 521420 17605440    0    0    38   115    0    0 11  0 88  1
 8  0 2568028 3854400 521452 17608780    0    0    48  5475 8373 1243 39  1 60  0
 8  0 2568028 3942488 521524 17620684    0    0    81  4769 8414 1536 39  1 60  0
 8  0 2568028 3994148 521628 17636656    0    0   403    11 8455 1858 39  1 60  0
 8  0 2568028 3784628 521692 17641060    0    0   112  5695 8368 1964 38  2 60  0
 8  0 2568028 3097964 521712 17641476    0    0   177    16 8230  932 39  1 60  0
이 때의 첫 번째 나온 결과는 부팅 이후의 총 평균이며, 이후 결과는 입력한 delay인 3초 동안의 샘플링 결과입니다.

count : 결과를 몇 번 출력할 지 입력하는 값 입니다. 입력하지 않으면 프로그램이 종료될 때 까지 출력됩니다.

e.g. count가 2인 경우
-bash-4.2$ vmstat 3 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 9  0 2568024 3866768 530488 18397436    0    0    38   115    0    0 11  0 88  1
 8  0 2568024 3833196 530556 18366220    0    0   172     9 8416 2398 38  1 60  1
-bash-4.2$
options
참고
-bash-4.2$ man vmstat

 -a : active/inactive 메모리를 볼 수 있습니다.
 -f : 부팅 후 fork 된 수를 표시합니다.
 -m : slab 정보를 표시합니다.
 -n : 헤더 정보가 한번만 표시됩니다.
 *헤더 :  procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 -s : 다양한 이벤트 카운터들이 표시됩니다.
 -d : disk 통계가 표시됩니다.
 -D : disk 통계까 요약 표시됩니다.
 -p : 지정된 파티션정보가 표시됩니다.
 -S : 표시 단위를 변경합니다.
 * 1000 (k), 1024 (K), 1000000 (m), 1048576 (M) bytes.

결과 분석

procs(프로세스)
  • r(run queue) : 실행 가능한(runnable) 프로세서 수 (실행하기 위해 기다리고 있는 것)
  • b(blocked queue) : block되어 sleep상태로 실행을 기다리는 상태의 프로세서 수 (파일시스템의 i/o blocked, inode lock등)
memory
  • swpd : 가상 메모리(virtual memory) 사용량
  • free : idle 메모리
  • buff : 사용된 메모리
  • cache : cache로 사용된 메모리
  • inact : 비활성화 메모리 (-a 옵션)
  • active : 활성화 메모리 (-a 옵션)
swap
  • si : disk -> 메모리 스왑량 (단위 : /s)
  • so : 메모리 -> disk 스왑량 (단위 : /s)
io
  • bi : 장치에서 받아오는 블록 (단위 : blocks/s)
  • bo : 장치로 보내는 블록 (단위 : blocks/s)
system
  • in : 초당 인터럽트 수(clcok 포함)
  • cs : 초당 context 교환 수
cpu
 * 이 항목은 퍼센트(%) 기준으로 측정됩니다.
  • us : 비커널 코드에서 소비된 시간(user time)
  • sy : 커널 코드에서 소비된 시간(system time)
  • id : idle 된 시간
  • wa : 입출력 대기 시간
  • st : Virtual machine에서 뺏은 시간

댓글