vmstat 명령어
시스템의 리소스 상황(CPU, I/O, 메모리)을 모니터링 할 수 있는 명령어이다
사용법은
vmstat
를 치면 아래와 같이 나오고
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 0 160436 15840 48616 0 0 0 3 19 9 22 50 28 0 0
5초간 3번 Data를 수집 하고자 할때는
vmstat 5 3
와 같이 입력하면 된다.
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 160588 15840 48616 0 0 0 3 19 9 22 50 28 0 0
2 0 0 160640 15840 48616 0 0 0 0 3954 8133 17 17 66 0 0
0 0 0 161108 15840 48616 0 0 0 0 4028 7987 16 19 65 0 0
첫번째 값은 의미 없는 값 일듯(항상 높게나옴) 2번째 값부터 보면 된다.
각 필드가 나타내는 의미는 다음과 같다.
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: 커널이 아닌 프로세스의 시간 (user time, including nice time)
sy: 커널의 사용시간 (system time)
id: 아무런 일을 하지 않는 시간
wa: 입출력 대기 시간
st: 가상머신이 사용하는 시간
sy필드의 값이 지나치게 높으면 디스크 I/O에 문제가 있을 가능성이 크다.
그리고 시스템 전체의 부하가 높은데 id필드의 값이 일반적으로 10%를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 있다. I/O에 문제점이 있다는 것을 발견하면 iostat 등의 명령어를 추가로 사용하여 세부사항을 분석할 수 있다.
id필드의 값이 항상 0이라면 CPU를 100% 사용하고 있다는 것을 의미한다. 그러나 항상 100%로 사용하고 있다면 어떤 작업이 계속 축적되고 있으며 CPU가 과부하를 가진다는 것을 의미한다. 이 때는 top, ps, sar등의 명령어를 사용하여 CPU를 계속 사용하고 있는 프로세스를 찾아 적절하게 대응해야 한다.
CPU 전체사용률은
100-(user+sys+iowait) 로 보면 된다.
vmstat 에 날짜와 시간을 출력하고 싶으면
vmstat -n 5 | awk '{now=strftime("%F %T"); print now, " ", $0}'
와 같이 하면
2011-10-10 10:15:39 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
2011-10-10 10:15:39 r b swpd free buff cache si so bi bo in cs us sy id wa st
2011-10-10 10:15:39 0 0 0 160868 15840 48616 0 0 0 3 20 10 22 50 28 0 0
2011-10-10 10:15:44 1 0 0 160892 15840 48616 0 0 0 0 3984 8005 17 16 66 0 0
와 같은 형식으로 출력된다.
댓글 없음:
댓글 쓰기