최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

vmstat 명령어

시스템의 리소스 상황(CPU, I/O, 메모리)을 모니터링 할 수 있는 명령어이다.  

 

 

명령행 "vmstat 3 5" 은 3초 간격으로 모니터링 정보를 5개 출력 하라는 것을 의미한다.
vmstat명령어 결과 중 첫 번째 라인은 부팅한 후부터 각 통계치에 대한 평균값을 보여주므로 무시하고 두 번째 줄부터 통계를 보면 된다.
각 필드가 나타내는 의미는 다음과 같다. 

proc 항목
     r: 현재 실행중인 프로세스의 수
     b: 인터럽트가 불가능한 sleep 상태에 있는 프로세스의 수 (I/O 처리를 하는 동안 블럭 처리된 프로세스)
     w: 강제로 스왑아웃된 프로세스

memory 항목
     swpd: 사용하고 있는 swap 메모리 양
     free: 사용가능한 메모리 양
     buff: 버퍼로 사용되고 있는 메모리 양
     cache: 캐시로 사용되고 있는 메모리 양

swap 항목
     si : swap in
     so: swap out

io 항목
     bi: 초당 블럭 디바이스로 보내는 블럭 수 
     bo: 초당 블럭 디바이스로부터 받은 블럭 수 

system 항목
     in: 초당 인터럽트 되는 양
     cs: 초당 context switch되는 양

cpu 항목
     us: 사용자의 CPU 사용 시간 비율
     sy: 시스템의 CPU 사용 시간 비율
     id: idle

스왑아웃이 지속적으로 발생한다면 메모리가 부족한 것이다. w필드의 값이 증가하면 메모리가 부족하다는 의미이므로 메모리를 늘려야한다. so필드(swap out)는 0에 가까워야 한다. 평소에 swpd필드의 값이 높다고 해도 free 메모리에 여유가 있다면 메모리가 부족한 것이 아니다. 

sy필드의 값이 지나치게 높으면 디스크 I/O에 문제가 있을 가능성이 크다. 
그리고 시스템 전체의 부하가 높은데 id필드의 값이 일반적으로 10%를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 있다. I/O에 문제점이 있다는 것을 발견하면 iostat 등의 명령어를 추가로 사용하여 세부사항을 분석할 수 있다.

id필드의 값이 항상 0이라면 CPU를 100% 사용하고 있다는 것을 의미한다. 그러나 항상 100%로 사용하고 있다면 어떤 작업이 계속 축적되고 있으며 CPU가 과부하를 가진다는 것을 의미한다. 이 때는 top, ps, sar등의 명령어를 사용하여 CPU를 계속 사용하고 있는 프로세스를 찾아 적절하게 대응해야 한다.
  
참고: 리눅스 시스템 최적화 튜닝 - 문태준 (워드문서, 구글검색)


http://tong.nate.com/srirama/11091898

 

댓글