티스토리 뷰

컴퓨터/프로그래밍/OS

vmstat 명령어

Rough Existence 2009. 8. 26. 14:26


vmstat 명령어 : 프로세스, 메모리, 페이징, I/O 블럭, CPU 활동 사항들의 정보를 출력하는 기능을 합니다. vmstat에서 중요한 것은 procs 영역의 b 필드입니다.b의 수치가 높은 경우 i/o 작업을 위해 cpu가 계속 대기 상태로 있는 경우로서 이런 경우에는 디스크i/o 문제를 확인해 볼 필요가 있습니다. 또한 스왑아웃(so)이 지속적으로 발생한다면 메모리가 부족한 것입니다. 하지만 일정간격으로 스왑아웃이 발생되는 것은 정상적이며,
스왑아웃(so)필드는 항상 0에 가까워야 합니다.
옵션
vmstat [-a] [-n] [delay [ count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-p disk partition]
vmstat [-V]
사용형식

-V
procps 버전을 표시해 줍니다.

-n [delay [ count]] (default option)
(‘delay’ 간격으로 ‘count’횟수 만큼)
vm 헤더를 표시해 줍니다.(예제는 2초 간격으로 4번 출력)
[ Procs ]
r: CPU 접근 대기 중인 실행 가능한 프로세스의 수
b: I/O 자원을 할당 받지 못해 블록 된 프로세스의 수
[ Memory ]
swpd: 사용된 가상 메모리의 용량
free: 사용 가능한 여유 메모리의 용량
buff: 버퍼에 사용된 메모리의 용량
cache: 페이지 캐시에 사용된 메모리의 용량
[ Swap ]
si: (/s). swapped in 된 memory 의 양 (kB)
so: (/s). swapped out 된 memory 의 양 (kB)
swap-in: 주 기억 장치에서 어떤 작업을 실행하고 있는 동안 그 작업 보다 순위가 높은 작업수행이 필요하여 끼어들기 형태로 일을 해야 할 때 이미 실행 중인 프로그램과 데이터를 일시적으로 보조기억 장치에 옮기는 것
swap-out: 작업 종료 후 보조기억 장치에서 주 기억 장치로 다시 프로그램과 데이터를 옮기는 것
스 왑아웃이 지속적으로 발생한다면 메모리가 부족한 것입니다. w필드의 값이 증가하면 메모리가 부족하다는 의미이므로 메모리를 늘려야 합니다. so필드(swap out)는 0에 가까워야 하며, 평소에 swpd필드의 값이 높다고 해도 free 메모리에 여유가 있다면 메모리가 부족한 것이 아니라고 판단할 수 있습니다.
[ IO ]
bi: block device 에 보낸 blocks (blocks/s)
bo: block device 로 부터 받은 blocks (blocks/s)
[ System ]
in: 초당 발생한 interrupts 의 수
cs: 초당 발행한 context switches (문맥 교환) 의 수
[ CPU ]
us: CPU가 사용자 수준 코드를 실행한 시간(단위 : %) 사용자에 의해 사용된 시간 (이 수치가 높다면 계산을 많이 하는 것으로 생각하시면 됩니다.)
sy: CPU가 시스템 수준 코드를 실행한 시간(단위 : %) 시스템에 의해 사용된 시간 (이 수치가 높으면 프로세스들이 많은 시스템 호출을 하거나 I/O 가 많이 일어난다고 생각하시면 됩니다 )
id: CPU가 아무런 작업을 수행하지 않은 시간(단위 : %) 휴지 시간
wa: 입출력 대기 시간
sy필드의 값이 지나치게 높으면 디스크 I/O에 문제가 있을 가능성이 높습니다.
그 리고 시스템 전체의 부하가 높은데 id필드의 값이 일반적으로 10%를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 있습니다. I/O에 문제점이 있다는 것을 발견하면 iostat 등의 명령어를 추가로 사용하여 세부사항을 분석할 수 있습니다.
id 필드의 값이 항상 0이라면 CPU를 100% 사용하고 있다는 것을 의미하나, 항상 100%로 사용하고 있다면 어떤 작업이 계속 축적되고 있으며 CPU가 과부하를 가진다는 것을 의미합니다. 이 때는 top, ps, sar등의 명령어를 사용하여 CPU를 계속 사용하고 있는 프로세스를 찾아 적절하게 대응해야 합니다.

-a
활성화/비활성화 메모리를 표시해 줍니다.
[ Memory ]
inact: (-a option) 사용되지 않는 메모리의 용량
active: (-a option) 사용중인 메모리의 용량

-d
디스크 통계를 표시해 줍니다.
Reads
total: 성공적으로 완료된 입력
merged: grouped reads (I/O 결과)
sectors: 성공적으로 입력된 섹터
ms: 입력에 걸린 시간(단위 : milliseconds)
Writes
total: 성공적으로 완료된 출력
merged: grouped writes (I/O 결과)
sectors: 성공적으로 입력된 섹터
ms: 출력에 걸린 시간(단위 : milliseconds)
IO
cur: I/O의 진행
s: I/O에 걸린 시간

-D
디스크 테이블을 표시해 줍니다.

-p [파티션]
해당 파티션에 대한 자세한 내용을 표시해 줍니다.
reads: 파티션에 입력된 수
read sectors: 파티션에 입력된 섹터
writes : 파티션에 출력된 수
requested writes: 파티션에 요청된 출력 수

-s
시스템 부팅 이후 현재까지 이벤트를 표시해 줍니다.

중략..

-m
slabinfo에 대하여 표시해 줍니다.
cache: Cache name
num: 현재 활성화된 개체 수
total: 사용중인 총 개체 수
size: 각 개체의 크기
pages: 적어도 하나의 활성화된 개체가 포함된 페이지 수
totpages: 할당된 페이지의 총 수
pslab: slab당 페이지 수

-S [k, K, m, M]
페이징 내용에 si so 추가 출력해서 설정 단위(k, K, m, M)로 표시해 줍니다.
1000, 1024, 1000000, or 1048576 bytes

-f
시스템 시작 이래 분기 실행의 수를 표시해 줍니다.