--- title: vmstat — 시스템 부하 요약 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: CPU·메모리·스왑·I/O 상태를 주기적으로 요약해 보여주는 도구. 병목 판별에 유용. tags: 프로그램, 장애 진단 및 복구, vmstat --- **💬 "vmstat 명령어"** vmstat는 **CPU·메모리·I/O를 한 줄로 요약**합니다. 병목이 어디인지 빠르게 판별합니다. 두 번째 줄부터가 실제 측정값이며 간격을 지정해 연속 관찰합니다. - **r / b**: 실행 대기 / 블록 대기 프로세스 수입니다. - **si / so**: 스왑 인/아웃입니다. 0이 아니면 메모리 압박입니다. - **bi / bo**: 블록 입출력입니다. 디스크 병목 지표입니다. - **wa**: I/O 대기 CPU 비율입니다. 높으면 디스크 병목입니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | <간격> <횟수> | 예: vmstat 1 5 (1초 간격 5회) | | -s | 메모리 관련 통계 요약 | | -d | 디스크별 통계 | | -w | 넓은 출력 형식 | ## 필수 명령어 조합 3가지 - `vmstat 1 5` — 1초 간격 5회 시스템 요약 - `vmstat -s | head` — 메모리 통계 요약 - `vmstat -d | head -5` — 디스크별 I/O 통계 **💬 "실제 운영 중인 서버에서 흔히 쓰는 패턴 하나만 짚어줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 요약 관찰 몇 초간 측정해 추세를 봅니다. ``` vmstat 1 5 ``` ### 2단계 · 병목 판별 si/so가 크면 메모리, wa가 크면 디스크입니다. ``` vmstat 1 5 | awk '{print $1,$2,$7,$8,$16}' ``` ### 3단계 · 원인 확인 해당 자원을 쓰는 프로세스를 봅니다. ``` ps -eo pid,%cpu,rss,comm --sort=-rss | head ``` ## 실무에서는 이렇게 씁니다 ### 1. I/O 병목 판별 **상황** — 서버가 느린데 CPU는 한가합니다. ``` vmstat 1 5 ``` **결과** — wa(대기)가 높고 bi/bo가 크면 디스크 병목입니다. **포인트** — iostat로 어느 디스크인지 좁히고, 어떤 프로세스인지 확인합니다. ### 2. 스왑 사용 감지 **상황** — 메모리가 부족한지 확인합니다. ``` vmstat 1 5 | awk 'NR>2{print $7,$8}' ``` **결과** — si/so가 0이 아니면 실제 스왑 사용 중입니다. **포인트** — 스왑이 크게 돌면 성능이 급격히 떨어집니다. ## 주의할 점 - 첫 줄은 부팅 이후 평균이라 측정값으로 쓰지 않습니다. - 간격 없는 단일 실행은 스냅샷이라 추세를 놓칩니다. - 컨테이너에서는 호스트 전체 값이 보일 수 있습니다. ## 실제 실행 화면 1초 간격으로 CPU·메모리·I/O 상태를 관찰한 결과입니다. ![vmstat 명령어 실행 결과: 시스템 부하 요약](https://games.cursorai.co.kr/assets/vmstat-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/troubleshooting/vmstat.html