vmstat 명령어

리눅스 성능 진단의 맥박, vmstat 명령어 마스터하기

서버가 갑자기 느려졌을 때, 단순하게 메모리 용량만 확인하는 것으로는 부족합니다. "CPU가 계산하느라 바쁜가? 아니면 디스크에서 데이터를 읽어오느라 대기 중인가?" 이 질문에 답을 주는 명령어가 바로 vmstat입니다.

vmstat는 프로세스, 메모리, 페이징, 차단된 I/O, CPU 활동 등에 대한 요약 정보를 보고합니다. 시스템의 병목 구간(Bottleneck)을 찾아내고 전체적인 밸런스를 점검하는 데 최적화된 도구입니다.


1. vmstat 실행 방법과 주기적 모니터링

가장 기본은 vmstat [간격] [횟수] 형식으로 사용하는 것입니다. 일시적인 수치보다는 지속적인 변화 추이를 관찰하는 것이 장애 대응의 핵심입니다.

$ vmstat 2 5
// 2초 간격으로 5번 정보를 갱신하여 출력합니다.

2. vmstat 출력 항목의 핵심 의미

명령어를 입력하면 나타나는 여러 열(Column) 중에서 우리가 특히 주의 깊게 봐야 할 핵심 데이터를 정리했습니다.

[표] vmstat 주요 항목별 상태 진단 가이드
섹션 항목 설명 및 위험 신호
Procs (프로세스) r (run) 실행 대기 중인 프로세스 수. CPU 코어 수보다 높으면 CPU 병목 의심.
b (block) I/O 대기로 인해 중단된 프로세스 수. 디스크 속도 문제를 시사함.
Swap (스왑) si / so 스왑 인/아웃 속도. 이 수치가 0보다 크면 메모리가 매우 부족한 상태.
※ si(Swap-in): 디스크 → 메모리 / so(Swap-out): 메모리 → 디스크
CPU (중앙처리장치) id (idle) CPU가 쉬고 있는 비율. 0에 가까울수록 CPU 부하가 한계치임.
wa (wait) I/O 응답을 기다리는 비율. 높은 wa값은 디스크 성능 문제를 의미.

3. 시스템 장애 판단을 위한 3단계 체크리스트

단순히 명령어를 치는 것을 넘어, 전문가처럼 LSI 키워드(성능 분석, 병목 현상, 리소스 최적화)를 바탕으로 데이터를 해석해 보세요.

  • 단계 1 (CPU 부하): r 항목이 지속적으로 높고 id가 낮다면 CPU 처리 능력을 초과한 것입니다.
  • 단계 2 (메모리 스왑): si 혹은 so 수치가 지속적으로 발생한다면, RAM 부족으로 인해 느린 디스크를 메모리처럼 쓰느라 시스템이 느려진 상태(Thrashing)입니다.
  • 단계 3 (I/O 병목): b 수치가 높고 wa가 10% 이상 유지된다면 디스크 입출력 성능을 점검하거나 SSD 도입을 고려해야 합니다.

결론: vmstat은 서버의 종합 검진 결과표입니다

free가 메모리라는 특정 부위의 정밀 검사라면, vmstat는 전체적인 신체 컨디션을 보여주는 종합 검진표와 같습니다. 평소 정상적인 상태의 수치를 기록(Baselines)해 두면, 문제가 생겼을 때 어떤 지표가 비정상인지 즉각 파악할 수 있습니다.

🚀 실무 적용 팁

서버 부하가 의심될 때 vmstat 1 10 명령을 실행해 보세요. 1초 간격의 10개 데이터를 통해 시스템이 현재 '계산'에 집중하고 있는지, '기다림(I/O)'에 지쳤는지 명확히 알 수 있습니다.

리눅스 서버 관리에 대해 더 궁금한 점이 있으신가요?
댓글로 질문을 남겨주시면 15년 차 전문가의 노하우를 공유해 드립니다!

댓글 쓰기

다음 이전