vmstat(Virtual Memory Statistics)은 유닉스 및 유닉스 계열 운영 체제(리눅스, FreeBSD, Solaris, AIX 등)에서 시스템의 가상 메모리, 프로세스, CPU 활동, 디스크 I/O, 페이징, 블록 입출력, 인터럽트, 문맥 교환 등의 통계 정보를 실시간으로 모니터링하거나 보고하는 명령어 라인 유틸리티이다.
주요 기능 및 출력 항목
표준 구현에서 vmstat은 일반적으로 다음과 같은 주요 카테고리의 데이터를 주기적 간격으로 출력한다.
- Procs (프로세스): 실행 대기 중인 프로세스 수(
r), 중단 상태(주로 I/O 대기)인 프로세스 수(b). - Memory (메모리): 스왑 공간 사용량(
swpd), 여유 메모리(free), 버퍼 캐시용 메모리(buff), 페이지 캐시용 메모리(cache), 비활성 메모리(inact), 활성 메모리(active) 등. - Swap (스왑): 디스크에서 메모리로 스왑 인된 양(
si), 메모리에서 디스크로 스왑 아웃된 양(so). - IO (입출력): 블록 장치로부터 읽은 블록 수(
bi), 블록 장치로 쓴 블록 수(bo). - System (시스템): 초당 인터럽트 발생 횟수(
in), 초당 문맥 교환 횟수(cs). - CPU (중앙처리장치): 사용자 모드 실행 시간 비율(
us), 시스템(커널) 모드 실행 시간 비율(sy), 유휴 시간 비율(id), I/O 대기 시간 비율(wa), 스틸 시간 비율(st- 가상화 환경에서) 등.
사용 방식
일반적으로 vmstat [지연시간(초)] [횟수] 형식으로 실행하여 지정된 간격으로 시스템 상태를 지속적으로 관찰하는 데 사용된다. 인수 없이 실행 시 부팅 이후 누적 평균 통계를 출력한다.
구현체 차이
리눅스(procps-ng 패키지), BSD 계열, Solaris 등 운영 체제별로 출력 형식의 세부 항목(예: inact/active 표시 여부, 슬랩 메모리 정보 등)과 지원 옵션(-a 활성/비활성 메모리, -s 누적 통계 요약, -d 디스크 통계, -p 파티션 통계 등)에 차이가 있을 수 있다.
용도 시스템 관리자와 개발자가 메모리 부족에 따른 스왑 발생 여부, CPU 병목 현상, I/O 대기 상태, 과도한 문맥 교환 등 시스템 성능 저하의 원인을 진단하는 1차 도구로 널리 활용된다.