[vmstat]

- Linux/Unix 기반 OS에서 시스템의 전반적인 성능을 모니터링하기 위해 사용되는 명령어
- process, memory, Swap(paging), block IO, trap, disk, cpu activity 에 대한 통계를 보고한다.
- VM 이라고해서 Virtual Machine 을 생각했지만, virtual memory 이며 물리서버 및 가상서버 (리눅스, 유닉스) 모두에서 사용할 수 있는 커맨드다.

 

[기본 사용 옵션]

vmstat [options] [delay [count]]

ex)
$ vmstat 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
 2  0 350464 521556     48 819884    0    1     5     8   77   32  1  1 98  0  0
 0  0 350464 521360     48 819884    0    0     0     0  238  435  1  2 98  0  0
 0  0 350464 521464     48 819892    0    0     0     0  243  452  1  2 97  0  0
 0  0 350464 521464     48 819892    0    0     0     0  193  385  1  1 99  0  0
 0  0 350464 521508     48 819876    0    0     0     0  295  517  2  5 94  0  0

 

[동작방식]

첫번째 라인 출력 
- 시스템 부팅 이후의 평균 통계를 보여준다.

추가 라인 출력

- delay (샘플링 주기) 동안 수집되는 데이터를 기반으로 출력한다.

ex. 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

 

procs 
- 실행가능한 프로세스의 갯수 (런타임 동안 waiting 이거나 running 인 프로세스 포함) 
- 주로 CPU 부하 확인 시 용이
- 값이 높으면 CPU 부하 의심

b
- I/O 작업이 완료되기를 기다리는 프로세스의 개수(Block 당한 프로세스)

- 주로 Disk I/O 또는 네트워크 작업 등으로 인해 대기 중인 프로세스들
- 값이 높으면 I/O 리소스에 대한 프로세스간 경쟁이 심함 의심

memory
swpd
- swap memory로 사용 중인 가상 메모리의 amount


free 
- 현재 사용 가능한 여유 메모리의 amount


buff
- buffer 로 사용 중인 메모리의 amount
- 주로 Filesystem 메타데이터와 관련된 I/O 작업을 위해 Kernel 이 사용하는 영역


cache
- page cache 로 사용 중인 메모리의 amount
- 파일 I/O 성능의 향상을 위해 Kernel 이 사용하는 영역으로, 필요 시에는 다른 프로세스가 사용 가능함


inact ( -a
-  비활성상태인 메모리의 amount
-  이전에 사용되었지만 현재는 사용되지 않는 영역, 필요 시에는 다른 용도로 재사용 가능함

active ( -a )
-  현재 활발하게 활성상태인 메모리의 amount
-  자주 접근되는 데이터가 저장되는 영역이며, 옵션으로 -a 를 사용할 때만 출력된다
swap  si
- 초당 (/s) 디스크에서 메모리로 Swapped IN 된 메모리의 amount 
- 높은 경우 Swap space 에서 데이터를 자주 읽어오고 있다는 뜻


so
- 초당 (/s) 메모리에서 디스크로 Swapped OUT 된 메모리의 amount

- Physical memory 가 부족하여 일부 데이터를 디스크의 Swap Space를 빌려 쓰기 위해 이동시키는 것을 뜻함
- 높은 경우 시스템의 Physical memory 가 부족하여 자주 Swapping 을 하고 있음을 뜻함
io bi
- 초당 (/s)  Block 디바이스로부터 받은 블록의 수
- 디스크에서 메모리로 쓰여진 데이터의 amount 를 뜻함
- 파일을 읽거나 메모리에 mapping 할 때, 값이 증가할 수 있음

bo
- 초당 (/s) Block 디바이스로 보낸 블록의 수
- 메모리에서 디스크로 쓰여진 데이터의 amount 를 뜻함

- 파일을 쓰거나 데이터를 디스크에 저장할 때, 값이 증가할 수 있음

*Block Device 란?
- 주로 HDD, SSD, CD-ROM 등과 같은 '저장 장치' 를 뜻한다.
- 저장 장치들은 데이터를 고정된 크기의 Block 단위로 Read, Write 하며 일반적으로 512byte 또는 4096byte 크기의 Block을 사용한다.
system in
- 초당 (/s) 발생한 interrupt 의 수   

cs
- 초당 (/s) 발생한 Context Switch 의 수
- Context Switch 는 CPU 가 한 프로세스에서 다른 프로세스로 전환될 때 발생한다.
     ex.1 프로세스의 시간 할당량이 만료되었을 때 발생
     ex.2 더 높은 prority 를 가진 프로세스가 실행 준비 상태가 되었을 때 발생

     ex.3 프로세스가 I/O 작업을 기다리며 자발적으로 CPU를 양보할 때 발생
cpu us
- 커널 코드를 제외한 코드를 실행하는 데 소요된 시간 (User TIme)
- 사용자 프로세스 실행 시간과 nice 값이 조종된 프로세스의 실행 시간을 포함한다.


sy
- 커널 코드를 실행하는 데 소요된 시간 (System TIme)

- 시스템 Call 처리나 Interrupt 서비스 등 Kernel 작업에 사용된 시간

id 
- CPU 가 Idle 상태로 있었던 시간 (Idle TIme)


wa
- I/O 작업이 완료되기를 기다리는 데 소요된 시간


st
- 가상화환경에서 하이퍼바이저에 의해 다른 가상 머신에 할당된 시간

 




 


 

 

 

계속 까먹네;